learning to see.pdf
@lutingting 2016-11-04 16:15 字数 10899 阅读 4087 SIFT特征提取及匹配
1.SIFT(Scale-invariant feature transform)算子的核心思想
由于SIFT特征的检测方式,使得它具有:
2.什么是尺度空间呢?2.1 一篇百度文库的文章关于尺度空间的分析具体内容参考文献4 通常会听到尺度变化等这类词语,看到的也总是一堆的数学公式,有时候真的不知道这到底有啥用,有啥意义,没有弄懂这些意义,当然就更不可能理解,不可能去掌握、应用它了,现在我才理解,小波变化其实也是一种尺度变化。今天我看到一篇南航数学系写的关于尺度空间解释的文章,感觉很通俗易懂,我们不从数学上来推导什么是尺度空间,只是从生活常识方面来解释尺度空间的意义,意义懂了,数学方面自然就好理解了。 例子1首先我们提出一个问题,请看下面的图片,让我们人为的进行判断:下面所显示的左右图片中哪个的角尖锐?
此例子的结果阐述了“尺度”对于解决视觉问题的重要性,即一个视觉问题的答案往往会依赖于其所在的尺度。在生活中这样的例子也比比皆是,比如要观察一棵树,所选择的尺度应该是“米”级;如果观察树上的树叶,所选择的尺度则应该是“厘米”级。一般来说,摄像设备所能呈现的画面分辨率是固定的。要以同样的分辨率分别观察树和树叶,我们需要调整摄像设备的摄像位置。因此,视觉问题中的“尺度”概念也可以被形象地理解为摄像设备与被观察物体之间的距离:较远的距离对应较大的尺度,较近的距离对应较小的尺度。 例子2接下来我们看看第二个例子吧,看看图二中显示的图片那些是角点?
同例1 一样,本例中问题的答案依赖于问题所在的尺度:当我们非常靠近雪花形状观察它时(即在较小的尺度下),能够看清楚所有的细节,却不容易感知其整体轮廓,从而倾向于不加区分地选取图2(b)中所标记的192 个点作为角点。反过来,当我们从一个很远的距离观察雪花形状时(即在较大的尺度下),虽然轮廓的细节已经模糊不清,但却能够一眼看出其整体结构,从而倾向于选取图2(d) 中所标记的12 个点作为角点。此外,图2(c) 中所标记的角点对于理解雪花形状也很有帮助。事实上,如果我们不是保守地将自己固定在某个尺度下来观察物体,便能够获得充足的视觉信息。比如说图2(b)-2(d) 所呈现的三组角点已经很好地向我们展示了雪花形状的三个结构层次。这一效果是其中的任意一组角点都无法实现的。 现实生活中的例子现实生活中视觉问题的复杂性也往往需要我们做到这一点:当我们去参观某处文化遗迹时,远远地就已经开始观察建筑物的外形,然后较近距离时开始注意到门窗、台阶、梁柱的建筑风格,最后会凑上前去细看门窗上的图案、石碑上的碑文等。当一部机器人也能够自主地做到这一点时,说明它已经具备了更高的人工智能。我们对尺度空间技术的研究也正是朝着这个方向努力。概括地说,“尺度空间”的概念就是在多个尺度下观察目标,然后加以综合的分析和理解。 这里用的是图像来解释尺度,当然,对于抽象的信号,理解还是一样的,不过到时候我们看的工具不是我们人眼或者是摄像机从外表区分了,这时候我们用的工具也可能是时域的分析法,也可能是频率域的傅里叶变化等分析法,它是我们进一步发现我们感兴趣事物的工具。 2.2 SIFT中的尺度空间的概念
3.SIFT特征提取一幅图像的SIFT特征提取,分为4个步骤:
下面分别是这四部分的详细内容 3.1 尺度空间极值检测SIFT特征点其实就是尺度空间中稳定的点/极值点,那么,为了得到这些稳定点:
3.1.1 尺度空间的建立(高斯金字塔的建立)对于一幅输入图像,为了进行sift特征检测、实现scale-invariant(任何尺度下都能够有对应的特征点),需要对该图像的尺度空间进行分析,即建立高斯金字塔图像、得到不同scale的图像,这里的高斯金字塔与最原始的高斯金字塔稍微有点区别,因为它在构造尺度空间时,将这些不同尺度图像分为了多个Octave、每个Octave又分为了多层。下图左侧框内给出了Sift中的高斯金字塔的结构图;
为什么已经使用了不同尺度的高斯函数进行滤波还需要引入高斯金字塔呢? 不同octave之间的尺度差异靠高斯金字塔在分辨率上的区别实现,同一个octave内部不同层之间的尺度差异靠高斯函数的方差变化来实现。另外SIFT在DOG问题上并不是使用DOG函数直接滤波,而是用相邻两层的高斯滤波结果相减得到的,为什么要这样呢? 不同对应的高斯核函数到底有什么作用呢?下面做个小实验,可以发现,不同高斯核尺度会对图像产生不同的平滑效果,尺度因子越大(高斯函数方差越大),对图像的平滑程度越大;
得到了图像的尺度空间后,需要在尺度中间内检测稳定特征点,从而需要比较不同尺度图像之间的差别,实现极值点的检测,实际上,Laplacian of Gaussian和Difference of Gaussian都能够实现这样的目的,但LoG需要大量的计算,而DoG的计算相对简单,并且DoG是对LoG的一个很好的今昔 3.1.2 图像差分高斯金字塔(DoG)的建立对于高斯金字塔中的每一个塔的不同层,可以计算得到相邻层之间的差值,从而可以得到差分高斯,对高斯金字塔中每一个塔都进行同样的操作,从而得到差分高斯金字塔,如下图右侧所示,即显示了由左侧的高斯金字塔构造得到的差分高斯金字塔,该差分高斯金字塔包含2个塔,每个塔都有四层 差分高斯表征了相邻尺度的高斯图像之前的差别,大值表示区别大,小值表示区别小,后续的特征点检测都是差分高斯图像金字塔中进行的! 3.1.3 尺度空间中特征点的检测(DoG中极值点的检测)构造完尺度空间(差分高斯金字塔)后,接下来的任务就是“在尺度中间中检测出图像中的稳定特征点”: 对于DoG中每一个采样点(每一个Octave中每一层),将其与它邻域内所有像素点(8+18=26)进行比较,判断其是否为局部极值点(极大或者极小),更加具体地:如下图所示,中间的检测点和它同尺度的8个相邻点和上下相邻尺度对应的9×2个点共26个点比较,以确保在尺度空间和二维图像空间都检测到极值点。 一个点如果在DOG尺度空间本层以及上下两层的26个领域中是最大或最小值时,就认为该点是图像在该尺度下的一个特征点。但要注意:这种相邻层之间的极值点的寻找是在同一Octave中的相邻尺度之间进行寻找的,而不要跨组! 同时,应该注意到一个问题,在极值比较的过程中,每一Octave图像的首末两层是无法进行极值比较的,为了满足尺度变化的连续性,需要进行一些修正:在高斯金字塔中生成S+3层图像,具体解释如下:假设s=3,也就是每个塔里有3层,则k=21/s=21/3:
3.2 关键点位置及尺度确定通过拟和“三维二次函数”可以精确确定关键点的位置和尺度(达到亚像素精度),具体方法还未知,可以得到一系列的SIFT候选特征点集合,但由于这些关键点中有些具有较低的对比对,有些输属于不稳定的边缘响应点(因为DoG算子会产生较强的边缘响应),所以,为了增强匹配稳定性、提高抗噪声能力,应该将这2类关键点去除,实现对候选SIFT特征点集合的进一步净化:
3.3 关键点方向确定
至此,得到了图像中所有关键点的方向!实际上,关键点方向的确定是为了接下来的特征向量生成中的坐标旋转使用的! 3.4 特征向量生成上面只是得到了每个关键点的方向,接下来,需要确定每个关键点的特征向量,具体方式如下:
至此,关键点特征向量完全确定!此时SIFT特征向量已经去除了尺度变化、旋转等几何变形因素的影响,再继续将特征向量的长度归一化,则可以进一步去除光照变化的影响。 4.SIFT特征的匹配现有A、B两幅图像,分别利用上面的方法从各幅图像中提取到了k1个sift特征点和k2个特征点及其对应的特征描述子,即维和维的特征,现在需要将两图中各个scale(所有scale)的描述子进行匹配。 接下来采用关键点特征向量的欧式距离来作为两幅图像中关键点的相似性判定度量。
Reference 5.下面是一些参考程序5.1
5.2
|
|
3.Hough变换的优缺点优点:
缺点:
Hough变换利用的是一种投票思想 Reference
|
转自: http://www.bfcat.com/index.php/2012/12/inverting-visualizing-features-object-detection/
所有人都知道,计算机视觉是关于看的学问,在调程序的时候,可视化占到了一大部分的地位。当我们使用描述子的时候我们也希望能够看到这个描述字的图案,例如我们很熟悉的SIFT,SURF等描述子的可视化方式。
很多做目标检测的人都对HoG特征描述子非常熟悉,也经常用到。MIT的Carl Vondrick(老板是Antonio Torralba)公布了一个可以用来可视化HoG算子的代码。这段代码提供了4种可视化HoG算子的方式,和普通的,直接把描述子画在图像上的方式不同,这几种可视化方式更直观的展示了HoG描述子在图像上的响应。好像让研究者戴上“HoG眼镜”来像计算机一样观察世界。
在我们用HoG算子进行样本训练的时候,可以利用这种可视化来检查为什么一些负样本会导致虚警,也可以检查正样本自己的类内方差。
最后,作者还和Weinzaepfel et al.设计的SIFT 可视化方式(P. Weinzaepfel, H. Jegou, and P. Perez. Reconstructing an image from its local descriptors. In CVPR, 2011.)进行了对比。
这个程序以及技术报告的网页在这里:http://mit.edu/vondrick/ihog/index.html#overview
https://github.com/cvondrick/ihog
Pinned |
|
想法:怎么把一些“常识”约束加进来——或者“object 和 ambient things 的关系概率”
或者检测出来:鸳鸯、水、以及“汽车”之后,再做一轮PK —— 背后的核心思路是说,“汽车”这个物体和周围的从像素到物体的金字塔各层的关联性(共现)要比较好才行~
pat 点
CNN网络可视化·Visualizing and Understanding Convolutional Networks
Matthew D. Zeiler,Rob Fergus. Visualizing and Understanding Convolutional Networks.CVPR2014.论文下载
一、相关理论本篇博文主要讲解2014年ECCV上的一篇经典文献:《Visualizing and Understanding Convolutional Networks》,可以说是CNN领域可视化理解的开山之作,这篇文献告诉我们CNN的每一层到底学习到了什么特征,然后作者通过可视化进行调整网络,提高了精度。最近两年深层的卷积神经网络,进展非常惊人,在计算机视觉方面,识别精度不断的突破,CVPR上的关于CNN的文献一大堆。然而很多学者都不明白,为什么通过某种调参、改动网络结构等,精度会提高。可能某一天,我们搞CNN某个项目任务的时候,你调整了某个参数,结果精度飙升,但如果别人问你,为什么这样调参精度会飙升呢,你所设计的CNN到底学习到了什么牛逼的特征? 这篇文献的目的,就是要通过特征可视化,告诉我们如何通过可视化的角度,查看你的精度确实提高了,你设计CNN学习到的特征确实比较牛逼。这篇文献是经典必读文献,才发表了一年多,引用次数就已经达到了好几百,学习这篇文献,对于我们今后深入理解CNN,具有非常重要的意义。总之这篇文章,牛逼哄哄。 二、利用反卷积实现特征可视化为了解释卷积神经网络为什么work,我们就需要解释CNN的每一层学习到了什么东西。为了理解网络中间的每一层,提取到特征,paper通过反卷积的方法,进行可视化。反卷积网络可以看成是卷积网络的逆过程。反卷积网络在文献《Adaptive deconvolutional networks for mid and high level feature learning》中被提出,是用于无监督学习的。然而本文的反卷积过程并不具备学习的能力,仅仅是用于可视化一个已经训练好的卷积网络模型,没有学习训练的过程。 反卷积可视化以各层得到的特征图作为输入,进行反卷积,得到反卷积结果,用以验证显示各层提取到的特征图。举个例子:假如你想要查看Alexnet 的conv5提取到了什么东西,我们就用conv5的特征图后面接一个反卷积网络,然后通过:反池化、反激活、反卷积,这样的一个过程,把本来一张13*13大小的特征图(conv5大小为13*13),放大回去,最后得到一张与原始输入图片一样大小的图片(227*227)。 1、反池化过程我们知道,池化是不可逆的过程,然而我们可以通过记录池化过程中,最大激活值得坐标位置。然后在反池化的时候,只把池化过程中最大激活值所在的位置坐标的值激活,其它的值置为0,当然这个过程只是一种近似,因为我们在池化的过程中,除了最大值所在的位置,其它的值也是不为0的。刚好最近几天看到文献:《Stacked What-Where Auto-encoders》,里面有个反卷积示意图画的比较好,所有就截下图,用这篇文献的示意图进行讲解: 以上面的图片为例,上面的图片中左边表示pooling过程,右边表示unpooling过程。假设我们pooling块的大小是3*3,采用max pooling后,我们可以得到一个输出神经元其激活值为9,pooling是一个下采样的过程,本来是3*3大小,经过pooling后,就变成了1*1大小的图片了。而upooling刚好与pooling过程相反,它是一个上采样的过程,是pooling的一个反向运算,当我们由一个神经元要扩展到3*3个神经元的时候,我们需要借助于pooling过程中,记录下最大值所在的位置坐标(0,1),然后在unpooling过程的时候,就把(0,1)这个像素点的位置填上去,其它的神经元激活值全部为0。再来一个例子: 在max pooling的时候,我们不仅要得到最大值,同时还要记录下最大值得坐标(-1,-1),然后再unpooling的时候,就直接把(-1-1)这个点的值填上去,其它的激活值全部为0。 2、反激活我们在Alexnet中,relu函数是用于保证每层输出的激活值都是正数,因此对于反向过程,我们同样需要保证每层的特征图为正值,也就是说这个反激活过程和激活过程没有什么差别,都是直接采用relu函数。 3、反卷积对于反卷积过程,采用卷积过程转置后的滤波器(参数一样,只不过把参数矩阵水平和垂直方向翻转了一下),这一点我现在也不是很明白,估计要采用数学的相关理论进行证明。 最后可视化网络结构如下: 网络的整个过程,从右边开始:输入图片-》卷积-》Relu-》最大池化-》得到结果特征图-》反池化-》Relu-》反卷积。到了这边,可以说我们的算法已经学习完毕了,其它部分是文献要解释理解CNN部分,可学可不学。 总的来说算法主要有两个关键点:1、反池化 2、反卷积,这两个源码的实现方法,需要好好理解。 三、理解可视化特征可视化:一旦我们的网络训练完毕了,我们就可以进行可视化,查看学习到了什么东西。但是要怎么看?怎么理解,又是一回事了。我们利用上面的反卷积网络,对每一层的特征图进行查看。 1、特征可视化结果:总的来说,通过CNN学习后,我们学习到的特征,是具有辨别性的特征,比如要我们区分人脸和狗头,那么通过CNN学习后,背景部位的激活度基本很少,我们通过可视化就可以看到我们提取到的特征忽视了背景,而是把关键的信息给提取出来了。从layer 1、layer 2学习到的特征基本上是颜色、边缘等低层特征;layer 3则开始稍微变得复杂,学习到的是纹理特征,比如上面的一些网格纹理;layer 4学习到的则是比较有区别性的特征,比如狗头;layer 5学习到的则是完整的,具有辨别性关键特征。 2、特征学习的过程。作者给我们显示了,在网络训练过程中,每一层学习到的特征是怎么变化的,上面每一整张图片是网络的某一层特征图,然后每一行有8个小图片,分别表示网络epochs次数为:1、2、5、10、20、30、40、64的特征图: 结果:(1)仔细看每一层,在迭代的过程中的变化,出现了sudden jumps;(2)从层与层之间做比较,我们可以看到,低层在训练的过程中基本没啥变化,比较容易收敛,高层的特征学习则变化很大。这解释了低层网络的从训练开始,基本上没有太大的变化,因为梯度弥散嘛。(3)从高层网络conv5的变化过程,我们可以看到,刚开始几次的迭代,基本变化不是很大,但是到了40~50的迭代的时候,变化很大,因此我们以后在训练网络的时候,不要着急看结果,看结果需要保证网络收敛。 3、图像变换。从文献中的图片5可视化结果,我们可以看到对于一张经过缩放、平移等操作的图片来说:对网络的第一层影响比较大,到了后面几层,基本上这些变换提取到的特征没什么比较大的变化。 个人总结:我个人感觉学习这篇文献的算法,不在于可视化,而在于学习反卷积网络,如果懂得了反卷积网络,那么在以后的文献中,你会经常遇到这个算法。大部分CNN结构中,如果网络的输出是一整张图片的话,那么就需要使用到反卷积网络,比如图片语义分割、图片去模糊、可视化、图片无监督学习、图片深度估计,像这种网络的输出是一整张图片的任务,很多都有相关的文献,而且都是利用了反卷积网络,取得了牛逼哄哄的结果。所以我觉得我学习这篇文献,更大的意义在于学习反卷积网络。 参考文献: 1、《Visualizing and Understanding Convolutional Networks》 ******************作者:hjimce 时间:2016.1.10 联系QQ:1393852684 原创文章,转载请保留原文地址、作者等信息********** |
|
利用pytorch实现Visualising Image Classification Models and Saliency Maps
saliency mapsaliency map即特征图,可以告诉我们图像中的像素点对图像分类结果的影响。 计算它的时候首先要计算与图像像素对应的正确分类中的标准化分数的梯度(这是一个标量)。如果图像的形状是(3, H, W),这个梯度的形状也是(3, H, W);对于图像中的每个像素点,这个梯度告诉我们当像素点发生轻微改变时,正确分类分数变化的幅度。 计算saliency map的时候,需要计算出梯度的绝对值,然后再取三个颜色通道的最大值;因此最后的saliency map的形状是(H, W)为一个通道的灰度图。 下图即为例子: 上图为图像,下图为特征图,可以看到下图中亮色部分为神经网络感兴趣的部分。 理论依据程序解释下面为计算特征图函数,上下文信息通过注释来获取。
输出为: 另一种梯度的计算法,通过了损失函数计算出来的梯度
这中方法的output为: 参考资料:1、 Karen Simonyan, Andrea Vedaldi, and Andrew Zisserman. “Deep Inside Convolutional Networks: Visualising Image Classification Models and Saliency Maps”, ICLR Workshop 2014. |
|
卷积神经网络可视化原
可视化可以让我们知道一个神经网络正在学习什么。当我们建立一个神经网络结构来进行图片分类预测时,我们想要解释网络预测的原理,例如,我们想要知道为什么网络会预测一张图片是宇宙飞船。 论文一:Deep Inside Convolutional Networks: Visualising Image Classification Models and Saliency Maps 论文一为可视化一个正在运行的神经网络提供了两种思路,它们都需要计算输出图片相对于输入图片的梯度。 分类模型可视化:分类任务是产生一个最具代表性的图片。思考:图片的什么地方看起来更像一艘宇宙飞船?我们会发现当图片I的最大分数是Sc(I) 时,这个图片被归类为c。 注:得分Sc(I)是卷积神经网络输出经过softmax函数得出的值,并不是预测可能性。 我们可以开始图片I,使用后向传播算法计算相对于I的梯度,使用梯度上升发现一个更好的I。这个过程是非常相似于优化一个神经网络,不同的是,我们保持权重固定不变,优化图片。 点:有点像E-M?也会存在局部极小点的问题?这个问题可以/值得深入研究? 图片分类的显著性:这个任务的目标是发现图片中的那些像素对确定为一个类别有着比较大的影响力。思考:图片中的那些像素对把图片分类为宇宙飞船有着比较大的影响力?记下分数Sc相对于输入图片I,然后计算图片I0。 上面的计算会使我们在每个像素点处获得一个标量值,利用标量值进行正则化可以获得图片的显著图。 图片的显著图可以用来定位感兴趣的目标,使用分割算法进行分割。注意分类模型智能给出类别,不能进行定位,被称为弱监督定位。 论文二: Learning Deep Features for Discriminative Localization 论文二提出了一种不同的方法可视化图片的显著性图,与论文一使用的后向传播算法不同的是,论文二提出修改前向网络结构实现分类和定位。 网络使用一系列卷积层作为网络的开始,通过一个图片,卷积网络生成K个特征图。每个特征图包含i*j个激活,f(k)(i,j)代表特征图k中的定位点(i,j)。 注:通常情况,图像分类使用卷积层后接全链接层和softmax层,使得输入图片的大小需要一致,论文二采用特征映射的方法使得网络可以处理不同大小的输入,了解更多可以参考Global Average Pooling。 为了使用上面的结构进行分类操作,我们可以获得一个显著图,也叫激活图,对每一个特征图学习一个权重。 论文二的方法可以从激活图中计算分类分数,同时相对于后向优化可以产生更好的可视化效果(?)。 |
|
Pinned |
|
Nice! 56 posts in total. Keep on posting.
2019淘宝 oCPC 算法笔记graph-embedding假设检验pCTRdeep-ctr-models贝叶斯定理Xavier 初始化方法RTB 广告竞价策略2018Lookalike 算法综述量化交易笔记CNN 模型压缩方法Optical FlowLoss FunctionAI 精彩视频剪辑:战术竞技类游戏直播视频静态区域检测小波变换简介CNN:目标检测CNN:细粒度分类BackpropCNN 可视化解释:Saliency MapsResNet 学习笔记2017生成模型无约束最优化问题求解iOS 私有 API 调用检测机制探讨在线学习方法概述GloVeGBDTReinforce LearningDeep LearningActivationFactorization MachineMatrix Factorization尝试改进微信读书个性化推荐:一个基于 CTR 预估的方法iOS App 启动必 crash 监控R 语言线性回归应用:拟合 iOS 录音波形图HTML基于word2vec协同过滤推荐2016微信读书冷启动推荐实战:一种基于用户属性的方法学习协同过滤推荐 \w 100行Python代码thai-photos初学潜水微信读书冷启动用户书籍推荐初探:一个借助微信用户画像的方法微信读书排版引擎自动化测试iOS 启动连续闪退保护方案2015尝试解决 Xcode7.1 覆盖率测试 GCDA 文件损坏问题notes-on-7-concurrency-model-in-7-weekslearn-haskell五毛和阴谋论SCIP学习笔记通过Swift学函数式编程笔记:软件开发的转折——并发化我的马克思主义观是如何崩塌的Google Chrome Canary:一个可以慢速调试css动画的浏览器2014TODO每晚睡4.5小时,保持精力充沛的秘诀编程珠玑II C12笔记: rand num generator
|
|
对卷积网络可视化与可解释性相关资料的一些整理,不断更新中~ 目的
博客:
论文:
代码:
1. Visualizing and Understanding Convolutional Networks
https://arxiv.org/pdf/1311.2901v3.pdf
https://neukom.dartmouth.edu/docs/bbat-wacv2016.pdf
http://cs231n.github.io/understanding-cnn/
2. Net surgery trick
http://cs231n.github.io/convolutional-networks/#convert
https://github.com/BVLC/caffe/blob/master/examples/net_surgery.ipynb
https://leonardoaraujosantos.gitbooks.io/artificial-inteligence/content/image_segmentation.html
https://arxiv.org/pdf/1502.02766v3.pdf
https://arxiv.org/pdf/1411.4038v2.pdf
http://www.cv-foundation.org/openaccess/content_cvpr_2015/papers/Long_Fully_Convolutional_Networks_2015_CVPR_paper.pdf
https://arxiv.org/pdf/1605.06211v1.pdf
`convert fully connected layers to their
equivalent convolutional layers, since the weights are the same and only
the shapes are different.`
3. Global average pooling layer
Network In Network
https://arxiv.org/pdf/1312.4400.pdf
4. Learning Deep Features for Discriminative Localization
http://cnnlocalization.csail.mit.edu/
https://github.com/jacobgil/keras-cam
5. Grad-CAM: Gradient-weighted Class Activation Mapping
https://github.com/ramprs/grad-cam
http://gradcam.cloudcv.org/
https://arxiv.org/pdf/1610.02391v2.pdf
6. Is object localization for free? – Weakly Supervised Object Recognition with Convolutional Neural Networks
http://www.di.ens.fr/willow/research/weakcnn/
http://www.di.ens.fr/willow/research/cnn/
Additional: 1. Deep Inside Convolutional Networks: Visualising Image Classification Models and Saliency Maps
https://arxiv.org/pdf/1312.6034v2.pdf
2. Top-down NeuralAttention by Excitation Backprop (c-MWP)
https://arxiv.org/pdf/1608.00507v1.pdf
http://cs-people.bu.edu/jmzhang/excitationbp.html
3. Paying More Attention to Attention: Improving the Performance of Convolutional Neural Networks via Attention Transfer
https://arxiv.org/pdf/1612.03928v1.pdf
https://github.com/szagoruyko/attention-transfer
4. Visualizing Deep Neural Network Decisions: Prediction Difference Analysis
https://openreview.net/pdf?id=BJ5UeU9xx
https://github.com/lmzintgraf/DeepVis-PredDiff
A New Method to Visualize Deep Neural Networks
https://icmlviz.github.io/assets/papers/23.pdf
5. Self-Taught Object Localization with Deep Network
https://arxiv.org/pdf/1409.3964.pdf
6. Shallow and Deep Convolutional Networks for Saliency Prediction
https://github.com/imatge-upc/saliency-2016-cvpr
Keras codebase: https://github.com/raghakot/keras-vis
Oclusion based technique:
https://github.com/waleedka/cnn-visualization/blob/master/cnn_visualization.ipynb
Net surgery trick:
https://github.com/heuritech/convnets-keras
GAP-CAM
https://github.com/alexisbcook/ResNetCAM-keras/
https://github.com/jacobgil/keras-cam
https://github.com/tdeboissiere/VGG16CAM-keras
Grad-CAM
https://github.com/jacobgil/keras-grad-cam
https://raghakot.github.io/keras-vis/visualizations/attention/
https://github.com/mlhy/ResNet-50-for-Cats.Vs.Dogs
Tensorflow codebase: GAP
https://github.com/sjchoi86/tensorflow-101/blob/master/notebooks/gap_mnist.ipynb
GAP-CAM
https://github.com/jazzsaxmafia/Weakly_detector
Grad-CAM
https://github.com/Ankush96/grad-cam.tensorflow
PyTorch Grad-CAM
https://github.com/kazuto1011/grad-cam-pytorch
GAP-CAM
https://github.com/metalbubble/CAM/blob/master/pytorch_CAM.py
SPN
https://github.com/yeezhu/SPN.pytorch
https://github.com/utkuozbulak/pytorch-cnn-visualizations
https://github.com/jacobgil/pytorch-explain-black-box
Regression Activation Map https://github.com/cauchyturing/kaggle_diabetic_RAM
Other https://github.com/metalbubble/cnnvisualizer
https://github.com/InFoCusp/tf_cnnvis
https://github.com/ppwwyyxx/tensorpack/tree/master/examples/Saliency
https://github.com/InFoCusp/tf_cnnvis
https://github.com/keplr-io/quiver
https://jacobgil.github.io/deeplearning/vehicle-steering-angle-visualizations
https://jacobgil.github.io/deeplearning/class-activation-maps
https://jacobgil.github.io/deeplearning/filter-visualizations
https://jacobgil.github.io/computervision/saliency-from-backproj
https://github.com/CSAILVision/NetDissect
https://medium.com/merantix/picasso-a-free-open-source-visualizer-for-cnns-d8ed3a35cfc5
https://github.com/CSAILVision/NetDissect
http://netdissect.csail.mit.edu/
https://github.com/imatge-upc/saliency-salgan-2017
http://imatge-upc.github.io/saliency-2016-cvpr/
https://github.com/imatge-upc/saliency-2016-cvpr
Visualization: https://github.com/shaohua0116/Activation-Visualization-Histogram
To look at: http://blog.qure.ai/notes/visualizing_deep_learning
编辑于 2019-01-09
|
|