Neural network 如何使用caffe模型提取memnet热图?
我想通过使用Khosla等人在 查看prototxt模型,我可以理解最终的内积输出应该是可记忆性分数,但是如何获得给定输入图像的可记忆性映射?一些例子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应用于图像的重叠区域。我们对图像的多个
提前感谢他们在论文[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。(本文中提到了该比例。)
[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文件。