现在目标检测中,比较出色的yolov2,ssd都是采用全卷积层,而非之前rcnn系列的全连接层,这样做除了参数减少外,在特征提取方面有什么优势?是否意味著全连接在目标检测中会逐渐被取代?


卷积不过是一个稀疏的全连接;全连接也不过是一个画面那么大的卷积。本质上都可以理解为矩阵乘法(卷积可以参考托普利兹矩阵和块循环矩阵),相比起来卷积这种形式可以很好捕捉图像这种有空间相关性输入的特征。没有什么替不替代,只是目前CNN因为效果好很火热而已。


卷积层和全连接层在理论上是可以互换的。

但是卷积层换全连接比较好,优点有两个:

  1. 输入更灵活,可以接受任意解析度的图像;
  2. 减少计算量,只需要做一次前向就可以得到一张热力图,然后可以根据stride和polling等参数反算出原图大致的位置。

更详细的分析可以可以见

《CNN中使用卷积代替全连接》?

github.com图标


本身conv和fc两者在设计好conv大小的情况下就是等价的, 没有什么取代不取代的.

基本上可以理解全conv就是拿一个小点的fc不停的在图片不同位置上跑, 当然, 有层数的情况下不严格一样, 但是差不了多少.

fc不愿意用是因为锁死解析度, 而且容易造成模型参数太多, 性能上受限制. 但是fc可以考虑全图的所有信息, 不过这个也可以通过receptive field达到全图的conv来实现.

所以, 两者可以等价,但是fcn更加灵活, 为毛不用fcn?


全卷积层替换全连接层并不能减少参数。

假设上层特征图为256*7*7,全连接层为4096,则参数个数应该是7*7*256*4096.

替换成全卷积层之后,卷积核大小为7*7*256,输出为4096*1*1,所以参数个数为7*7*256*4096。

并没有减少参数个数,详情可参见:全连接层的作用是什么? - 魏秀参的回答 - https://www.zhihu.com/question/41037974/answer/150522307

--2018.4.27更新--

要想起到参数减少需要一个global average pooling的过程,而相应的卷积操作并不是全卷积。


因为通过实验发现全连接层没啥贡献,所以就取消了呗


骚年,怎么减少参数?


推荐阅读:
相关文章