卷积网络:关于感受野的计算以及卷积网络涉及到的计算

https://www.bilibili.com/video/BV1q7411T7Y6?from=search&seid=5647822811307033095&spm_id_from=333.337.0.0https://www.bilibili.com/video/BV1q7411T7Y6?from=search&seid=5647822811307033095&spm_id_from=333.337.0.0https://www.bilibili.com/video/BV1q7411T7Y6?from=search&seid=5647822811307033095&spm_id_from=333.337.0.0仔细想想,也许我在之前的文章中对于感受野的理解是错的:认为feature map的尺寸就是感受野,这个尺寸还可以被称之为分辨率。尤其是到了yolo3,因为它的定位网络完全去除了FC,bbox就包含在那3个尺度的feature map里面

 这是2014年发表的VGG论文中的一个判断,这种等效替代的判断标准就是两种操作是否有相同的感受野。我记得在哪里看到过,《深度学习之美》还是鲁鹏老师的课程

yolo1的backbone就是在VGG-16基础上做的修改

感受野receptive field的定义,似乎也可以这样来描述,首先感受野只在输入的样本上,这个样本可能是原图像,可能是feature map。平时使用receptive field应该是这样的,第三层卷积输出的feature map的(0,0)元素对应的前一层的感受野是什么

感受野是什么,可以描述它的位置,尺寸 

https://www.cnblogs.com/shine-lee/p/12069176.htmlhttps://www.cnblogs.com/shine-lee/p/12069176.htmlhttps://www.cnblogs.com/shine-lee/p/12069176.html

这篇文章写得爆炸好

感受野是个相对概念,某层feature map上的元素看到前面不同层上的区域范围是不同的,通常在不特殊指定的情况下,感受野指的是看到输入图像上的区域

 要想计算receptive field, 要先学会计算卷积操作输出的feature map的尺寸

 可以做一下计算,cov1输出的feature map的尺寸 =

{[(input = 9) + (2 * (padding = 0)) - (kernel = 3)] / (stride = 2)}向下取整 + 1 = 4

重点在于怎么理解这个F(i).我想的F(i)表示 选定的某层输出的feature map的一个元素相对于前i层的receptive field的尺寸,但这样的话,公式中的F(i + 1)就要改成F(i - 1)

我认为我这种定义会更好理解,这个公式的实现是一个递归实现

公式推导:没太看懂

为了具体计算感受野,这里借鉴视觉系统中的概念,

receptive field=center+surround

准确计算感受野,需要回答两个子问,即视野中心在哪和视野范围多大

  • 只有看到”合适范围的信息”才可能做出正确的判断,否则就可能“盲人摸象”或者“一览众山小”;
  • 目标识别问题中,我们需要知道神经元看到是哪个区域,才能合理推断物体在哪以及判断是什么物体。

前文中提到VGG的论文有一个判断,如果两种操作结果的感受野一样,那么这两种操作等价

验证一下:基于感受野这个判据,两个3*3卷积等价于1个5*5卷积。假设strid = 1, padding = 0

(1)首先计算两种操作最终输出的feature map是否一致

两个3*3卷积:第一层卷积输出的feature map size = 30, 第二层卷积输出的feature map size = 28

1个5*5卷积: 卷积输出的feature map size = 28

(2)计算两种操作最终输出的feature map的某个元素对应于特征矩阵的receptive field size

两个3*3卷积:F(1) = 3, F(2) = 5

1个5*5卷积: F(1) = 5

这种用小filter的叠加代替大filter的操作的好处是极大的减少参数量,下面通过计算证明:

假设输入样本的channe为c,7*7filter的channel也为c

则7*7卷积所需的参数量 = 7 * 7 * c * c = 49c^2

3*3卷积所需的参数量 = 3 * 3 * c * c + 3 * 3 * c * c + 3 * 3 * c * c = 27c^2

question:现在又出现一个问题,3通道的样本用3通道的filter处理,输出的feature map的通道数是多少???

(3条消息) 【深度学习】多通道图像卷积过程及计算方式_frank 的专栏-CSDN博客_多通道卷积https://blog.csdn.net/briblue/article/details/83063170卷积过程中,输入层有多少个通道,滤波器就要有多少个通道,但是滤波器的数量是任意的,滤波器的数量决定了卷积后 featuremap 的通道数

可以这么理解,卷积操作是一个二位操作,单个的filter是二维的,单通道的特征矩阵通过单个filter处理后,得到一张feature

如果特征矩阵是m通道,filter是n通道,那么生成的结果应该是m*n张feature, feature的尺寸由这个公式决定

QUESTIONMARK:还有这么一个情况,比如说有两种类型的卷积操作,一个是3*3*1,64卷积,另一个是3*3*64,1卷积,输入的feature map的通道数为64.这两种情况有什么区别??

answer: 根据现在掌握的知识,第一种情况输出的feature map通道数应该还是64.如果滤波器的数量增加,增加到多少,输出的map的通道数就是多少

第二种情况,输出的map的通道数应该是1.这就跟我们通常处理三通道样本比较类似,在第一层卷积的时候,你不应该将三个通道分开处理,那不符合实际,因此往往第一层卷积滤波器的input_channel为3

这又涉及到另一个问题,你看我们在描述feature map的时候,往往只是一个三维描述,但是对于滤波器,却是一个四维描述,在实际的程序中,这四个数分别是,宽,高,in_channel, out_channel

子豪兄总结的是:有多少个滤波器就有多少个feature map,和前文联系起来,滤波器的数量就是这个out_channel

但是紧接着就有另外一个问题,比如说输入的feature map的通道数是45,滤波器的out_channel是128,根据上面的判断,输出的feature map的通道数一般是128,但这个具体的卷积过程是什么呢??

我觉得别扭的地方是我认为,按照上述的卷积方式,输入的feature map的某些通道做的卷积的次数会比另一些通道要少,这种次数上的不均匀打破了我一概认为的雨露均沾的刻板印象

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值