In [1]:
import sys
sys.path.append("../src/")
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
import os
from analysis import LayerStats
In [2]:
# set parameters for matplotlib
%matplotlib inline
matplotlib.rcParams["figure.figsize"] = (12, 8)
script = "/home/nakamura/network_dissection/NetDissect/research/model_comparison_iou_1213.ipynb"
In [3]:
# define models
alex = {}
alex["name"] = "alexnet_imagenet"
alex["directory"] = "../dissection/alexnet_imagenet_full_conv_384/"
alex["blobs"] = ["conv1", "conv2", "conv3", "conv4", "conv5", "fc6-conv", "fc7-conv", "fc8-conv"]
vgg_material = {}
vgg_material["name"] = "vgg_material"
vgg_material["directory"] = "../dissection/vgg_material_full_conv/"
vgg_material["blobs"] = ["conv1_2", "conv2_2","conv3_3", "conv4_3", "conv5_3", "fc6-conv", "fc7-conv", "fc8-conv"]
sentibank = {}
sentibank["name"] = "sentibank"
sentibank["directory"] = "../dissection/caffe_sentibank_full_conv/"
sentibank["blobs"] = ["conv1", "conv2","conv3", "conv4", "conv5", "fc6-conv", "fc7-conv", "fc8-conv"]
vgg_face = {}
vgg_face["name"] = "vgg_face"
vgg_face["directory"] = "../dissection/VGG_FACE_full_conv/"
vgg_face["blobs"] = ["conv1_2", "conv2_2","conv3_3", "conv4_3", "conv5_3", "fc6-conv", "fc7-conv", "fc8-conv"]
models = [alex, vgg_material, sentibank, vgg_face]
In [5]:
# test purpose
alex = {}
alex["name"] = "alexnet_imagenet"
alex["directory"] = "../dissection/alexnet_imagenet_full_conv_384/"
alex["blobs"] = [ "conv2", "conv3", "conv4", "conv5", "fc6-conv", "fc7-conv", "fc8-conv"]
vgg_material = {}
vgg_material["name"] = "vgg_material"
vgg_material["directory"] = "../dissection/vgg_material_full_conv/"
vgg_material["blobs"] = ["conv2_2","conv3_3", "conv4_3", "conv5_3", "fc6-conv", "fc7-conv", "fc8-conv"]
sentibank = {}
sentibank["name"] = "sentibank"
sentibank["directory"] = "../dissection/caffe_sentibank_full_conv/"
sentibank["blobs"] = ["conv2","conv3", "conv4", "conv5", "fc6-conv", "fc7-conv", "fc8-conv"]
vgg_face = {}
vgg_face["name"] = "vgg_face"
vgg_face["directory"] = "../dissection/VGG_FACE_full_conv/"
vgg_face["blobs"] = [ "conv2_2","conv3_3", "conv4_3", "conv5_3", "fc6-conv", "fc7-conv", "fc8-conv"]
models = [alex, vgg_material, sentibank, vgg_face]
In [4]:
def plot_average(models, category):
iou_values = {}
for model in models:
iou_values[model["name"]] = []
for blob in model["blobs"]:
blob_stats = LayerStats(model["directory"], blob)
iou_values[model["name"]].append(blob_stats.unit_average_stats()[category])
fig, ax = plt.subplots()
for model in models:
ax.plot(iou_values[model["name"]], label=model["name"])
ax.legend(loc = "upper left")
ax.set_xticklabels(alex["blobs"])
ax.set_title("Average IOU {}".format(category))
ax.set_ylabel("Average Interpretability of a layer")
return iou_values, ax
In [5]:
category = "object"
_, ax = plot_average(models, category)
ax.text(0.1, 0.04, script)
plt.savefig(os.path.join("figures/average_iou/", "average_iou_{}_1215.pdf".format(category)))
In [6]:
category = "scene"
_, ax = plot_average(models, category)
ax.text(0.1, 0.04, script)
plt.savefig(os.path.join("figures/average_iou/", "average_iou_{}_1215.pdf".format(category)))
In [7]:
category = "material"
_, ax = plot_average(models, category)
ax.text(0.1, 0.014, script)
plt.savefig(os.path.join("figures/average_iou/", "average_iou_{}_1215.pdf".format(category)))
In [8]:
category = "color"
_, ax = plot_average(models, category)
ax.text(1, 0.02, script)
plt.savefig(os.path.join("figures/average_iou/", "average_iou_{}_1215.pdf".format(category)))
In [9]:
category = "part"
_, ax = plot_average(models, category)
ax.text(1.5, 0.032, script)
plt.savefig(os.path.join("figures/average_iou/", "average_iou_{}_1215.pdf".format(category)))
In [10]:
category = "texture"
_, ax = plot_average(models, category)
ax.text(1.5, 0.005, script)
plt.savefig(os.path.join("figures/average_iou/", "average_iou_{}_1215.pdf".format(category)))