Neural network 如何使用caffe模型提取memnet热图?

Neural network 如何使用caffe模型提取memnet热图?,neural-network,computer-vision,deep-learning,heatmap,caffe,Neural Network,Computer Vision,Deep Learning,Heatmap,Caffe,我想通过使用Khosla等人在 查看prototxt模型,我可以理解最终的内积输出应该是可记忆性分数,但是如何获得给定输入图像的可记忆性映射?一些例子 提前感谢他们在论文[1]中所描述的,CNN(MemNet)输出一个单一的实值输出,用于记忆性。因此,他们建立的网络,在给定一张输入图像(而不是热图)的情况下,计算出这个单一的记忆分数 在论文的第5节中,他们描述了如何使用经过训练的CNN预测可记忆性热图: 为了生成可记忆性映射,我们只需放大图像并将MemNet应用于图像的重叠区域。我们对图像的多个

我想通过使用Khosla等人在 查看prototxt模型,我可以理解最终的内积输出应该是可记忆性分数,但是如何获得给定输入图像的可记忆性映射?一些例子


提前感谢他们在论文[1]中所描述的,CNN(MemNet)输出一个单一的实值输出,用于记忆性。因此,他们建立的网络,在给定一张输入图像(而不是热图)的情况下,计算出这个单一的记忆分数

在论文的第5节中,他们描述了如何使用经过训练的CNN预测可记忆性热图:

为了生成可记忆性映射,我们只需放大图像并将MemNet应用于图像的重叠区域。我们对图像的多个比例执行此操作,并平均生成的可记忆性贴图

我们考虑以下两个重要步骤:

问题1:让CNN在任何输入大小下工作。 为了使CNN能够处理任意大小的图像,他们使用了[2]中介绍的方法。 虽然卷积层可以应用于任意大小的图像,从而产生更小或更大的输出,但内积层具有固定的输入和输出大小。 要使内积层在任何输入大小下工作,您可以像卷积内核一样应用它。对于具有4096个输出的FC层,将其解释为具有4096个特征映射的1x1卷积

要在Caffe中做到这一点,您可以直接按照以下步骤操作。创建一个新的
.prototxt
文件,在其中用
卷积
层替换
内部产品
层。现在,Caffe将不再识别
.caffemodel
中的权重,因为图层类型不再匹配。因此,将旧网络及其参数加载到Python中,加载新网络,并将旧参数分配给新网络,并将其保存为新的
.caffemodel
文件

现在,我们可以通过网络运行任何尺寸(大于或等于227x227)的图像

问题2:生成热图 正如文献[1]中所解释的,将问题1中的完全卷积网络应用于不同尺度下的相同图像。MemNet是一个经过重新训练的AlexNet,因此默认输入维度为227x227。他们提到451x451输入提供8x8输出,这意味着应用层的步幅为28。因此,一个简单的例子可以是:

  • 比例1:227x227→ 1x1。(我想他们肯定用这个秤。)
  • 比例尺2:283x283→ 2x2。(胡乱猜测)
  • 比例3:339x339→ 4x4。(胡乱猜测)
  • 比例4:451x451→ 8x8。(本文中提到了该比例。)
结果如下所示:

所以,您只需对这些输出进行平均,即可获得最终的8x8热图。从上图中,应该可以清楚地看到如何平均不同的比例输出:您必须将低分辨率输出的采样增加到8x8,然后进行平均

从这篇论文中,我假设他们使用非常高的分辨率,所以他们的热图将与最初的图像大小相同。他们写道,在“正常”的GPU上需要1s。这是一段相当长的时间,这也表明他们可能将输入图像的采样提升到相当高的维度

参考文献: [1] :A.Khosla、A.S.Raju、A.Torralba和A.Oliva,“大规模理解和预测图像可记忆性”,摘自:ICCV,2015年

[2] :J.Long,E.Shelhamer和T.Darrell,“语义分段的完全卷积网络”,发表于:CVPR,2015年

他们在论文中描述了如何获得热图,请参见第5节。因此,我应该向CNN提供图像补丁,获取fc激活并转换它们以获得相应的热图补丁?根据公式,获得227x227热图的图像尺寸应为7226x7226。我用caffenet完成了第1点和第2点。将“prob”blob(8x8)作为输出。然而,memnet架构以fc8欧几里德结束,没有任何问题。fc6和fc7的尺寸为(10,4096,8,8)。我可以在哪找到我的热图?MemNet与CaffeNet并不完全相同:他们删除了CaffeNet的
prob
fc8
层,并用一个新的层
fc8 euclidean
代替,该层只提供一个输出。如果你想从头开始训练一个新的MemNet,比如CNN,那么你也应该这样做,训练这个新的
fc8 euclidean
层。如果你不想训练,只想应用MemNet,你应该使用prototxt和caffemodel文件。