点击上方“小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达

本文转自:计算机视觉联盟

第一个卷积神经网络是Alexander Waibel在1987年提出的时延神经网络(TDNN)[5]。TDNN是应用于语音识别问题的卷积神经网络。它使用FFT预处理语音信号作为输入。它的隐藏层由两个一维卷积核组成,以提取频域中的平移不变特征[6]。在TDNN出现之前,人工智能领域在反向传播(BP)研究中取得了突破性进展[7],因此TDNN能够使用BP框架进行学习。在原作者的对比实验中,在相同条件下,TDNN的性能要优于隐马尔可夫模型(HMM),后者是1980年代语音识别的主流算法[6]。

1988年,张伟提出了第一个二维卷积神经网络转换不变人工神经网络(SIANN),并将其应用于医学图像的检测[1]。Yann LeCun还在1989年,为计算机视觉问题构建了卷积神经网络[2],即LeNet的原始版本中。LeNet包含两个卷积层,两个完全连接层,总共60,000个学习参数,其规模远远超过TDNN和SIANN,其结构非常接近现代卷积神经网络[4]。LeCun(1989)采用[2]随机梯度下降(SGD)进行随机初始化后的权值学习。后来的深度学习学院保留了这一策略。此外,LeCun(1989)在讨论其网络结构[2]时首次使用了卷积一词,并以此命名卷积神经网络。

对于深度卷积神经网络,经过多次卷积和合并后,其最后的卷积层包含最丰富的空间和语义信息。卷积神经网络中的每个卷积单元实际上都扮演着对象检测器的角色,它本身具有定位对象的能力但是其中包含的信息对于人类来说是难以理解的,并且难以以视觉方式显示。

在本文中,我们将回顾类激活映射(CAM),CAM借鉴了著名的论文《网络中的网络》(Network In Network)中的思想,用全局平均池(GAP)代替了全连接层。

所提出的CNN网络具有强大的图像处理和分类功能,同时还可以定位图片的关键部分。

卷积层(Convolution Layers)

卷积神经网络(CNN) ,主要是通过单个过滤器连续提取特征,从局部特征到总体特征,以便进行图像识别等功能。

假设我们需要处理尺寸为6x6像素的单通道灰度图像,将其转换为二维矩阵,如下所示:

资料来源:https : //mc.ai/my-machine-learning-diary-day-68/

图片中的数字表示该位置的像素值,像素值越大,颜色越亮。图片中间的两种颜色之间的分界线是我们要检测的边界。

我们可以设计一个过滤器(也称为kernel)来检测该边界。然后,将该过滤器与输入图片进行曲面组合以提取边缘信息,可以将图片上的卷积操作简化为以下动画:

资料来源:https : //mc.ai/my-machine-learning-diary-day-68/

我们使用此过滤器覆盖图片,覆盖与过滤器一样大的区域,将相应的元素相乘,然后求和。计算一个区域后,移至其他区域,然后计算直到覆盖原始图片的所有区域。

输出矩阵称为特征图(Feature Map),它的中间颜色较浅,两侧颜色较深,反映了原始图像中间的边界。

来源:https : //mc.ai/learning-to-perform-linear-filtering-using-natural-image-data/

卷积层主要包含两个部分,一个过滤器和一个特征图,这是数据流经CNN网络的第一个神经层,通过学习使用的过滤器越多,将自动调整CNN的过滤器矩阵,将得到更多的特征。

要设置的常规超参数包括过滤器的数量,大小和步长。

池化层(Pooling)

池化也称为空间池化或子采样。其主要功能是提取特定区域的主要特征并减少参数数量,以防止模型过度拟合。

这里没有我们需要学习的参数。需要指定的超参数包括池化类型,常用的方法包括Maxpooling或Averagepooling,窗口大小和步长。通常,我们更多地使用Maxpooling,并且通常采用大小为(2,2),步长为2的过滤器,因此在合并之后,输入长度和宽度将减少2倍,并且通道不会更改,如下图所示:

最大值在合并窗口内获取,并在特征图矩阵上顺序合并后生成新矩阵。同样,我们也可以使用求平均或求和的方法,但是在通常情况下,使用最大值方法获得的效果相对更好。

经过几次卷积和合并后,我们最终将多维数据展平为一维数组,然后将它们连接到完全连接层。

来源:https : //gfycat.com/fr/smoggylittleflickertailsquirrel-machine-learning-neural-networks-mnist

它的主要功能是基于通过卷积层和池化层提取的特征集对处理后的图片进行分类。

诸如GoogleNet [10]之类的全卷积神经网络避免使用全连接层,而使用全局平均池(GAP)。这样,不仅可以减少参数以避免过度拟合,而且可以创建到类别关联的特征图。

全局平均池化层(Global Average Pooling)

长期以来,完全连接的网络一直是CNN分类网络的标准结构。通常,完全连接后将具有用于分类的激活功能。但是完全连接的层具有大量参数,这会降低训练速度,并且容易过拟合。

在网络中的网络 [9]中,提出了全局平均池的概念来代替完全连接的层。

资料来源:http : //www.programmersought.com/article/1768159517/

全局平均池和局部平均池之间的区别是池窗口。局部平均池化包括对特征图中的子区域取平均值,而在全局平均池中,我们对整个特征图取平均。

来源:https : //www.machinecurve.com/index.php/2020/01/30/what-are-max-pooling-average-pooling-global-max-pooling-and-global-average-pooling/

使用全局平均池而不是完全连接的层会大大减少参数的数量。

类激活图(Class Activation Map)

当使用全局平均池化时,最后的卷积层被迫生成与我们所针对的类别数量相同数量的特征图,这将为每个特征图赋予非常清晰的含义,即类别可信度图 [11]。

来源:https : //medium.com/@ahmdtaha/learning-deep-features-for-discriminative-localization-aa73e32e39b2

从图中可以看出,在GAP之后,我们获得了最后一个卷积层的每个特征图的平均值,并通过加权和获得了输出。对于每个类别C,每个特征图k的平均值具有相应的权重w。

训练CNN模型后,我们可以获得一个热图来解释分类结果。例如,如果我们要解释C类的分类结果。我们取出与类C对应的所有权重,并找到它们对应的特征图的加权和。由于此结果的大小与特征图一致,因此我们需要对其进行过采样并将其覆盖在原始图像上,如下所示:

来源:https : //medium.com/@ahmdtaha/learning-deep-features-for-discriminative-localization-aa73e32e39b2

通过这种方式,CAM以热图的形式告诉我们,模型集中在用于确定图片的c类中的像素上。

来源:MultiCAM:用于遥感图像中飞机识别的多类激活映射

结论

CAM的解释效果一直很好,但是有一个缺点,那就是它需要修改原始模型的结构,从而导致需要重新训练模型,这极大地限制了它的使用场景。如果模型已经在线,或者培训成本很高,那么我们几乎不可能对其进行再培训。

References

  1. Zhang, W., 1988. Shift-invariant pattern recognition neural network and its optical architecture. In Proceedings of annual conference of the Japan Society of Applied Physics.

  2. . LeCun, Y. and Bengio, Y., 1995. Convolutional networks for images, speech, and time series. The handbook of brain theory and neural networks, 3361(10), 1995.

  3. LeCun, Y., Boser, B., Denker, J.S., Henderson, D., Howard, R.E., Hubbard, W. and Jackel, L.D., 1989. Backpropagation applied to handwritten zip code recognition. Neural computation, 1(4), pp.541–551.

  4. LeCun, Y., Kavukcuoglu, K. and Farabet, C., 2010. Convolutional networks and applications in vision. In ISCAS(Vol. 2010, pp. 253–256).

  5. Waibel, A., 1987. Phoneme recognition using time-delay neural networks. Meeting of the Institute of Electrical, Information and Communication Engineers (IEICE). Tokyo, Japan.

  6. Waibel, A., Hanazawa, T., Hinton, G., Shikano, K. and Lang, K., 1989. Phoneme recognition using time-delay neural networks, IEEE Transactions on Acoustics, Speech, and Signal Processing, 37(3), pp. 328–339.

  7. Rumelhart, D.E., Hinton, G.E. and Williams, R.J., 1986. Learning representations by back-propagating errors. nature, 323(6088), p.533.

  8. LeCun, Y., Bottou, L., Bengio, Y. and Haffner, P., 1998. Gradient-based learning applied to document recognition. Proceedings of the IEEE, 86(11), pp.2278–2324.

  9. Min Lin, Qiang Chen, Shuicheng Yan : Network In Network.

  10. Christian Szegedy, Wei Liu, Yangqing Jia, Pierre Sermanet, Scott E. Reed, Dragomir Anguelov, Dumitru Erhan, Vincent Vanhoucke, Andrew Rabinovich: Going Deeper with Convolutions.

  11. Bolei Zhou andAditya Khosla and Agata Lapedriza andAude Oliva andAntonio Torralba :Learning Deep Features for Discriminative Localization

下载1:OpenCV-Contrib扩展模块中文版教程

在「小白学视觉」公众号后台回复:扩展模块中文教程即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

下载2:Python视觉实战项目52讲

在「小白学视觉」公众号后台回复:Python视觉实战项目即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。

下载3:OpenCV实战项目20讲

在「小白学视觉」公众号后台回复:OpenCV实战项目20讲即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。

交流群

欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~

收藏 | 深度学习中神经网络的可视化解释!相关推荐

  1. 【AI白身境】深度学习中的数据可视化​​​​​​​

    文章首发于微信公众号<有三AI> [AI白身境]深度学习中的数据可视化 今天是新专栏<AI白身境>的第八篇,所谓白身,就是什么都不会,还没有进入角色. 上一节我们已经讲述了如何 ...

  2. 对pca降维后的手写体数字图片数据分类_【AI白身境】深度学习中的数据可视化...

    今天是新专栏<AI白身境>的第八篇,所谓白身,就是什么都不会,还没有进入角色. 上一节我们已经讲述了如何用爬虫爬取数据,那爬取完数据之后就应该是进行处理了,一个很常用的手段是数据可视化. ...

  3. 深度学习中的一些英文解释

    A: (1)anchors:锚点.(anchors(锚点)定义在RPN网络中) B: (1)bounding box:预测边界框. (2)Botton-up 3D proposal generatio ...

  4. 【AI白身境】深度学习中的数据可视化

    今天是新专栏<AI白身境>的第八篇,所谓白身,就是什么都不会,还没有进入角色. 上一节我们已经讲述了如何用爬虫爬取数据,那爬取完数据之后就应该是进行处理了,一个很常用的手段是数据可视化. ...

  5. 干货|一文全解深度学习中的卷积

    来源:1024深度学习 概要:卷积现在可能是深度学习中最重要的概念.正是靠着卷积和卷积神经网络,深度学习才超越了几乎其他所有的机器学习手段. 译自Tim Dettmers的Understanding ...

  6. 如何系统性掌握深度学习中的数据使用

    数据是深度学习系统的输入,对深度学习的发展起着至关重要的作用,但是又容易被很多人忽视,尤其是缺少实战的理论派. 今天便来谈谈这个问题,同时介绍一个好的学习社区供大家讨论与提升. 文/编辑 | 言有三 ...

  7. 卷积为什么如此强大?一文全解深度学习中的卷积

    卷积为什么如此强大?一文全解深度学习中的卷积 2018年05月10日 15:52:41 七月在线实验室 阅读数:17112 作者:Tim Dettmers(Understanding Convolut ...

  8. 卷积为什么如此强大?理解深度学习中的卷积

    译自Tim Dettmers的Understanding Convolution in Deep Learning有太多的公开课.教程在反复传颂卷积神经网络的好,却都没有讲什么是"卷积&qu ...

  9. 深度 | 理解深度学习中的卷积

    译者按:本文译自 Tim Dettmers 的 Understanding Convolution in Deep Learning.有太多的公开课.教程在反复传颂卷积神经网络的好,却都没有讲什么是「 ...

最新文章

  1. JSR349(Bean Validation 1.1)
  2. 「日常训练」Common Subexpression Elimination(UVa-12219)
  3. opening tables mysql_MySQL 大量 Opening tables 案例分析-爱可生
  4. 产品迭代的道与术,爆款产品的打造密码 | 周四话产品
  5. 【tensorflow-keras-GRU】keras.layers.GRU 门限循环单元网络(Gated Recurrent Unit)
  6. mysql linux-syn25000是什么_当MySQL数据库遇到Syn Flooding
  7. 【转载】Ubuntu环境下配置Android Studio
  8. java aes mysql blob_使用带有ORDER子句的AES_DECRYPT在MySQL中返回BLOB数据
  9. Yii2语言国际化配置Twig翻译解决方案
  10. PowerCMD——cmd的命令行工具
  11. 10个微型计算机应用的例子,微型计算机原理与接技术版简答题.doc
  12. 笨方法学Python3 习题 0
  13. python三方库是什么_python第三方库有哪几种
  14. 轻轻松松做出绝美词云!这是比阿里云DataV还好用的数据可视化平台
  15. 如何防止黑客攻击,保证服务器安全
  16. 经典的机器人入门资料
  17. java.lang.ArrayStoreException
  18. java斜体_设置TextView样式(粗体或斜体)
  19. 在GPT分区的磁盘上创建ESP分区图文教程
  20. m被3整除的c语言表达式,C语言编写函数fun,实现从整数m到n,能被3整除

热门文章

  1. 开源需自立!Android、GitHub、Apache全线告急!
  2. Python程序员Debug利器,和Print说再见 | 技术头条
  3. 11月最佳机器学习开源项目Top10!
  4. 最实用的机器学习算法优缺点分析,没有比这篇说得更好了
  5. 谷歌开发者大会杀出技术黑马,知乎AI终于不再隐藏实力了
  6. 2018机器阅读理解竞赛冠军分享:问答系统新思路
  7. 麻省理工学院开放 2018 自动驾驶课程
  8. 消息幂等(去重)通用解决方案
  9. 分布式缓存灵魂十连,你能坚持几个?
  10. 一个线程罢工的诡异事件