博客:blog.shinelee.me | 博客园 | CSDN

卷积运算与相关运算

在计算机视觉领域,卷积核、滤波器通常为较小尺寸的矩阵,比如3×33×3。从这个角度看,多层卷积是在进行逐层映射,整体构成一个复杂函数,训练过程是在学习每个局部映射所需的权重,训练过程可以看成是函数拟合的过程。

  • 从模版匹配的角度理解。 前面我们已经知道,卷积与相关在计算上可以等价,相关运算常用模板匹配,即认为卷积核定义了某种模式,卷积(相关)运算是在计算每个位置与该模式的相似程度,或者说每个位置具有该模式的分量有多少,当前位置与该模式越像,响应越强。下图为图像层面的模板匹配(图片来自链接),右图为响应图,可见狗头位置的响应最大。当然,也可以在特征层面进行模版匹配,卷积神经网络中的隐藏层即可以看成是在特征层面进行模板匹配。这时,响应图中每个元素代表的是当前位置与该模式的相似程度,单看响应图其实看不出什么,可以想像每个位置都有个“狗头”,越亮的地方越像“狗头”,若给定模板甚至可以通过反卷积的方式将图像复原出来。这里多说一句,我们真的是想把图像复原出来吗,我们希望的是在图像中找到需要的模式,若是通过一个非线性函数,将响应图中完全不像“狗头”的地方清零,而将像“狗头”的地方保留,然后再将图像复原,发现复原图中只有一个“狗头”,这是不是更美好——因为我们明确了图像中的模式,而减少了其他信息的干扰!

  • 本篇文章将倾向于从第2个角度来理解卷积神经网络。

    卷积能抽取特征

    上一节中提到了“狗头”模板,如果把卷积核定为“狗头”模板会有什么问题?将缺乏灵活性,或者说泛化能力不够,因为狗的姿态变化是多样的,如果直接把卷积核定义得这么“死板”,狗换个姿势或者换一条狗就不认得了。

    那么,为了适应目标的多样性,卷积核该怎么设计呢?这个问题,我们在下一节回答,这里先看看人工定义的卷积核是如何提取特征的。

    以下图sobel算子为例(图片来自链接),对图像进行卷积,获得图像的边缘响应图,当我们看到响应图时,要知道图中每个位置的响应代表着这个位置在原图中有个形似sobel算子的边缘,信息被压缩了,响应图里的一个数值其实代表了这个位置有个相应强度的sobel边缘模式,我们通过卷积抽取到了特征。

    人工能定义边缘这样的简单卷积核来描述简单模式,但是更复杂的模式怎么办,像人脸、猫、狗等等,尽管每个狗长得都不一样,但是我们即使从未见过某种狗,当看到了也会知道那是狗,所以对于狗这个群体一定是存在着某种共有的模式,让我们人能够辨认出来,但问题是这种模式如何定义?在上一节,我们知道“死板”地定义个狗的模板是不行的,其缺乏泛化能力,我们该怎么办?

    通过多层卷积,来将简单模式组合成复杂模式,通过这种灵活的组合来保证具有足够的表达能力和泛化能力。

    多层卷积能抽取复杂特征

    为了直观,我们先上图,图片出自论文《Visualizing and Understanding Convolutional Networks》,作者可视化了卷积神经网络每层学到的特征,当输入给定图片时,每层学到的特征如下图所示,注意,我们上面提到过每层得到的特征图直接观察是看不出什么的,因为其中每个位置都代表了某种模式,需要在这个位置将模式复现出来才能形成人能够理解的图像,作者在文中将这个复现过程称之为deconvolution,详细查看论文(前文已经有所暗示,读者可以先独自思考下复现会怎么做)。

    从图中可知,浅层layer学到的特征为简单的边缘、角点、纹理、几何形状、表面等,到深层layer学到的特征则更为复杂抽象,为狗、人脸、键盘等等,有几点需要注意:

    1. 卷积神经网络每层的卷积核权重是由数据驱动学习得来,不是人工设计的,人工只能胜任简单卷积核的设计,像边缘,但在边缘响应图之上设计出能描述复杂模式的卷积核则十分困难。

    2. 数据驱动卷积神经网络逐层学到由简单到复杂的特征(模式),复杂模式是由简单模式组合而成,比如Layer4的狗脸是由Layer3的几何图形组合而成,Layer3的几何图形是由Layer2的纹理组合而成,Layer2的纹理是由Layer1的边缘组合而成,从特征图上看的话,Layer4特征图上一个点代表Layer3某种几何图形或表面的组合,Layer3特征图上一个点代表Layer2某种纹理的组合,Layer2特征图上一个点代表Layer1某种边缘的组合。

    3. 这种组合是一种相对灵活的方式在进行,不同的边缘→不同纹理→不同几何图形和表面→不同的狗脸、不同的物体……,前面层模式的组合可以多种多样,使后面层可以描述的模式也可以多种多样,所以具有很强的表达能力,不是“死板”的模板,而是“灵活”的模板,泛化能力更强。

    4. 卷积神经网络真正使用时,还需要配合池化、激活函数等,以获得更强的表达能力,但模式蕴含在卷积核中,如果没有非线性激活函数,网络仍能学到模式,但表达能力会下降,由论文《Systematic evaluation of CNN advances on the ImageNet》,在ImageNet上,使用调整后的caffenet,不使用非线性激活函数相比使用ReLU的性能会下降约8个百分点,如下图所示。通过池化和激活函数的配合,可以看到复现出的每层学到的特征是非常单纯的,狗、人、物体是清晰的,少有其他其他元素的干扰,可见网络学到了待检测对象区别于其他对象的模式。

    总结

    本文仅对卷积神经网络中的卷积计算、作用以及其中隐含的思想做了介绍,有些个人理解难免片面甚至错误,欢迎交流指正。

    参考

    • Kernel (image processing)
    • Forward And Backpropagation in Convolutional Neural Network
    • 《Visualizing and Understanding Convolutional Networks》
    • 《Systematic evaluation of CNN advances on the ImageNet》
    • Deep Learning Specialization
分类: 深度学习基础
标签: CNN
<div id="blog_post_info">
好文要顶 关注我 收藏该文

shine-lee
关注 - 2
粉丝 - 57

+加关注
11
0
<div class="clear"></div>
<div id="post_next_prev"><a href="https://www.cnblogs.com/shine-lee/p/9884551.html" class="p_n_p_prefix">« </a> 上一篇:    <a href="https://www.cnblogs.com/shine-lee/p/9884551.html" title="发布于 2018-10-31 17:37">OpenCV各版本差异与演化,从1.x到4.0</a>
<br>
<a href="https://www.cnblogs.com/shine-lee/p/9950733.html" class="p_n_p_prefix">» </a> 下一篇:    <a href="https://www.cnblogs.com/shine-lee/p/9950733.html" title="发布于 2018-11-13 10:10">论文学习-系统评估卷积神经网络各项超参数设计的影响-Systematic evaluation of CNN advances on the ImageNet</a>

![在这里插入图片描述](https://img-blog.csdnimg.cn/2020022716143884.jpg)

卷积神经网络之卷积计算、作用与思想 深度学习相关推荐

  1. python卷积神经网络cnn的训练算法_【深度学习系列】卷积神经网络CNN原理详解(一)——基本原理...

    上篇文章我们给出了用paddlepaddle来做手写数字识别的示例,并对网络结构进行到了调整,提高了识别的精度.有的同学表示不是很理解原理,为什么传统的机器学习算法,简单的神经网络(如多层感知机)都可 ...

  2. 毕设-python 卷积神经网络 机器视觉 目标检测 车牌识别 - opencv 深度学习 机器学习

    文章目录 前言 一 课题背景 二 效果演示 2.1 图片检测识别 2.2视频检测识别 三 车牌检测与识别 四 HyperLPR库 4.1 简介 4.2 特点 4.3 HyperLPR的检测流程 4.4 ...

  3. 请概述可视化卷积神经网络的中间输出的基本思想。_卷积神经网络为什么能称霸计算机视觉领域?...

    其它机器学习.深度学习算法的全面系统讲解可以阅读<机器学习-原理.算法与应用>,清华大学出版社,雷明著,由SIGAI公众号作者倾力打造. 书的购买链接 书的勘误,优化,源代码资源 导言 在 ...

  4. 请概述可视化卷积神经网络的中间输出的基本思想。_最详细的卷积神经网络入门指南!...

    编辑:murufeng Date:2020-05-15 来源:深度学习技术前沿微信公众号 链接:干货|最全面的卷积神经网络入门教程 卷积神经网络 简介 卷积网络 (convolutional netw ...

  5. 请概述可视化卷积神经网络的中间输出的基本思想。_万字长文:特征可视化技术(CAM)...

    前言 众所周知,深度学习是一个"黑盒"系统.它通过"end-to-end"的方式来工作,输入数据例如RGB图像,输出目标例如类别标签.回归值等,中间过程不可得知 ...

  6. 【数据挖掘】卷积神经网络 ( 视觉原理 | CNN 模仿视觉 | 卷积神经网络简介 | 卷积神经网络组成 | 整体工作流程 | 卷积计算图示 | 卷积计算简介 | 卷积计算示例 | 卷积计算参数 )

    文章目录 I . 人类的视觉原理 II . 卷积神经网络 模仿 视觉原理 III . 卷积神经网络简介 IV . 卷积神经网络 组成 V . 卷积神经网络 工作流程 VI . 降低样本参数数量级 VI ...

  7. 最形象的卷积神经网络详解:从算法思想到编程实现(转载)

    mark一下,感谢作者分享! 原标题:最形象的卷积神经网络详解:从算法思想到编程实现 1 新智元推荐 查看全文 http://www.taodudu.cc/news/show-4611564.html ...

  8. AI周报丨《2021年人工智能专利综合指数报告》近日发布;北大团队提出基于卷积神经网络的全光计算,超快、超低能耗

    行业动态 <2021年人工智能专利综合指数报告> 近日发布 人工智能(Artificial Intelligence,简称AI),是研究人类智能活动规律,构造具有一定智能的人工系统,国际数 ...

  9. 深入学习卷积神经网络中卷积层和池化层的意义(转)

    为什么要使用卷积呢? 在传统的神经网络中,比如多层感知机(MLP),其输入通常是一个特征向量:需要人工设计特征,然后将这些特征计算的值组成特征向量,在过去几十年的经验来看,人工找到的特征并不是怎么好用 ...

最新文章

  1. mybatis入门-第一个程序
  2. 如何通过github提升自己
  3. JVM调优:指定垃圾回收器组合
  4. 设计模式理解:策略模式
  5. 实践出真知之Spring Cloud之基于Eureka、Ribbon、Feign的真实案例
  6. uni-app 图片适配 动态计算图片高度
  7. Python 模拟微博登陆,亲测有效!
  8. JavaScript(JS)--基础2(基本语法、字面量和变量、标识符、强制类型转换)
  9. 关于ASA5505设置DMZ区域报错问题
  10. 全国高级项目经理人数知多少?(数据统计截止2013年6月22日)
  11. 吉林大学数据库系统原理期末复习笔记
  12. Pulsar官方文档翻译-概念和架构-多租户(Multi Tenancy)
  13. C++中 itoa 和 atoi 的用法
  14. 纯css锚点跳转过渡效果 - 神奇的scroll-behavior属性
  15. CRM哪家好?这5个CRM管理系统很好用!
  16. Wordpress 网站设计入门3 网页设计和管理
  17. 计算2个复数之和与之积 (15分)
  18. C++ Primer Plus(第六版)第6章 编程练习答案详解
  19. [HEOI 2012] 采花
  20. sudo apt-get update数字签名错误解决方法

热门文章

  1. docker停止、删除容器、删除镜像 一看就理解
  2. jenkins+sonarqube流水线脚本模板
  3. 2022-2028年中国粘胶纤维市场投资分析及前景预测报告
  4. Go 学习笔记(77)— Go 第三方库之 cronexpr(解析 crontab 表达式,定时任务)
  5. python实现全角和半角互相转换
  6. PVD与CVD性能比较
  7. TensorFlow实现超参数调整
  8. Cocos Creator里localStorage的使用
  9. java = 与 == 同时使用问题 (例如 isRead = result == 0;)
  10. python 2x xlrd使用merged_cells 读取的合并单元格为空