CornerNet为什么有别于其他目标检测领域的主流算法?
大家好,我是为人造的智能操碎了心的智能禅师。
这篇文章为大家解读由密歇根大学 Hei Law 团队在 ECCV 2018发布的论文,一种新的目标检测算法。
目标检测算法在诸如自动驾驶、图像分类、人脸检测、视觉搜索等场景中,有着非常重要的意义。
今天的文章由极市平台投稿。
极市平台
深圳极视角旗下的视觉算法平台。主要为开发者提供算法开发、测试、推广、销售等服务,希望与开发者一起建立视觉算法的 App Store。
全文大约1700字。读完可能需要下面这首歌的时间
?
基础知识:主流算法简介
密歇根大学 Hei Law 等人在 ECCV 2018上,发表了一篇论文,提出了目标检测 CornerNet 算法。这个算法和主流算法有很多不一样。CornerNet 顾名思义,就是由图像边界形成的角(corner),组成的网(net)。
在 CornerNet 算法出现以前,目标检测领域的主流算法主要分为 one-stage (一刀流,如 SSD, YOLO)和 two-stage (二刀流,如 RCNN 系列)两种。
One-stage 做法是直接在图片上经过计算生成检测;Two-stage 则先提取 proposal, 再基于 proposal 做二次修正。
相对而言,one-stage 速度快精度低;而 two-stage 相反,精度高速度慢。
2014年 Ross Girshick 利用 CNN 成功取代了 HOG、DPM 等特征提取,把目标检测分成了三个步骤:
图像提取 detection proposal(其实就是图像中一些可能是检测物体的区域)
使用 CNN 对这些 proposal 进行特征提取
用 svm 对这些提取到的特征进行分类,从而完成检测的任务
这是 two-stage object detectors 鼻祖。
从 RCNN、SPPNet 到 fast RCNN,再到 Faster RCNN,目标检测的三个步骤(区域选择,特征提取,分类回归)被统一到一个深度网络框架之内,大大提高了运行速度。
FCN,FPN,RoI Align,Mask Branch 等技术把 Faster R-CNN 往前极大的推进。之后又出现了 FCN,IoU,NMS,ION,FPN,RoI Align 和 Mask Branch 等技术渊源,后来又有 YOLO,SSD,AttratioNet,G-CNN,R-FCN,Mask R-CNN,Mask X R-CNN 等的进化关系!
?Faster RCNN 算法框架
One-stage 检测算法,不需要 region proposal 阶段,直接产生物体的类别概率和位置坐标值,经过单次检测即可直接得到最终的检测结果,因此有着更快的检测速度.
比较典型的算法如 YOLO,SSD,Retina-Net。YOLO 使用了分治思想,将输入图片分为 SxS 的网格,不同网格用性能优良的分类器去分类。
SSD 将 YOLO 和 Anchor 思想融合起来,并创新使用 Feature Pyramid 结构。
YOLO,YOLO-v2,YOLO-v3,SSD,DSSD 等实时模型的推出,让目标检测变得更快。
CornerNet 怎么做的?
CornerNet 认为二刀流目标检测最明显的缺点是在 Region Proposal 阶段需要提取的 anchor boxes。这样做导致两个问题:
提取的 anchor boxes 数量较多,比如 DSSD 使用40 k,RetinaNet 使用100 k,anchor boxes 众多造成征服样本均衡
-
Anchor boxes 需要调整很多超参数,比如 anchor boxes 数量、尺寸、比率,影响模型的训练和推断速率
Hei Law 等人舍弃了传统的 anchor boxes 思路,通过提出 CornerNet 模型预测目标边界框的左上角和右下角一对顶点,也就是使用单一卷积模型生成热点图和嵌入式向量(嵌入式向量)。
?CornerNet 框架
作者的思路其实来源于一篇多人姿态估计的论文。基于 CNN 的2D 多人姿态估计方法,通常有2个思路(从下往上和从上往下):
从上往下的框架,就是先进行行人检测,得到边界框,然后在每一个边界框中检测人体关键点,连接成每个人的姿态。缺点是受人体检测框影响较大,代表算法有RMPE
从下往上的框架,每个人体关键点部件的检测,再将检测到的人体部位拼接成每个人的姿态。代表方法就是 openpose
CornerNet 模型架构
?CornerNet 模型架构
如图,CornerNet 模型架构包含三部分:环面网络、右下角和左上角的热图、预测模块。
环面网络是人体姿态估计的典型架构,堆叠两个环面网络生成左上和右下角,每一个角都包括角合并、对应的热图、嵌入式向量和偏移。
环面网络同时包含多个从下往上(从高分辨率到低分辨率)和从上往下(从低分辨率到高分辨率)过程。这样设计的目的是在各个尺度下抓取信息。
嵌入式向量使相同目标的两个顶点(左上角和右下角)距离最短,偏移用于调整生成更加紧密的边界定位框。
首先是探测角
论文中,模型生成的热图包含 C 信道(C 是目标的类别,没有背景信道),每个信道是二进制掩膜,表示相应类别的顶点位置。
对于每个顶点,只有一个地面实况,其他位置都是负样本。在训练过程,模型减少负样本,在每个地面实况顶点设定半径 r 区域内都是正样本,这是因为落在半径r区域内的顶点依然可以生成有效的边界定位框,论文中设置 IoU = 0.7。
用 pcij 表示类别为 c、坐标是(i,j)的预测热点图;ycij 表示相应位置的地面实况;变体缺失灶表示检测目标的损失函数。
训练损失函数包含了4个损失函数,α, β 和 γ 用于调整相应损失函数的权重:
由于下采样,模型生成的热点图相比输入图像分辨率低。论文提出偏移的损失函数,用于微调角和地面实况偏移。
然后将角进行分组
因为输入图像会有多个目标,会相应生成多个目标的左上角和右下角顶点。Hei Law 引入辅助嵌入式(Associative Embedding)思想,对顶点进行分组。
模型在训练阶段为每个 corner 预测相应的嵌入式向量,通过嵌入式向量使同一目标的顶点对距离最短,既模型可以通过嵌入式向量为每个顶点分组。
模型训练 Lpull 损失函数使同一目标的顶点进行分组,Lpush 损失函数用于分离不同目标的顶点。
CornerNet 创新在什么地方?
第一个创新是将目标检测上升到方法论。
基于多人姿态估计的从下往上思想,预测角的热图,根据嵌入式向量对角进行分组,其主干网络也来自于姿态估计的环面网络。
第二个创新是提出了角合并(corner pooling) 用于定位顶点。
自然界的大部分目标是没有边界框也不会有矩形的顶点,依左上角合并为例,对每个信道,分别提取特征图的水平和垂直方向的最大值,然后求和。
?corner pooling 计算方式
之所以 corner pooling 有效,原因有以下2点:
目标定位框的中心难以确定,和边界框的4条边相关,但是每个顶点只与边界框的两条边相关,所以角更容易提取
顶点能更有效提供离散的边界空间,O(wh) 顶点可以表示 O(w2h2) anchor boxes
第三个创新是模型基于环面架构,使用缺失灶(缺失灶)的变体训练神经网络。
经过 MS COCO 测试验证,CornerNet 能够达到42.1% AP,完胜所有的one-stage 目标检测方法。
CV 的很多任务之间是相通的,CVPR2018 best paper 也印证这一观点,在不同的子领域寻找相似性,迁移不同领域的算法,是 CV 行业一个趋势。
多人姿态估计的环面网络算法也不断改进中,其实论文模型的推断速率受限于环面网络的特征提取,有志青年也可以沿着这个思路取得更好的性能。
以上仅为本文作者阅读论文后的理解、总结和思考。观点难免偏差,望读者以怀疑批判态度阅读,欢迎留言讨论。
参考文献:
Newell, A., Huang, Z., Deng, J.: Associative embedding: End-to-end learning for joint detection and grouping. In: Advances in Neural Information Processing Systems. pp. 2274{2284 (2017)
Hei Law, Jia Deng :CornerNet: Detecting Objects as Paired Keypoints.ECCV2018 Girshick, R.: Fast r-cnn. arXiv preprint arXiv:1504.08083 (2015)
Girshick, R., Donahue, J., Darrell, T., Malik, J.: Rich feature hierarchies for accurate object detection and semantic segmentation. In: Proceedings of the IEEE conference on computer vision and pattern recognition. pp. 580{587 (2014)
Lin, T.Y., Goyal, P., Girshick, R., He, K., Doll´ar, P.: 缺失灶 for dense object detection. arXiv preprint arXiv:1708.02002 (2017)
Liu, W., Anguelov, D., Erhan, D., Szegedy, C., Reed, S., Fu, C.Y., Berg, A.C.:SSD: Single shot multibox detector. In: European conference on computer vision.pp. 21{37. Springer (2016)
Newell, A., Yang, K., Deng, J.: Stacked 环面网络s for human pose estimation. In: European Conference on Computer Vision. pp. 483{499. Springer (2016) Amir R. Zamir , Alexander Sax Taskonomy: Disentangling Task Transfer Learning.CVPR2018