33

CNN是怎么学到图片内的绝对位置信息的?

 4 years ago
source link: http://mp.weixin.qq.com/s?__biz=MzI5MDUyMDIxNA%3D%3D&%3Bmid=2247492955&%3Bidx=1&%3Bsn=c7306bae32795166a816ce8332d1689f
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

加入极市 专业CV交流群,与 6000+来自腾讯,华为,百度,北大,清华,中科院 等名企名校视觉开发者互动交流!更有机会与 李开复老师 等大牛群内互动!

同时提供每月大咖直播分享、真实项目需求对接、干货资讯汇总,行业技术交流。 关注  极市平台  公众号  , 回复  加群, 立刻申请入群~

来源:https://zhuanlan.zhihu.com/p/99766566

作者:Xinlong Wang

本文来自知乎专栏, 仅供学习参考使用,著作权归作者所有。 如有侵权,请私信删除。

昨天读到一篇挺有意思的文章,已经被ICLR2020接收为Spotlight。这个工作解释了CNN是怎么学到图片内的绝对位置信息的。

CNN和绝对位置,这两个概念很少被一起讨论。

我觉得有两个原因:一是,大家有一个默认的共识,CNN是平移不变的(对分类任务),或者说平移等变的(对分割和检测任务);二是,没有具体任务上的需求。比如对计算机视觉的三大物体感知任务,分类,分割和检测。物体分类跟位置没关系;语义分割作为像素级语义分类,也不依赖于位置;最有可能和绝对位置有关系的物体检测任务,被主流方法解耦了绝对位置,变成相对于锚框或者锚点进行局部相对位置的回归。这样,网络本身不需要知道物体的绝对位置,位置信息作为人为先验被用在前后处理进行坐标换算。

但是一个很显而易见的观察是,人的视觉系统是可以轻松知道绝对位置的,比如:“左上角有一只鸟,它又飞到右边了”。并且,对图像里的物体来说,本质上是通过位置和形状来区分不同实例的,这点我在之前的一个回答里分享过,感兴趣的同学可以移步这边: 

所以,我觉得CNN和图片中绝对位置的关系,非常值得进一步讨论。之前有几个相关的思考:

1. 为什么2D实例分割可以直接学每个像素的嵌入向量再进行聚类来区分实例[1]?还能取得不错的效果。按道理,理想情况下,比如在一张很大的图片上,有两个一模一样的人,那在用CNN预测每个像素的嵌入向量的时候,这两个人身上对应位置的像素的嵌入向量会是一样的。这样就导致聚类没办法区分这两个人。而在3D点云中,就没有这个问题。网络和位置的关系就非常自然,因为输入点云本身就包含了位置信息,比如在室内点云分割数据集S3DIS里面,一个场景是一个N个点的点云,每个点用坐标和颜色(x,y,z,r,g,b)来表示,这样输入就是Nx6的矩阵。这也是为什么,在做点云实例分割的时候,直接学每个点的嵌入向量,再进行简单聚类,就能取得很好的效果[2]。

2. 最近做2D实例分割[3]的过程中发现,在不显式的提供像素的绝对位置坐标的情况下,CNN也能学到比较不错的绝对位置相关的输出。当时做实验的时候就觉得很惊讶,其实在CoordConv文章中也有类似的结果,普通conv和CoordConv在处理简单的位置映射任务的时候,是80分和100分的区别,而不是0分和100分的区别。当时和孔涛和沈春华老师讨论,猜想是zero-padding透露了位置的信息,但是没有进一步的实验验证。这个猜想非常自然,因为在网络的训练和测试过程中,所有的外在输入只有两个:输入图片和padding。输入图片没有位置信息,那应该就是padding的影响了。

3. Naiyan老师之前分享的文章[4]里有个结论:在单目深度估计中,CNN可能是通过图像里物体的纵坐标来估计深度的。

以上三点都表明,我们广泛使用的CNN模型是可以学到绝对位置信息的。但是问题是:CNN的这种能力是从哪里得到的?

这篇文章用实验得出了这个结论:

位置信息是zero-padding透露的。

足够大的网络(多层或者大kernel)可以把padding透露的边界信息扩散出去,得到粗糙的全局位置信息。

文章的主要实验设计是,输入图片,训练网络输出位置相关的图片。比如,输入噪声图片,希望网络输出水平坐标图:

BnEBBnz.jpg!web

在有zero-padding的情况下,基于VGG和ResNet的模型都可以预测比较合理的位置相关的输出,比如横坐标或者纵坐标。

在没有padding的情况下,输出只会直接响应在输入的内容上,不能预测和内容无关的位置信息:

qYZrY3V.jpg!webVrIzYny.jpg!web

在OpenReview里面,作者还提供了把zero-padding换成circular-padding的实验,结果和没有padding差不多,比zero-padding差很多。说明位置信息确实是从zero-padding带来的。

更多的实验和结论大家可以去读原文,我就不赘述了。

虽然目前的CNN模型可以隐式的学到一定程度的位置信息,但是显然是不充分的。怎样更充分的利用绝对位置信息,非常值得进一步挖掘,CoordConv[5]和semi-conv[6]是很好的探索。

最直接的做法当然就是把每个像素的坐标concat到输入或者中间特征上,这种简单直接做法可以在SOLO[3]的实例分割结果上带来3.6 AP的提升。但是我认为可以有更多方法去进一步充分挖掘图片里的位置信息,期待更多精彩的工作~

参考文献

[1] De Brabandere, B., Neven, D., & Van Gool, L. (2017). Semantic instance segmentation with a discriminative loss function.

[2] Wang, X., Liu, S., Shen, X., Shen, C., & Jia, J. (2019). Associatively Segmenting Instances and Semantics in Point Clouds. In  CVPR .

[3] Wang, X., Kong, T., Shen, C., Jiang, Y., & Li, L. (2019). SOLO: Segmenting Objects by Locations.

[4] Dijk, Tom van, and Guido de Croon. "How Do Neural Networks See Depth in Single Images?." In  ICCV . 2019.

[5] Liu, R., Lehman, J., Molino, P., Such, F. P., Frank, E., Sergeev, A., & Yosinski, J. (2018). An intriguing failing of convolutional neural networks and the coordconv solution. In  NIPS  .

[6] Novotny, D., Albanie, S., Larlus, D., & Vedaldi, A. (2018). Semi-convolutional operators for instance segmentation. In  ECCV  .

-End-

提示: 极市元旦福利( https://lucky.nocode.com/v2/s/7SPah7gtyjP 已开奖,还有两位小伙伴 未填写地址, 请在周三前填写完毕

vU7rIfa.png!web6bYNruJ.png!web

CV细分方向交流群

添加极市小助手微信 (ID : cv-mart) ,备注: 研究方向-姓名-学校/公司-城市 (如:目标检测-小极-北大-深圳),即可申请加入 目标检测、目标跟踪、人脸、工业检测、医学影像、三维&SLAM、图像分割等极市技术交流群 (已经添加小助手的好友直接私信) ,更有每月 大咖直播分享、真实项目需求对接、干货资讯汇总,行业技术交流 一起来让思想之光照的更远吧~

RrYj22I.jpg!web

△长按添加极市小助手

Yjqyyiq.jpg!web

△长按关注极市平台

觉得有用麻烦给个在看啦~    uE7RJjy.gif


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK