点击上方“AI算法修炼营”,选择加星标或“置顶”
标题以下,全是干货
来自 | 知乎
作者丨肥橘猫与肥柴犬
来源丨https://zhuanlan.zhihu.com/p/73572874
仅作学术交流,如有侵权,请联系删文
关系建模(relationship modeling)在许多视觉任务中显得越来越重要,这也符合人自身的认知习惯:通过物体与周围环境的联系去认知该物体。而图网络具备结构化表示节点关系的能力,似乎天然地适合应用于这类建模任务中。
所以这周调查了图网络在一些视觉任务中的应用,以期获得一点点有关的insight。
Point Cloud Processing
Point Cloud是一个物体的3D数据,每个点的数据包括3D坐标、RGB值等信息,可以理解为是“3D版”的图像数据。
与image classification和image segmentation相对应,Point Cloud领域也有自己的classification和segmentation任务。
但3D的Point Cloud原始数据不像图像数据那样结构化,后者一般会在2D网格上整齐排列,点坐标的分布是离散的,而Point Cloud的点坐标却是连续分布的。早期的方法会将Point Cloud原始数据首先转化到结构化的3D网格中(想象点在立方体中的分布),然而却带来了量化失真(quantization artifacts)和内存消耗巨大等问题。
MIT 2018年的论文Dynamic Graph CNN for Learning on Point Clouds提出用图网络来建模每个点与其邻居点的关系,从而捕捉到Point Cloud的high-level信息。这个图网络被命名为EdgeConv,意思是对点之间的边进行卷积,其核心部件非常简单,一张图就可以解释得差不多了:
值得注意的是,整个模型建立起的图是稀疏的,每个点只与最近的k个邻居相连,否则带来的计算量将无比庞大。
而文章一个重要的创新点是令图具有动态性,即每次更新完点的特征后都会重新计算每个点的k个最近邻,从而建立新的图。这样的优势是,即便图是稀疏的,每个点也有机会成为其他任意一个点的邻居,可以说,每个点的感知域(receptive field)是整个Point Cloud,而不局限于局部。
文章提供的一些实验示例清楚地体现了动态图的作用。下图可视化了红点到其余点的距离,随着点特征的迭代更新,语义上相似的部件(如桌腿)之间的距离越来越近,说明模型通过动态图逐步学习到了各点的语义特性。
Scene Graph Generation
Scene Graph是一个图像的结构化形式,其中的每个节点表示图上的一个物体,节点之间的边表示物体间的关系。
CVPR 2017的Scene Graph Generation by Iterative Message Passing也应用了图网络的基本思想来处理Scene Graph Generation问题,该文章比较吸引我的一点是,它将图的边也进行了特征表示,并且和节点的特征互相进行信息传递(message passing),经过几轮这样的互动,模型得以学习到图像蕴含的视觉关系。
这个建模方法很接近factor graph的形式,在很多图网络的应用中,边的特征表示总是遭到忽视,而在这样的框架中,图的边和节点具有同等的地位,模型也更能全面地捕捉到关系。
Object Detection
原有的Object Detection模型往往只考虑了物体本身,而忽视了物体与上下文的联系。
例如,原有的模型会把河上的船误认为是车,因为如果仅仅根据物体的外表来识别的话,漂在河上的船确实长得有点像车。
显然,更加智能的Object Detection算法应当将上下文也纳入考量,这样一来,Object Detection就不再只是单纯的识别问题,而有了一些推理的意味,如,根据河水这个环境推理出河上物体是船的可能性更大。
CVPR 2018的Structure Inference Net: Object Detection Using Scene-Level Context and Instance-Level Relationships一文就采用了上述的思路,提出一种名为Structure Inference Network(SIN)的模型。该模型利用了两种上下文信息,分别是整个场景的信息和物体间的关系信息,并且应用图网络将这些信息结构化:
在具体的实现上,SIN主要用到了Scene GRU和edge GRU,分别用于聚合场景信息和物体关系信息,然后用来迭代式地更新节点特征。
小结
浅尝辄止地了解了图网络在上述几个视觉任务中的应用后,我的感受是,在当前的计算机视觉领域,视觉理解应当更多地寻求high-level信息,而基于图网络的关系建模则是一种非常重要的工具。
目标检测系列秘籍一:模型加速之轻量化网络秘籍二:非极大值抑制及回归损失优化秘籍三:多尺度检测秘籍四:数据增强秘籍五:解决样本不均衡问题秘籍六:Anchor-Free视觉注意力机制系列Non-local模块与Self-attention之间的关系与区别?视觉注意力机制用于分类网络:SENet、CBAM、SKNetNon-local模块与SENet、CBAM的融合:GCNet、DANetNon-local模块如何改进?来看CCNet、ANN
语义分割系列一篇看完就懂的语义分割综述最新实例分割综述:从Mask RCNN 到 BlendMask超强视频语义分割算法!基于语义流快速而准确的场景解析CVPR2020 | HANet:通过高度驱动的注意力网络改善城市场景语义分割
基础积累系列卷积神经网络中的感受野怎么算?
图片中的绝对位置信息,CNN能搞定吗?理解计算机视觉中的损失函数深度学习相关的面试考点总结
自动驾驶学习笔记系列 Apollo Udacity自动驾驶课程笔记——高精度地图、厘米级定位 Apollo Udacity自动驾驶课程笔记——感知、预测 Apollo Udacity自动驾驶课程笔记——规划、控制自动驾驶系统中Lidar和Camera怎么融合?
竞赛与工程项目分享系列如何让笨重的深度学习模型在移动设备上跑起来基于Pytorch的YOLO目标检测项目工程大合集目标检测应用竞赛:铝型材表面瑕疵检测基于Mask R-CNN的道路物体检测与分割
SLAM系列视觉SLAM前端:视觉里程计和回环检测视觉SLAM后端:后端优化和建图模块视觉SLAM中特征点法开源算法:PTAM、ORB-SLAM视觉SLAM中直接法开源算法:LSD-SLAM、DSO视觉SLAM中特征点法和直接法的结合:SVO
2020年最新的iPad Pro上的激光雷达是什么?来聊聊激光SLAM