diff --git "a/DeepGaze/.ipynb_checkpoints/dg2e_wardle-checkpoint.ipynb" "b/DeepGaze/.ipynb_checkpoints/dg2e_wardle-checkpoint.ipynb" new file mode 100644--- /dev/null +++ "b/DeepGaze/.ipynb_checkpoints/dg2e_wardle-checkpoint.ipynb" @@ -0,0 +1,3053 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "2683899d", + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "from scipy.misc import face\n", + "from scipy.ndimage import zoom\n", + "from scipy.special import logsumexp\n", + "import torch\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "a9c8a9e7", + "metadata": {}, + "outputs": [], + "source": [ + "import scipy.io" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "32bd8589", + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "import cv2\n", + "import os\n", + "\n", + "def load_images_from_folder(folder):\n", + " images = []\n", + " img_name = []\n", + " for filename in os.listdir(folder):\n", + " img = cv2.imread(os.path.join(folder,filename))\n", + " if img is not None:\n", + " images.append(img)\n", + " img_name.append(filename)\n", + " return images, img_name" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "c5ebf6a1", + "metadata": {}, + "outputs": [], + "source": [ + "imgs, img_name = load_images_from_folder('stimuli')" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "571c8db2", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "['67.jpg',\n", + " '1587.jpg',\n", + " '1458.jpg',\n", + " '91.jpg',\n", + " '1397.jpg',\n", + " '121.jpg',\n", + " '1324.jpg',\n", + " '1153.jpg',\n", + " '1597.jpg',\n", + " '1143.jpg',\n", + " '1039.jpg',\n", + " '1400.jpg',\n", + " '1209.jpg',\n", + " '75.jpg',\n", + " '1480.jpg',\n", + " '1093.jpg',\n", + " '1267.jpg',\n", + " '1227.jpg',\n", + " '2.jpg',\n", + " '1109.jpg',\n", + " '1558.jpg',\n", + " '1385.jpg',\n", + " '22.jpg',\n", + " '56.jpg',\n", + " '1118.jpg',\n", + " '1078.jpg',\n", + " '1532.jpg',\n", + " '1416.jpg',\n", + " '79.jpg',\n", + " '1485.jpg',\n", + " '1471.jpg',\n", + " '95.jpg',\n", + " '20.jpg',\n", + " '1042.jpg',\n", + " '1262.jpg',\n", + " '1288.jpg',\n", + " '15.jpg',\n", + " '128.jpg',\n", + " '72.jpg',\n", + " '117.jpg',\n", + " '1413.jpg',\n", + " '1266.jpg',\n", + " '1234.jpg',\n", + " '125.jpg',\n", + " '1293.jpg',\n", + " '147.jpg',\n", + " '1557.jpg',\n", + " '11.jpg',\n", + " '1645.jpg',\n", + " '1239.jpg',\n", + " '1394.jpg',\n", + " '151.jpg',\n", + " '010.jpg',\n", + " '1559.jpg',\n", + " '36.jpg',\n", + " '1065.jpg',\n", + " '1337.jpg',\n", + " '1294.jpg',\n", + " '17.jpg',\n", + " '143.jpg',\n", + " '1022.jpg',\n", + " '1016.jpg',\n", + " '60.jpg',\n", + " '98.jpg',\n", + " '1448.jpg',\n", + " '1224.jpg',\n", + " '139.jpg',\n", + " '1149.jpg',\n", + " '1455.jpg',\n", + " '76.jpg',\n", + " '1654.jpg',\n", + " '1438.jpg',\n", + " '152.jpg',\n", + " '1329.jpg',\n", + " '1249.jpg',\n", + " '1383.jpg',\n", + " '1642.jpg',\n", + " '102.jpg',\n", + " '27.jpg',\n", + " '1363.jpg',\n", + " '1108.jpg',\n", + " '28.jpg',\n", + " '1387.jpg',\n", + " '1538.jpg',\n", + " '1388.jpg',\n", + " '138.jpg',\n", + " '66.jpg',\n", + " '1079.jpg',\n", + " '1043.jpg',\n", + " '1317.jpg',\n", + " '44.jpg',\n", + " '1040.jpg',\n", + " '103.jpg',\n", + " '1644.jpg',\n", + " '1120.jpg',\n", + " '1125.jpg',\n", + " '1392.jpg',\n", + " '111.jpg',\n", + " '82.jpg',\n", + " '85.jpg',\n", + " '1627.jpg',\n", + " '106.jpg',\n", + " '57.jpg',\n", + " '1568.jpg',\n", + " '1029.jpg',\n", + " '1351.jpg',\n", + " '1087.jpg',\n", + " '83.jpg',\n", + " '146.jpg',\n", + " '1465.jpg',\n", + " '1561.jpg',\n", + " '1505.jpg',\n", + " '1183.jpg',\n", + " '48.jpg',\n", + " '1275.jpg',\n", + " '1541.jpg',\n", + " '1565.jpg',\n", + " '1682.jpg',\n", + " '123.jpg',\n", + " '1647.jpg',\n", + " '1523.jpg',\n", + " '64.jpg',\n", + " '1426.jpg',\n", + " '1321.jpg',\n", + " '1624.jpg',\n", + " '1126.jpg',\n", + " '38.jpg',\n", + " '1513.jpg',\n", + " '141.jpg',\n", + " '1304.jpg',\n", + " '1367.jpg',\n", + " '1618.jpg',\n", + " '1669.jpg',\n", + " '81.jpg',\n", + " '25.jpg',\n", + " '1500.jpg',\n", + " '1219.jpg',\n", + " '1699.jpg',\n", + " '149.jpg',\n", + " '1487.jpg',\n", + " '1638.jpg',\n", + " '1442.jpg',\n", + " '150.jpg',\n", + " '148.jpg',\n", + " '1382.jpg',\n", + " '42.jpg',\n", + " '1553.jpg',\n", + " '014.jpg',\n", + " '1474.jpg',\n", + " '97.jpg',\n", + " '140.jpg',\n", + " '1195.jpg',\n", + " '1245.jpg',\n", + " '1610.jpg',\n", + " '58.jpg',\n", + " '127.jpg',\n", + " '1516.jpg',\n", + " '1353.jpg',\n", + " '1184.jpg',\n", + " '1358.jpg',\n", + " '1160.jpg',\n", + " '1015.jpg',\n", + " '1449.jpg',\n", + " '132.jpg',\n", + " '1612.jpg',\n", + " '1.jpg',\n", + " '1303.jpg',\n", + " '1095.jpg',\n", + " '1658.jpg',\n", + " '008.jpg',\n", + " '005.jpg',\n", + " '157.jpg',\n", + " '1574.jpg',\n", + " '1144.jpg',\n", + " '112.jpg',\n", + " '003.jpg',\n", + " '1343.jpg',\n", + " '55.jpg',\n", + " '154.jpg',\n", + " '1178.jpg',\n", + " '1673.jpg',\n", + " '96.jpg',\n", + " '1365.jpg',\n", + " '1117.jpg',\n", + " '24.jpg',\n", + " '1077.jpg',\n", + " '1316.jpg',\n", + " '1492.jpg',\n", + " '1520.jpg',\n", + " '1556.jpg',\n", + " '1410.jpg',\n", + " '159.jpg',\n", + " '1210.jpg',\n", + " '002.jpg',\n", + " '1548.jpg',\n", + " '118.jpg',\n", + " '1423.jpg',\n", + " '1113.jpg',\n", + " '1428.jpg',\n", + " '1472.jpg',\n", + " '87.jpg',\n", + " '21.jpg',\n", + " '001.jpg',\n", + " '1062.jpg',\n", + " '1096.jpg',\n", + " '1460.jpg',\n", + " '1314.jpg',\n", + " '1554.jpg',\n", + " '1498.jpg',\n", + " '1049.jpg',\n", + " '1206.jpg',\n", + " '119.jpg',\n", + " '3.jpg',\n", + " '1372.jpg',\n", + " '74.jpg',\n", + " '007.jpg',\n", + " '30.jpg',\n", + " '1163.jpg',\n", + " '1281.jpg',\n", + " '1522.jpg',\n", + " '1001.jpg',\n", + " '011.jpg',\n", + " '108.jpg',\n", + " '131.jpg',\n", + " '68.jpg',\n", + " '1215.jpg',\n", + " '1527.jpg',\n", + " '122.jpg',\n", + " '1698.jpg',\n", + " '1690.jpg',\n", + " '1083.jpg',\n", + " '1092.jpg',\n", + " '006.jpg',\n", + " '113.jpg',\n", + " '80.jpg',\n", + " '1347.jpg',\n", + " '1499.jpg',\n", + " '1018.jpg',\n", + " '89.jpg',\n", + " '004.jpg',\n", + " '78.jpg',\n", + " '1443.jpg',\n", + " '1094.jpg',\n", + " '1131.jpg',\n", + " '1476.jpg',\n", + " '1483.jpg',\n", + " '013.jpg',\n", + " '1517.jpg',\n", + " '1586.jpg',\n", + " '1346.jpg',\n", + " '1535.jpg',\n", + " '1254.jpg',\n", + " '9.jpg',\n", + " '009.jpg',\n", + " '156.jpg',\n", + " '1190.jpg',\n", + " '1306.jpg',\n", + " '1067.jpg',\n", + " '49.jpg',\n", + " '115.jpg',\n", + " '1151.jpg',\n", + " '120.jpg',\n", + " '1192.jpg',\n", + " '39.jpg',\n", + " '84.jpg',\n", + " '1510.jpg',\n", + " '69.jpg',\n", + " '1360.jpg',\n", + " '1290.jpg',\n", + " '1433.jpg',\n", + " '1570.jpg',\n", + " '1489.jpg',\n", + " '1352.jpg',\n", + " '153.jpg',\n", + " '133.jpg',\n", + " '1469.jpg',\n", + " '144.jpg',\n", + " '110.jpg',\n", + " '145.jpg',\n", + " '7.jpg',\n", + " '1182.jpg',\n", + " '35.jpg',\n", + " '1369.jpg',\n", + " '1504.jpg',\n", + " '70.jpg',\n", + " '116.jpg',\n", + " '1488.jpg',\n", + " '126.jpg',\n", + " '1240.jpg',\n", + " '1651.jpg',\n", + " '012.jpg',\n", + " '1186.jpg',\n", + " '1393.jpg',\n", + " '109.jpg',\n", + " '137.jpg',\n", + " '1105.jpg',\n", + " '1297.jpg',\n", + " '1238.jpg',\n", + " '50.jpg',\n", + " '1589.jpg']" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "img_name" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "cd911d2d", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "e99e7121", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "300" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(img_name)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6e65c80b", + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [ + "int(img_name[0].split('.')[0])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "303e82af", + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [ + "scipy.io.loadmat('S02_fix/S02_face_1.mat')['currImData'][:,4]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f5b41345", + "metadata": {}, + "outputs": [], + "source": [ + "scipy.io.loadmat('S02_fix/S02_face_1.mat')['currImData'][:,5]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e60e197d", + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "scipy.io.loadmat('S02_fix/S02_pareidolia_64.mat')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a071e2e4", + "metadata": {}, + "outputs": [], + "source": [ + "for filename in os.listdir('S02_fix'):\n", + " print(filename)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0dc9ab34", + "metadata": {}, + "outputs": [], + "source": [ + "def load_fix_from_folder(folder):\n", + " fix_X = []\n", + " fix_Y = []\n", + " img_name = []\n", + " for filename in os.listdir(folder):\n", + " fix_X.append(scipy.io.loadmat(os.path.join(folder,filename))['currImData'][:,4])\n", + " fix_Y.append(scipy.io.loadmat(os.path.join(folder,filename))['currImData'][:,5])\n", + " img_name.append(str(scipy.io.loadmat(os.path.join(folder,filename))['currImName'][0][0]) + '.jpg')\n", + " #print(filename)\n", + " #print(img_name)\n", + " return fix_X, fix_Y, img_name" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5ad3e153", + "metadata": {}, + "outputs": [], + "source": [ + "fix_X, fix_Y, img_name = load_fix_from_folder('S_fix/S13_fix')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "43fc95a0", + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "import glob\n", + "import os\n", + "\n", + "# Specify the directory containing the nested folder structure\n", + "root_dir = '/home/pranjul/DeepGaze/fix_stimuli/'\n", + "\n", + "# Specify the image file extensions you want to load\n", + "extensions = ['*.jpg', '*.jpeg', '*.png']\n", + "\n", + "# Create a list to store the image file paths\n", + "image_paths = []\n", + "\n", + "# Traverse through all subdirectories and search for image files\n", + "for extension in extensions:\n", + " search_pattern = os.path.join(root_dir, '**', extension)\n", + " image_paths.extend(glob.glob(search_pattern, recursive=True))\n", + "\n", + "# Print the paths of the loaded image files\n", + "for image_path in image_paths:\n", + " print(image_path)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "864cb318", + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "\n", + "def create_folder(folder_path):\n", + " try:\n", + " os.mkdir(folder_path)\n", + " print(f\"Folder '{folder_path}' created successfully.\")\n", + " except FileExistsError:\n", + " print(f\"Folder '{folder_path}' already exists.\")\n", + " except Exception as e:\n", + " print(f\"An error occurred: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "47b06581", + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "\n", + "def folder_exists(folder_path):\n", + " return os.path.exists(folder_path) and os.path.isdir(folder_path)\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1d22fce3", + "metadata": {}, + "outputs": [], + "source": [ + "# Replace 'path/to/your/folder' with the folder path you want to check\n", + "folder_path = 'S_fix/S18_fix'\n", + "if folder_exists(folder_path):\n", + " print(f\"Folder '{folder_path}' exists.\")\n", + "else:\n", + " print(f\"Folder '{folder_path}' does not exist.\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "031c09c0", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "30f2ed42", + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "for f in range(13, 56):\n", + " print(f)\n", + " print('S_fix/S'+ str(f) +'_fix')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d5f1efd1", + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "from scipy.misc import face\n", + "from scipy.ndimage import zoom\n", + "from scipy.special import logsumexp\n", + "import torch\n", + "\n", + "import deepgaze_pytorch\n", + "\n", + "DEVICE = 'cuda'\n", + "\n", + "# you can use DeepGazeI or DeepGazeIIE\n", + "model = deepgaze_pytorch.DeepGazeIII(pretrained=True).to(DEVICE)\n", + "\n", + "#image = face()\n", + "\n", + "x = {}\n", + "for q in range(1, 10):\n", + " \n", + " # Replace 'path/to/your/folder' with the folder path you want to check\n", + " folder_path = 'S_fix/S0'+ str(q) +'_fix'\n", + " if folder_exists(folder_path):\n", + " \n", + " fix_X, fix_Y, img_name = load_fix_from_folder('S_fix/S0'+ str(q) +'_fix')\n", + "\n", + " # Replace 'path/to/your/folder' with the desired folder path\n", + " folder_path = 'DG3_heatmaps/S0'+ str(q) +'_fix'\n", + " create_folder(folder_path)\n", + "\n", + "\n", + " for i in range(len(img_name)):\n", + "\n", + " image = cv2.imread('/home/pranjul/DeepGaze/fix_stimuli/' + img_name[i])\n", + "\n", + " if image is not None and len(fix_X[i]) > 3 and len(fix_Y[i] > 3):\n", + "\n", + " # location of previous scanpath fixations in x and y (pixel coordinates), starting with the initial fixation on the image.\n", + " #fixation_history_x = np.array([1024//2, 300, 500, 200, 200, 700])\n", + " #fixation_history_y = np.array([768//2, 300, 100, 300, 100, 500])\n", + "\n", + " #print(img_name[i])\n", + "\n", + " fixation_history_x = fix_X[i]/3\n", + " #print(fixation_history_x)\n", + " fixation_history_y = fix_Y[i]/3\n", + "\n", + " # load precomputed centerbias log density (from MIT1003) over a 1024x1024 image\n", + " # you can download the centerbias from https://github.com/matthias-k/DeepGaze/releases/download/v1.0.0/centerbias_mit1003.npy\n", + " # alternatively, you can use a uniform centerbias via `centerbias_template = np.zeros((1024, 1024))`.\n", + " centerbias_template = np.load('centerbias_mit1003.npy')\n", + " \n", + " # rescale to match image size\n", + " centerbias = zoom(centerbias_template, (image.shape[0]/centerbias_template.shape[0], image.shape[1]/centerbias_template.shape[1]), order=0, mode='nearest')\n", + " # renormalize log density\n", + " centerbias -= logsumexp(centerbias)\n", + "\n", + " image_tensor = torch.tensor([image.transpose(2, 0, 1)]).to(DEVICE)\n", + " centerbias_tensor = torch.tensor([centerbias]).to(DEVICE)\n", + " x_hist_tensor = torch.tensor([fixation_history_x[model.included_fixations]]).to(DEVICE)\n", + " y_hist_tensor = torch.tensor([fixation_history_y[model.included_fixations]]).to(DEVICE)\n", + "\n", + " log_density_prediction = model(image_tensor, centerbias_tensor, x_hist_tensor, y_hist_tensor)\n", + "\n", + " # Scale factor\n", + " #scale_factor = 3\n", + "\n", + " # Calculate the new width and height\n", + " #new_width = image.shape[1] * scale_factor\n", + " #new_height = image.shape[0] * scale_factor\n", + "\n", + " # Resize the image using cv2.resize()\n", + " #image = cv2.resize(image, (new_width, new_height))\n", + "\n", + " image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)\n", + "\n", + "\n", + " f, axs = plt.subplots(nrows=1, ncols=2, figsize=(16, 9))\n", + " axs[0].imshow(image)\n", + " #axs[0].plot(fixation_history_x, fixation_history_y, 'o-', color='red')\n", + " #axs[0].scatter(fixation_history_x[-1], fixation_history_y[-1], 100, color='yellow', zorder=100)\n", + " axs[0].set_axis_off()\n", + " axs[1].matshow(log_density_prediction.detach().cpu().numpy()[0, 0]) # first image in batch, first (and only) channel\n", + " #axs[1].plot(fixation_history_x, fixation_history_y, 'o-', color='red')\n", + " #axs[1].scatter(fixation_history_x[-1], fixation_history_y[-1], 100, color='yellow', zorder=100)\n", + " axs[1].set_axis_off()\n", + " plt.savefig(os.path.join('DG3_heatmaps/S0'+ str(q) +'_fix', img_name[i]))\n", + " plt.close()\n", + " #break\n", + " #break\n", + " #break" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "bb2809f0", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4a041477", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a0baeecb", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "70e54f03", + "metadata": {}, + "outputs": [], + "source": [ + "len(fixation_history_y)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "16ec0624", + "metadata": {}, + "outputs": [], + "source": [ + "i" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "964e517a", + "metadata": {}, + "outputs": [], + "source": [ + "S02_img_name[244]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "67397109", + "metadata": {}, + "outputs": [], + "source": [ + "np.where(np.array(S02_img_name) == '44.jpg')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "02cd8a6b", + "metadata": {}, + "outputs": [], + "source": [ + "indices = np.where(arr == 2)[0]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a64314eb", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "09b449d7", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f2e3afae", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f8433595", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "11bb0a30", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "852d1d54", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "45392af9", + "metadata": {}, + "outputs": [], + "source": [ + "img.shape" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "93a09086", + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "from scipy.misc import face\n", + "from scipy.ndimage import zoom\n", + "from scipy.special import logsumexp\n", + "import torch\n", + "import matplotlib.pyplot as plt\n", + "\n", + "import deepgaze_pytorch\n", + "\n", + "DEVICE = 'cuda'\n", + "\n", + "# you can use DeepGazeI or DeepGazeIIE\n", + "model = deepgaze_pytorch.DeepGazeI(pretrained=True).to(DEVICE)\n", + "\n", + "# image = face()\n", + "\n", + "x = {}\n", + "\n", + "for i in range(len(image_paths)):\n", + " print(i)\n", + " \n", + " image = cv2.imread(image_paths[i])\n", + " \n", + " # load precomputed centerbias log density (from MIT1003) over a 1024x1024 image\n", + " # you can download the centerbias from https://github.com/matthias-k/DeepGaze/releases/download/v1.0.0/centerbias_mit1003.npy\n", + " # alternatively, you can use a uniform centerbias via `centerbias_template = np.zeros((1024, 1024))`.\n", + " centerbias_template = np.load('centerbias_mit1003.npy')\n", + " # rescale to match image size\n", + " centerbias = zoom(centerbias_template, (image.shape[0]/centerbias_template.shape[0], image.shape[1]/centerbias_template.shape[1]), order=0, mode='nearest')\n", + " # renormalize log density\n", + " centerbias -= logsumexp(centerbias)\n", + "\n", + " image_tensor = torch.tensor([image.transpose(2, 0, 1)]).to(DEVICE)\n", + " centerbias_tensor = torch.tensor([centerbias]).to(DEVICE)\n", + "\n", + " log_density_prediction = model(image_tensor, centerbias_tensor)\n", + " \n", + " #a = log_density_prediction.detach().cpu().numpy()[0, 0]\n", + " \n", + " #x[img_name[i].split('.')[0]] = a\n", + " \n", + " \n", + " f, axs = plt.subplots(nrows=1, ncols=2, figsize=(16, 9))\n", + " axs[0].imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))\n", + " # axs[0].plot(fixation_history_x, fixation_history_y, 'o-', color='red')\n", + " # axs[0].scatter(fixation_history_x[-1], fixation_history_y[-1], 100, color='yellow', zorder=100)\n", + " axs[0].set_axis_off()\n", + " axs[1].matshow(log_density_prediction.detach().cpu().numpy()[0, 0]) # first image in batch, first (and only) channel\n", + " # axs[1].plot(fixation_history_x, fixation_history_y, 'o-', color='red')\n", + " # axs[1].scatter(fixation_history_x[-1], fixation_history_y[-1], 100, color='yellow', zorder=100)\n", + " axs[1].set_axis_off()\n", + " plt.savefig(os.path.join('DG2_modified_imgs_heatmaps', '{0}.jpg'.format(i)))\n", + " \n", + " \n", + " #break" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3e4e709a", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2bd1220a", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "60141a51", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "d2f42e76", + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Loaded pretrained weights for efficientnet-b5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Using cache found in /home/pranjul/.cache/torch/hub/pytorch_vision_v0.6.0\n", + "Using cache found in /home/pranjul/.cache/torch/hub/pytorch_vision_v0.6.0\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "from scipy.misc import face\n", + "from scipy.ndimage import zoom\n", + "from scipy.special import logsumexp\n", + "import torch\n", + "import matplotlib.pyplot as plt\n", + "\n", + "import deepgaze_pytorch\n", + "\n", + "DEVICE = 'cuda'\n", + "\n", + "# you can use DeepGazeI or DeepGazeIIE\n", + "model = deepgaze_pytorch.DeepGazeIIE(pretrained=True).to(DEVICE)\n", + "\n", + "# image = face()\n", + "\n", + "x = {}\n", + "\n", + "for i in range(len(imgs)):\n", + " \n", + " image = imgs[i]\n", + " \n", + " # load precomputed centerbias log density (from MIT1003) over a 1024x1024 image\n", + " # you can download the centerbias from https://github.com/matthias-k/DeepGaze/releases/download/v1.0.0/centerbias_mit1003.npy\n", + " # alternatively, you can use a uniform centerbias via `centerbias_template = np.zeros((1024, 1024))`.\n", + " centerbias_template = np.load('centerbias_mit1003.npy')\n", + " # centerbias_template = np.zeros((1024, 1024))\n", + " # rescale to match image size\n", + " centerbias = zoom(centerbias_template, (image.shape[0]/centerbias_template.shape[0], image.shape[1]/centerbias_template.shape[1]), order=0, mode='nearest')\n", + " # renormalize log density\n", + " centerbias -= logsumexp(centerbias)\n", + "\n", + " image_tensor = torch.tensor([image.transpose(2, 0, 1)]).to(DEVICE)\n", + " centerbias_tensor = torch.tensor([centerbias]).to(DEVICE)\n", + "\n", + " log_density_prediction = model(image_tensor, centerbias_tensor)\n", + " \n", + " a = log_density_prediction.detach().cpu().numpy()[0,0]\n", + " \n", + " x[img_name[i].split('.')[0]] = a\n", + " \n", + " '''\n", + " f, axs = plt.subplots(nrows=1, ncols=2, figsize=(16, 9))\n", + " axs[0].imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))\n", + " # axs[0].plot(fixation_history_x, fixation_history_y, 'o-', color='red')\n", + " # axs[0].scatter(fixation_history_x[-1], fixation_history_y[-1], 100, color='yellow', zorder=100)\n", + " axs[0].set_axis_off()\n", + " axs[1].matshow(log_density_prediction.detach().cpu().numpy()[0, 0]) # first image in batch, first (and only) channel\n", + " # axs[1].plot(fixation_history_x, fixation_history_y, 'o-', color='red')\n", + " # axs[1].scatter(fixation_history_x[-1], fixation_history_y[-1], 100, color='yellow', zorder=100)\n", + " axs[1].set_axis_off()\n", + " # plt.savefig(os.path.join('DG2_heatmaps', '{0}.jpg'.format(i)))\n", + " '''\n", + " \n", + " #break" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f5db452d", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "83bf9be6", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "26527272", + "metadata": {}, + "outputs": [], + "source": [ + "import glob\n", + "from scipy.io import loadmat\n", + "from scipy.stats import pearsonr, spearmanr\n", + "from sklearn.preprocessing import MinMaxScaler\n", + "\n", + "scaler = MinMaxScaler()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "3938f5cb", + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "y_faces = {}\n", + "\n", + "for filename in glob.glob('/home/pranjul/DeepGaze/heatmaps/faces/*.mat'): #assuming gif\n", + " \n", + " fn=loadmat(filename)\n", + " y_faces[filename.split('/')[-1].split('.')[0]] = fn\n", + " #break" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "c5902106", + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "y_objects = {}\n", + "\n", + "for filename in glob.glob('/home/pranjul/DeepGaze/heatmaps/objects/*.mat'): #assuming gif\n", + " \n", + " fn=loadmat(filename)\n", + " y_objects[filename.split('/')[-1].split('.')[0]] = fn\n", + " #break" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "e6fa7c47", + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "y_pareidolia = {}\n", + "\n", + "for filename in glob.glob('/home/pranjul/DeepGaze/heatmaps/pareidolia/*.mat'): #assuming gif\n", + " \n", + " fn=loadmat(filename)\n", + " y_pareidolia[filename.split('/')[-1].split('.')[0]] = fn\n", + " #break" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "90d31035", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[0.3 , 0.3 , 0.3 , ..., 0.3 , 0.3 ,\n", + " 0.3 ],\n", + " [0.3 , 0.3 , 0.3 , ..., 0.3 , 0.3 ,\n", + " 0.3 ],\n", + " [0.3 , 0.3 , 0.3 , ..., 0.3 , 0.3 ,\n", + " 0.3 ],\n", + " ...,\n", + " [0.30001553, 0.30001627, 0.30001702, ..., 0.30000823, 0.30000715,\n", + " 0.3000062 ],\n", + " [0.3 , 0.3 , 0.3 , ..., 0.30000761, 0.30000661,\n", + " 0.30000573],\n", + " [0.3 , 0.3 , 0.3 , ..., 0.30000702, 0.3000061 ,\n", + " 0.30000529]])" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "y_pareidolia['2']['a']" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "c416a753", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.imshow(y_pareidolia['2']['a'])\n", + "plt.axis('off')\n", + "plt.tight_layout()\n", + "plt.savefig('HG_mars_face.png', dpi=600)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f0a6bda6", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "a2166932", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1587\n", + "1397\n", + "1597\n", + "1039\n", + "1480\n", + "1267\n", + "1227\n", + "1558\n", + "1385\n", + "1078\n", + "1532\n", + "1485\n", + "1042\n", + "1413\n", + "1394\n", + "1294\n", + "1022\n", + "1448\n", + "1224\n", + "1455\n", + "1438\n", + "1329\n", + "1249\n", + "1108\n", + "1538\n", + "1388\n", + "1125\n", + "1392\n", + "1627\n", + "1568\n", + "1351\n", + "1465\n", + "1561\n", + "1505\n", + "1183\n", + "1565\n", + "1682\n", + "1647\n", + "1321\n", + "1126\n", + "1513\n", + "1304\n", + "1367\n", + "1618\n", + "1669\n", + "1500\n", + "1219\n", + "1442\n", + "1382\n", + "1553\n", + "1474\n", + "1195\n", + "1610\n", + "1184\n", + "1358\n", + "1160\n", + "1303\n", + "1095\n", + "1574\n", + "1343\n", + "1178\n", + "1365\n", + "1117\n", + "1077\n", + "1113\n", + "1472\n", + "1096\n", + "1460\n", + "1498\n", + "1206\n", + "1372\n", + "1163\n", + "1522\n", + "1215\n", + "1527\n", + "1698\n", + "1083\n", + "1018\n", + "1443\n", + "1094\n", + "1131\n", + "1483\n", + "1517\n", + "1586\n", + "1346\n", + "1535\n", + "1254\n", + "1190\n", + "1510\n", + "1360\n", + "1290\n", + "1433\n", + "1570\n", + "1352\n", + "1182\n", + "1504\n", + "1240\n", + "1186\n", + "1297\n", + "1238\n" + ] + } + ], + "source": [ + "dg_faces = []\n", + "eg_faces = []\n", + "ke = []\n", + "correlation_coef_faces = []\n", + "\n", + "for k in x:\n", + " if k in y_faces:\n", + " print(k)\n", + " ke.append(k)\n", + " #print(np.shape(x[k]))\n", + " #print(y_faces[k])\n", + " #dg_faces.append(scaler.fit_transform(np.array(x[k])).flatten())\n", + " #eg_faces.append(scaler.fit_transform(np.array(y_faces[k]['a'])).flatten())\n", + " correlation_coef_faces.append(spearmanr(np.array(x[k]).flatten(),\n", + " np.array(y_faces[k]['a']).flatten())[0])\n", + " #correlation_coef = spearmanr(np.array(dg_faces).flatten(), np.array(eg_faces).flatten())\n", + "\n", + " #break\n", + "\n", + "#spearmanr(scaler.fit_transform(cv2.resize(x['1397'], (800, 600))).flatten(), scaler.fit_transform(y_faces['1397']['a']).flatten())[0]\n", + "\n", + " \n", + "# correlation_coef, p_value = spearmanr(np.array(dg_faces).flatten(), np.array(eg_faces).flatten())\n", + "# correlation_coef = np.corrcoef(np.array(dg_faces).flatten(), np.array(eg_faces).flatten())\n", + "# print(\"Correlation coefficient:\", correlation_coef)\n", + "# print(\"p-value:\", p_value)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "c0881d58", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[0.8112208445652198,\n", + " 0.9033720274854865,\n", + " 0.7915104256360697,\n", + " 0.631516654090288,\n", + " 0.7485546324485031,\n", + " 0.7323607799896934,\n", + " 0.8147625280353542,\n", + " 0.8730451612340968,\n", + " 0.874180607919581,\n", + " 0.7337450129693538,\n", + " 0.8949918031224612,\n", + " 0.6816650643228453,\n", + " 0.7978026216811264,\n", + " 0.8176599765630511,\n", + " 0.7338680783468714,\n", + " 0.6843404696068556,\n", + " 0.8729359302795376,\n", + " 0.830581513689021,\n", + " 0.840833876404041,\n", + " 0.8292155547266965,\n", + " 0.7602834900729325,\n", + " 0.7767962924023897,\n", + " 0.8305405743944886,\n", + " 0.7825755900756525,\n", + " 0.849587323888969,\n", + " 0.8049407270050498,\n", + " 0.7981924585474149,\n", + " 0.8931174554389648,\n", + " 0.7790370170807085,\n", + " 0.8321606127026091,\n", + " 0.8794318603875376,\n", + " 0.8237007238863023,\n", + " 0.8583350384771676,\n", + " 0.8696983656564591,\n", + " 0.8277326775456092,\n", + " 0.840695101915493,\n", + " 0.753400542559853,\n", + " 0.7975835878438325,\n", + " 0.8034705997014925,\n", + " 0.8381421184437553,\n", + " 0.87966785835006,\n", + " 0.7835479063851398,\n", + " 0.6934147726912756,\n", + " 0.8631635426208972,\n", + " 0.9108274697716726,\n", + " 0.8267338946886212,\n", + " 0.8349742536231988,\n", + " 0.7702549591558276,\n", + " 0.6767844775715782,\n", + " 0.8197743155178784,\n", + " 0.8753239365428244,\n", + " 0.9105715984029369,\n", + " 0.8271681084454842,\n", + " 0.8258749318249017,\n", + " 0.8570230574589862,\n", + " 0.8185752970407922,\n", + " 0.8476445172096009,\n", + " 0.8718335597915291,\n", + " 0.836918557979872,\n", + " 0.8132756646979419,\n", + " 0.8188604506105123,\n", + " 0.837389970356994,\n", + " 0.8222364891119711,\n", + " 0.6507377926148562,\n", + " 0.7908705628459494,\n", + " 0.8400211823555398,\n", + " 0.8668770212773393,\n", + " 0.9033893128774216,\n", + " 0.8852363629888087,\n", + " 0.8445663010077236,\n", + " 0.8826777375422126,\n", + " 0.785226126851745,\n", + " 0.8108532879852376,\n", + " 0.7954777397349942,\n", + " 0.8760847930998521,\n", + " 0.785590476365957,\n", + " 0.8100624545702185,\n", + " 0.7493722665447413,\n", + " 0.844306288440913,\n", + " 0.8612946350673168,\n", + " 0.8693596861927061,\n", + " 0.8897983416955898,\n", + " 0.8110354697539466,\n", + " 0.8555943137276846,\n", + " 0.8851445930312263,\n", + " 0.861276538540026,\n", + " 0.8543819010260786,\n", + " 0.8636579752419271,\n", + " 0.8572366494112261,\n", + " 0.8500328040601144,\n", + " 0.8461201637302154,\n", + " 0.8109990317469,\n", + " 0.8356334262979176,\n", + " 0.6301083608308903,\n", + " 0.8283195829646794,\n", + " 0.8040246969355087,\n", + " 0.8296172990443328,\n", + " 0.7772984261374493,\n", + " 0.8057676489043086,\n", + " 0.8502578499077955]" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "correlation_coef_faces" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "723cc7fe", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.8191773441234467" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.mean(correlation_coef_faces)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "52e9c3ac", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.05881880201869564" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.std(correlation_coef_faces)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "c187f3a1", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot(correlation_coef_faces, 'o')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3ae14f24", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5e8ad2bb", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "70a4ecfb", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "100" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(correlation_coef_faces)" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "77266844", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1458\n", + "1324\n", + "1153\n", + "1143\n", + "1400\n", + "1209\n", + "1093\n", + "1109\n", + "1118\n", + "1416\n", + "1471\n", + "1262\n", + "1288\n", + "1266\n", + "1234\n", + "1293\n", + "1557\n", + "1645\n", + "1239\n", + "1559\n", + "1065\n", + "1337\n", + "1016\n", + "1149\n", + "1654\n", + "1383\n", + "1642\n", + "1363\n", + "1387\n", + "1079\n", + "1043\n", + "1317\n", + "1040\n", + "1644\n", + "1120\n", + "1029\n", + "1087\n", + "1275\n", + "1541\n", + "1523\n", + "1426\n", + "1624\n", + "1699\n", + "1487\n", + "1638\n", + "1245\n", + "1516\n", + "1353\n", + "1015\n", + "1449\n", + "1612\n", + "1658\n", + "1144\n", + "1673\n", + "1316\n", + "1492\n", + "1520\n", + "1556\n", + "1410\n", + "1210\n", + "1548\n", + "1423\n", + "1428\n", + "1062\n", + "1314\n", + "1554\n", + "1049\n", + "1281\n", + "1001\n", + "1690\n", + "1092\n", + "1347\n", + "1499\n", + "1476\n", + "1306\n", + "1067\n", + "1151\n", + "1192\n", + "1489\n", + "1469\n", + "1369\n", + "1488\n", + "1651\n", + "1393\n", + "1105\n", + "1589\n" + ] + } + ], + "source": [ + "dg_objects = []\n", + "eg_objects = []\n", + "ke = []\n", + "correlation_coef_objects = []\n", + "\n", + "for k in x:\n", + " if k in y_objects:\n", + " print(k)\n", + " ke.append(k)\n", + " #print(np.shape(x[k]))\n", + " #print(y_faces[k])\n", + " #dg_objects.append(np.array(x[k]).flatten())\n", + " #eg_objects.append(np.array(y_objects[k]['a']).flatten())\n", + " correlation_coef_objects.append(spearmanr(np.array(x[k]).flatten(), np.array(y_objects[k]['a']).flatten())[0])\n", + "\n", + " #break\n", + "\n", + "#correlation_coef, p_value = spearmanr(np.array(dg_objects).flatten(), np.array(eg_objects).flatten())\n", + "# correlation_coef = np.corrcoef(a, b)\n", + "# print(\"Correlation coefficient:\", correlation_coef)\n", + "# print(\"p-value:\", p_value)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d5f30f29", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "df8da20e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.8379907968755683" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.mean(correlation_coef_objects)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "f4c9834d", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "0.047560336169958785" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.std(correlation_coef_objects)" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "9465aa0e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot(correlation_coef_objects, 'o')" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "beb428b2", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[0.8512068370184351,\n", + " 0.8661824566114178,\n", + " 0.8938122887154786,\n", + " 0.8091539933327021,\n", + " 0.7316043481813179,\n", + " 0.8565899831684279,\n", + " 0.8340003308121456,\n", + " 0.8774152842994909,\n", + " 0.8888041323017506,\n", + " 0.8228486448585555,\n", + " 0.9048870764248425,\n", + " 0.8229134242851558,\n", + " 0.8822058590032188,\n", + " 0.9101348640089005,\n", + " 0.8552722873100365,\n", + " 0.8328812128681402,\n", + " 0.8827297199222639,\n", + " 0.8990337610679023,\n", + " 0.8805297374664719,\n", + " 0.824488503648989,\n", + " 0.7626924606561755,\n", + " 0.7901098732333437,\n", + " 0.8504496183138477,\n", + " 0.8405860161435179,\n", + " 0.8192786757367786,\n", + " 0.8615635657262675,\n", + " 0.8363871460606824,\n", + " 0.8339711881634598,\n", + " 0.8468466832795554,\n", + " 0.855541832655932,\n", + " 0.8368435935023005,\n", + " 0.7586505172939987,\n", + " 0.8623702815652567,\n", + " 0.8368010574350156,\n", + " 0.8277196375099752,\n", + " 0.8232075676050925,\n", + " 0.770583248541205,\n", + " 0.7000324537811116,\n", + " 0.8535726392587408,\n", + " 0.8046350869452421,\n", + " 0.8969615847121017,\n", + " 0.8377930310680537,\n", + " 0.8772429581922169,\n", + " 0.8754239110975454,\n", + " 0.8361554358284538,\n", + " 0.8656680096429795,\n", + " 0.8342192398727469,\n", + " 0.8544474897794854,\n", + " 0.6759003039205167,\n", + " 0.7613303962801622,\n", + " 0.8677537388893164,\n", + " 0.8408448058668344,\n", + " 0.872495983585036,\n", + " 0.8323926896776886,\n", + " 0.8159281389076508,\n", + " 0.8143532379589054,\n", + " 0.8616608594929113,\n", + " 0.8466106056247314,\n", + " 0.8713419163724941,\n", + " 0.8666221499730971,\n", + " 0.8561059358113322,\n", + " 0.7819026914491053,\n", + " 0.9048117511593079,\n", + " 0.6610449660733856,\n", + " 0.8595144635214277,\n", + " 0.8292590175394522,\n", + " 0.8313289425584851,\n", + " 0.8448298765415949,\n", + " 0.8154964146780797,\n", + " 0.8764047306478631,\n", + " 0.7842585365364414,\n", + " 0.82914629943859,\n", + " 0.8254618217286478,\n", + " 0.8815859493226424,\n", + " 0.8828704125086795,\n", + " 0.7627304398254986,\n", + " 0.8530050091765704,\n", + " 0.8377553799570813,\n", + " 0.7871530924751139,\n", + " 0.9035922933216156,\n", + " 0.8376057271107493,\n", + " 0.8468163229947975,\n", + " 0.8964573905564719,\n", + " 0.8524694176727033,\n", + " 0.848930154736204,\n", + " 0.8729871185009487]" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "correlation_coef_objects" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "802ebc6d", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "86" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(correlation_coef_objects)" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "0403de67", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "67\n", + "91\n", + "121\n", + "75\n", + "2\n", + "22\n", + "56\n", + "79\n", + "95\n", + "20\n", + "15\n", + "128\n", + "72\n", + "117\n", + "125\n", + "147\n", + "11\n", + "151\n", + "36\n", + "17\n", + "143\n", + "60\n", + "98\n", + "139\n", + "76\n", + "152\n", + "102\n", + "27\n", + "28\n", + "138\n", + "66\n", + "44\n", + "103\n", + "111\n", + "82\n", + "85\n", + "106\n", + "57\n", + "83\n", + "146\n", + "48\n", + "123\n", + "64\n", + "38\n", + "141\n", + "81\n", + "25\n", + "149\n", + "150\n", + "148\n", + "42\n", + "97\n", + "140\n", + "58\n", + "127\n", + "132\n", + "1\n", + "157\n", + "112\n", + "55\n", + "154\n", + "96\n", + "24\n", + "159\n", + "118\n", + "87\n", + "21\n", + "119\n", + "3\n", + "74\n", + "30\n", + "1001\n", + "108\n", + "131\n", + "68\n", + "122\n", + "113\n", + "80\n", + "89\n", + "78\n", + "9\n", + "156\n", + "49\n", + "115\n", + "120\n", + "39\n", + "84\n", + "69\n", + "153\n", + "133\n", + "144\n", + "110\n", + "145\n", + "7\n", + "35\n", + "70\n", + "116\n", + "126\n", + "109\n", + "137\n", + "50\n" + ] + } + ], + "source": [ + "dg_pareidolia = []\n", + "eg_pareidolia = []\n", + "ke = []\n", + "correlation_coef_pareidolia = []\n", + "\n", + "for k in x:\n", + " if k in y_pareidolia:\n", + " print(k)\n", + " ke.append(k)\n", + " # print(np.shape(x[k]))\n", + " # print(y_faces[k])\n", + " # dg_pareidolia.append(scaler.fit_transform(np.array(x[k])).flatten())\n", + " # eg_pareidolia.append(scaler.fit_transform(np.array(y_pareidolia[k]['a'])).flatten())\n", + " correlation_coef_pareidolia.append(spearmanr(np.array(x[k]).flatten(), \n", + " np.array(y_pareidolia[k]['a']).flatten())[0])\n", + " \n", + " #break\n", + "\n", + "# correlation_coef, p_value = spearmanr(np.array(dg_pareidolia).flatten(), np.array(eg_pareidolia).flatten())\n", + "# correlation_coef = np.corrcoef(a, b)\n", + "# print(\"Correlation coefficient:\", correlation_coef)\n", + "# print(\"p-value:\", p_value)" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "14e6d358", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.7950015205892489" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.mean(correlation_coef_pareidolia)" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "30812b76", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.06948973742287501" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.std(correlation_coef_pareidolia)" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "ab74cd89", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot(correlation_coef_pareidolia, 'o')" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "c4980b11", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "101" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(correlation_coef_pareidolia)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "10f01cdd", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "98aa156c", + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Data saved to data.csv\n" + ] + } + ], + "source": [ + "import pandas as pd\n", + "\n", + "# Sample data with different lengths\n", + "#correlation_coef_faces = [0.5, 0.6, 0.7]\n", + "#correlation_coef_objects = [0.3, 0.4]\n", + "#correlation_coef_pareidolia = [0.2, 0.3, 0.1, 0.4]\n", + "\n", + "# Create a DataFrame with a common index\n", + "index = range(max(len(correlation_coef_faces), len(correlation_coef_objects), len(correlation_coef_pareidolia)))\n", + "\n", + "data = {\n", + " 'sr_f': correlation_coef_faces + [None] * (len(index) - len(correlation_coef_faces)),\n", + " 'sr_o': correlation_coef_objects + [None] * (len(index) - len(correlation_coef_objects)),\n", + " 'sr_p': correlation_coef_pareidolia + [None] * (len(index) - len(correlation_coef_pareidolia))\n", + "}\n", + "\n", + "df = pd.DataFrame(data, index=index)\n", + "\n", + "# Specify the file name\n", + "csv_file = 'data.csv'\n", + "\n", + "# Save DataFrame to CSV file\n", + "df.to_csv(csv_file)\n", + "\n", + "print(f'Data saved to {csv_file}')\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "37692ab8", + "metadata": {}, + "outputs": [], + "source": [ + "import csv\n", + "\n", + "# Sample data\n", + "data = [\n", + " ['Name', 'Age', 'City'],\n", + " ['Alice', 28, 'New York'],\n", + " ['Bob', 35, 'Los Angeles'],\n", + " ['Charlie', 22, 'Chicago']\n", + "]\n", + "\n", + "# Specify the file name\n", + "csv_file = 'data.csv'\n", + "\n", + "# Write data to CSV file\n", + "with open(csv_file, mode='w', newline='') as file:\n", + " writer = csv.writer(file)\n", + " writer.writerows(data)\n", + "\n", + "print(f'Data saved to {csv_file}')\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f8816fcc", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1d73414c", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0e53bda0", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7fe39537", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6a51040d", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "89a93508", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "c297d11a", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Correlation coefficient: 0.6571147833275727\n", + "p-value: 0.0\n" + ] + } + ], + "source": [ + "correlation_coef, p_value = spearmanr(np.array(dg_faces).flatten(), np.array(eg_faces).flatten())\n", + "# correlation_coef = np.corrcoef(a, b)\n", + "print(\"Correlation coefficient:\", correlation_coef)\n", + "print(\"p-value:\", p_value)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "85e5edb2", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Correlation coefficient: 0.6898973951513174\n", + "p-value: 0.0\n" + ] + } + ], + "source": [ + "correlation_coef, p_value = spearmanr(np.array(dg_objects).flatten(), np.array(eg_objects).flatten())\n", + "# correlation_coef = np.corrcoef(a, b)\n", + "print(\"Correlation coefficient:\", correlation_coef)\n", + "print(\"p-value:\", p_value)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "d99c7309", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Correlation coefficient: 0.6220261768607909\n", + "p-value: 0.0\n" + ] + } + ], + "source": [ + "correlation_coef, p_value = spearmanr(np.array(dg_pareidolia).flatten(), np.array(eg_pareidolia).flatten())\n", + "# correlation_coef = np.corrcoef(a, b)\n", + "print(\"Correlation coefficient:\", correlation_coef)\n", + "print(\"p-value:\", p_value)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e9702314", + "metadata": {}, + "outputs": [], + "source": [ + "len(dg_pareidolia)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c319f00b", + "metadata": {}, + "outputs": [], + "source": [ + "len(dg_faces[:83])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1fa45e93", + "metadata": {}, + "outputs": [], + "source": [ + "len(dg_objects[:83])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5e9fd2b6", + "metadata": {}, + "outputs": [], + "source": [ + "correlation_coef, p_value = spearmanr(np.array(dg_faces[:83]).flatten(), np.array(dg_objects[:83]).flatten())\n", + "# correlation_coef = np.corrcoef(a, b)\n", + "print(\"Correlation coefficient:\", correlation_coef)\n", + "print(\"p-value:\", p_value)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a9357f4f", + "metadata": {}, + "outputs": [], + "source": [ + "correlation_coef, p_value = spearmanr(np.array(dg_faces[:83]).flatten(), np.array(dg_pareidolia[:83]).flatten())\n", + "# correlation_coef = np.corrcoef(a, b)\n", + "print(\"Correlation coefficient:\", correlation_coef)\n", + "print(\"p-value:\", p_value)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f70021f3", + "metadata": {}, + "outputs": [], + "source": [ + "correlation_coef, p_value = spearmanr(np.array(dg_pareidolia[:83]).flatten(), np.array(dg_objects[:83]).flatten())\n", + "# correlation_coef = np.corrcoef(a, b)\n", + "print(\"Correlation coefficient:\", correlation_coef)\n", + "print(\"p-value:\", p_value)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0df004a4", + "metadata": {}, + "outputs": [], + "source": [ + "correlation_coef, p_value = spearmanr(np.array(eg_pareidolia[:83]).flatten(), np.array(eg_objects[:83]).flatten())\n", + "# correlation_coef = np.corrcoef(a, b)\n", + "print(\"Correlation coefficient:\", correlation_coef)\n", + "print(\"p-value:\", p_value)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1742ecb1", + "metadata": {}, + "outputs": [], + "source": [ + "correlation_coef, p_value = spearmanr(np.array(eg_pareidolia[:83]).flatten(), np.array(eg_faces[:83]).flatten())\n", + "# correlation_coef = np.corrcoef(a, b)\n", + "print(\"Correlation coefficient:\", correlation_coef)\n", + "print(\"p-value:\", p_value)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0a02bf88", + "metadata": {}, + "outputs": [], + "source": [ + "correlation_coef, p_value = spearmanr(np.array(eg_faces[:83]).flatten(), np.array(eg_objects[:83]).flatten())\n", + "# correlation_coef = np.corrcoef(a, b)\n", + "print(\"Correlation coefficient:\", correlation_coef)\n", + "print(\"p-value:\", p_value)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b7ccd13e", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "fdeb2fc5", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7faa17c1", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f9af3d41", + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "from scipy.stats import spearmanr\n", + "\n", + "# Generate two arrays with random data\n", + "array1 = np.random.rand(100)\n", + "array2 = np.random.rand(100)\n", + "\n", + "# Calculate Spearman's correlation coefficient and p-value\n", + "correlation, p_value = spearmanr(array1, array2)\n", + "\n", + "print(\"Spearman's correlation coefficient:\", correlation)\n", + "print(\"p-value:\", p_value)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f7cd0d61", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3570f454", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3a0a92be", + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "from scipy.stats import pearsonr\n", + "\n", + "# define two eye gaze heatmaps\n", + "heatmap1 = np.array([[0.2, 0.3, 0.1],\n", + " [0.1, 0.4, 0.3],\n", + " [0.3, 0.2, 0.1]])\n", + "\n", + "heatmap2 = np.array([[0.1, 0.2, 0.3],\n", + " [0.2, 0.3, 0.2],\n", + " [0.3, 0.1, 0.1]])\n", + "\n", + "# flatten the heatmaps into 1D arrays\n", + "flat_heatmap1 = heatmap1.flatten()\n", + "flat_heatmap2 = heatmap2.flatten()\n", + "\n", + "# calculate the Pearson correlation coefficient and p-value\n", + "corr, p_value = pearsonr(flat_heatmap1, flat_heatmap2)\n", + "\n", + "print(\"Correlation coefficient:\", corr)\n", + "print(\"p-value:\", p_value)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "98a8e3c1", + "metadata": {}, + "outputs": [], + "source": [ + "np.shape(b)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "55b352bd", + "metadata": {}, + "outputs": [], + "source": [ + "np.shape(a)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3fe648aa", + "metadata": {}, + "outputs": [], + "source": [ + "np.shape(correlation_coef)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "cd8e091b", + "metadata": {}, + "outputs": [], + "source": [ + "plt.imshow(correlation_coef)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "884bf73a", + "metadata": {}, + "outputs": [], + "source": [ + "correlation_coef[83:, :83]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4a540fa9", + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "plt.imshow(correlation_coef[83:, :83])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "62cadea8", + "metadata": {}, + "outputs": [], + "source": [ + "plt.plot(np.diagonal(correlation_coef[100:, :100]), 'o') #faces" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f05bd895", + "metadata": {}, + "outputs": [], + "source": [ + "np.mean(np.diagonal(correlation_coef[100:, :100]))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6e227007", + "metadata": {}, + "outputs": [], + "source": [ + "plt.plot(np.diagonal(correlation_coef[100:, :100]), 'o') #obj" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "12ed25e7", + "metadata": {}, + "outputs": [], + "source": [ + "np.mean(np.diagonal(correlation_coef[86:, :86]))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ccf0a569", + "metadata": {}, + "outputs": [], + "source": [ + "plt.plot(np.diagonal(correlation_coef[83:, :83]), 'o') #pare" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "923ed911", + "metadata": {}, + "outputs": [], + "source": [ + "np.mean(np.diagonal(correlation_coef[83:, :83]))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "27bac165", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f751bc29", + "metadata": {}, + "outputs": [], + "source": [ + "plt.imshow(y_objects['1153']['a'])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0c6a4bb4", + "metadata": {}, + "outputs": [], + "source": [ + "y_faces" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "40a93053", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4a9b5849", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "76eee42b", + "metadata": {}, + "outputs": [], + "source": [ + "np.shape(imgs)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1cc44e0e", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1d14b8ad", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "feddeb52", + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "from scipy.misc import face\n", + "from scipy.ndimage import zoom\n", + "from scipy.special import logsumexp\n", + "import torch\n", + "\n", + "import deepgaze_pytorch\n", + "\n", + "DEVICE = 'cuda'\n", + "\n", + "# you can use DeepGazeI or DeepGazeIIE\n", + "model = deepgaze_pytorch.DeepGazeIII(pretrained=True).to(DEVICE)\n", + "\n", + "image = face()\n", + "\n", + "# location of previous scanpath fixations in x and y (pixel coordinates), starting with the initial fixation on the image.\n", + "fixation_history_x = np.array([1024//2, 300, 500, 200, 200, 700])\n", + "fixation_history_y = np.array([768//2, 300, 100, 300, 100, 500])\n", + "\n", + "# load precomputed centerbias log density (from MIT1003) over a 1024x1024 image\n", + "# you can download the centerbias from https://github.com/matthias-k/DeepGaze/releases/download/v1.0.0/centerbias_mit1003.npy\n", + "# alternatively, you can use a uniform centerbias via `centerbias_template = np.zeros((1024, 1024))`.\n", + "centerbias_template = np.load('centerbias_mit1003.npy')\n", + "# rescale to match image size\n", + "centerbias = zoom(centerbias_template, (image.shape[0]/centerbias_template.shape[0], image.shape[1]/centerbias_template.shape[1]), order=0, mode='nearest')\n", + "# renormalize log density\n", + "centerbias -= logsumexp(centerbias)\n", + "\n", + "image_tensor = torch.tensor([image.transpose(2, 0, 1)]).to(DEVICE)\n", + "centerbias_tensor = torch.tensor([centerbias]).to(DEVICE)\n", + "x_hist_tensor = torch.tensor([fixation_history_x[model.included_fixations]]).to(DEVICE)\n", + "y_hist_tensor = torch.tensor([fixation_history_x[model.included_fixations]]).to(DEVICE)\n", + "\n", + "log_density_prediction = model(image_tensor, centerbias_tensor, x_hist_tensor, y_hist_tensor)\n", + "\n", + "f, axs = plt.subplots(nrows=1, ncols=2, figsize=(8, 3))\n", + "axs[0].imshow(image)\n", + "axs[0].plot(fixation_history_x, fixation_history_y, 'o-', color='red')\n", + "axs[0].scatter(fixation_history_x[-1], fixation_history_y[-1], 100, color='yellow', zorder=100)\n", + "axs[0].set_axis_off()\n", + "axs[1].matshow(log_density_prediction.detach().cpu().numpy()[0, 0]) # first image in batch, first (and only) channel\n", + "axs[1].plot(fixation_history_x, fixation_history_y, 'o-', color='red')\n", + "axs[1].scatter(fixation_history_x[-1], fixation_history_y[-1], 100, color='yellow', zorder=100)\n", + "axs[1].set_axis_off()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2b512963", + "metadata": {}, + "outputs": [], + "source": [ + "model.included_fixations" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "33d6872d", + "metadata": {}, + "outputs": [], + "source": [ + "fixation_history_x" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8bce1d25", + "metadata": {}, + "outputs": [], + "source": [ + "fixation_history_x[model.included_fixations]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "751cb04e", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b3160caa", + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "from scipy.misc import face\n", + "from scipy.ndimage import zoom\n", + "from scipy.special import logsumexp\n", + "import torch\n", + "\n", + "import deepgaze_pytorch\n", + "\n", + "DEVICE = 'cuda'\n", + "\n", + "# you can use DeepGazeI or DeepGazeIIE\n", + "model = deepgaze_pytorch.DeepGazeIII(pretrained=True).to(DEVICE)\n", + "\n", + "#image = face()\n", + "\n", + "x = {}\n", + "\n", + "for i in range(len(imgs)):\n", + " \n", + " image = imgs[i]\n", + " \n", + " # location of previous scanpath fixations in x and y (pixel coordinates), starting with the initial fixation on the image.\n", + " fixation_history_x = np.array([1024//2, 300, 500, 200, 200, 700])\n", + " fixation_history_y = np.array([768//2, 300, 100, 300, 100, 500])\n", + "\n", + " # load precomputed centerbias log density (from MIT1003) over a 1024x1024 image\n", + " # you can download the centerbias from https://github.com/matthias-k/DeepGaze/releases/download/v1.0.0/centerbias_mit1003.npy\n", + " # alternatively, you can use a uniform centerbias via `centerbias_template = np.zeros((1024, 1024))`.\n", + " centerbias_template = np.load('centerbias_mit1003.npy')\n", + " # rescale to match image size\n", + " centerbias = zoom(centerbias_template, (image.shape[0]/centerbias_template.shape[0], image.shape[1]/centerbias_template.shape[1]), order=0, mode='nearest')\n", + " # renormalize log density\n", + " centerbias -= logsumexp(centerbias)\n", + "\n", + " image_tensor = torch.tensor([image.transpose(2, 0, 1)]).to(DEVICE)\n", + " centerbias_tensor = torch.tensor([centerbias]).to(DEVICE)\n", + " x_hist_tensor = torch.tensor([fixation_history_x[model.included_fixations]]).to(DEVICE)\n", + " y_hist_tensor = torch.tensor([fixation_history_x[model.included_fixations]]).to(DEVICE)\n", + "\n", + " log_density_prediction = model(image_tensor, centerbias_tensor, x_hist_tensor, y_hist_tensor)\n", + "\n", + " f, axs = plt.subplots(nrows=1, ncols=2, figsize=(8, 3))\n", + " axs[0].imshow(image)\n", + " axs[0].plot(fixation_history_x, fixation_history_y, 'o-', color='red')\n", + " axs[0].scatter(fixation_history_x[-1], fixation_history_y[-1], 100, color='yellow', zorder=100)\n", + " axs[0].set_axis_off()\n", + " axs[1].matshow(log_density_prediction.detach().cpu().numpy()[0, 0]) # first image in batch, first (and only) channel\n", + " axs[1].plot(fixation_history_x, fixation_history_y, 'o-', color='red')\n", + " axs[1].scatter(fixation_history_x[-1], fixation_history_y[-1], 100, color='yellow', zorder=100)\n", + " axs[1].set_axis_off()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "aa2d7d4e", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "274b461a", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f71d7915", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6c4adce6", + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "from scipy.misc import face\n", + "from scipy.ndimage import zoom\n", + "from scipy.special import logsumexp\n", + "import torch\n", + "import matplotlib.pyplot as plt\n", + "\n", + "import deepgaze_pytorch\n", + "\n", + "DEVICE = 'cuda'\n", + "\n", + "# you can use DeepGazeI or DeepGazeIIE\n", + "model = deepgaze_pytorch.DeepGazeIIE(pretrained=True).to(DEVICE)\n", + "\n", + "# image = face()\n", + "\n", + "x = {}\n", + "\n", + "for i in range(len(imgs)):\n", + " \n", + " image = imgs[i]\n", + " \n", + " # load precomputed centerbias log density (from MIT1003) over a 1024x1024 image\n", + " # you can download the centerbias from https://github.com/matthias-k/DeepGaze/releases/download/v1.0.0/centerbias_mit1003.npy\n", + " # alternatively, you can use a uniform centerbias via `centerbias_template = np.zeros((1024, 1024))`.\n", + " centerbias_template = np.load('centerbias_mit1003.npy')\n", + " # rescale to match image size\n", + " centerbias = zoom(centerbias_template, (image.shape[0]/centerbias_template.shape[0], image.shape[1]/centerbias_template.shape[1]), order=0, mode='nearest')\n", + " # renormalize log density\n", + " centerbias -= logsumexp(centerbias)\n", + "\n", + " image_tensor = torch.tensor([image.transpose(2, 0, 1)]).to(DEVICE)\n", + " centerbias_tensor = torch.tensor([centerbias]).to(DEVICE)\n", + "\n", + " log_density_prediction = model(image_tensor, centerbias_tensor)\n", + " \n", + " a = log_density_prediction.detach().cpu().numpy()[0, 0]\n", + " \n", + " x[img_name[i].split('.')[0]] = a\n", + " \n", + " '''\n", + " f, axs = plt.subplots(nrows=1, ncols=2, figsize=(16, 9))\n", + " axs[0].imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))\n", + " # axs[0].plot(fixation_history_x, fixation_history_y, 'o-', color='red')\n", + " # axs[0].scatter(fixation_history_x[-1], fixation_history_y[-1], 100, color='yellow', zorder=100)\n", + " axs[0].set_axis_off()\n", + " axs[1].matshow(log_density_prediction.detach().cpu().numpy()[0, 0]) # first image in batch, first (and only) channel\n", + " # axs[1].plot(fixation_history_x, fixation_history_y, 'o-', color='red')\n", + " # axs[1].scatter(fixation_history_x[-1], fixation_history_y[-1], 100, color='yellow', zorder=100)\n", + " axs[1].set_axis_off()\n", + " # plt.savefig(os.path.join('DG2_heatmaps', '{0}.jpg'.format(i)))\n", + " '''\n", + " \n", + " #break" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "id": "eca95def", + "metadata": {}, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'image' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "Input \u001b[0;32mIn [33]\u001b[0m, in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43mimage\u001b[49m\n", + "\u001b[0;31mNameError\u001b[0m: name 'image' is not defined" + ] + } + ], + "source": [ + "image" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "d69ce384", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Using cache found in /home/pranjul/.cache/torch/hub/pytorch_vision_v0.6.0\n" + ] + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "from scipy.misc import face\n", + "from scipy.ndimage import zoom\n", + "from scipy.special import logsumexp\n", + "import torch\n", + "\n", + "import deepgaze_pytorch\n", + "\n", + "DEVICE = 'cuda'\n", + "\n", + "# you can use DeepGazeI or DeepGazeIIE\n", + "model = deepgaze_pytorch.DeepGazeI(pretrained=True).to(DEVICE)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c8207585", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 31, + "id": "b9d406ff", + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "%%capture captured_output\n", + "# Your code here\n", + "print(model)" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "id": "984c0e9c", + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "with open(\"DG1_arch.txt\", \"w\") as f:\n", + " f.write(captured_output.stdout)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6d170109", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}