写在前面

  照例,在前面写点东西。这是一篇关于目标检测+实例分割+姿态估计三合一的文章。
  主要工作:提出一个三合一的损失函数,使得上述三个任务可以融合进入一个模子里面。这篇文章是基于 Anchor-free \text{Anchor-free} Anchor-free的,与基于 Anchor-Based \text{Anchor-Based} Anchor-Based的不同。但说实话,我理解是这两种路线本质都差不多,都会产生Anchor,就是所用方法不同。具体目标检测的这两种套路我就不在这里阐述了,有需要可以自行搜索理解。

  论文链接:Location-Sensitive Visual Recognition with Cross-IOU Loss
  代码链接:Github
  收录于 CVPR2021

一、Abstract

  目标检测、实例分割+姿态估计都是需要定位到目标或者标志性的点,所以作者设计了一个三合一的网络: LSNet \text{LSNet} LSNet。优化 LSNet \text{LSNet} LSNet的关键在于处理不同尺度的数据,因此设计了一个三合一的损失函数 cross-IOU \text{cross-IOU} cross-IOU

二、引言

  目标检测,实例分割,姿态估计这三个计算机视觉任务在之前的工作中被分成三个部分,主要原因在于预测目的不一样,但还是针对图像上的点。因此作者提出LSNet,将这三个放在同一个Net里面,其关键是将目标联系到点上去。文中第一幅图很好地说明了作者的理念:
在这里插入图片描述
  主要难点:需要拟合不同尺度和不同属性的目标,但是目前存在的 Smooth-L1 \text{Smooth-L1} Smooth-L1 IOU \text{IOU} IOU损失都不能达到这种要求,因此作者设计了一种能满足要求的 cross-IOU Loss \text{cross-IOU Loss} cross-IOU Loss
  设计理念:采用一组偏移向量作为 IOU \text{IOU} IOU
  测试数据集: COCO \text{COCO} COCO
  主要贡献:1、提出一种识别敏感位置的方式;2、提出采用 cross-IOU Loss \text{cross-IOU Loss} cross-IOU Loss LSNet \text{LSNet} LSNet网络来搞定三种任务;

三、相关工作

  先提出三大任务的侧重点不同:目标检测:有bbox但缺乏细节;实例分割和姿态估计:关注masks和kepoints但却首先要定位到目标。然后再根据这些特点分别提出对应的解决办法。接下来是三大任务一些文献的举例以及大致使用的方法,这里就不过多说明。
  最后总结,本文主要采用 Anchor-free \text{Anchor-free} Anchor-free的方法进行识别,原因在于其拥有能够拓展到任意方向的能力。

四、方法描述

4.1 Location Sensitive Visual Recognition

  这一小节主要讲述下识别过程,不过多阐述,主要是能一起搞定的原因:三个任务都需要模型对位置敏感。

4.2 LSNet: A Unified Framework

  模型结构图:
在这里插入图片描述
  开始叙述一下处理流程:
  1、利用 ResNet or ResNetXt \text{ResNet or ResNetXt} ResNet or ResNetXt作为backbone提取图像特征,即 x ~ = f ( X ) {\tilde x}=f(X) x~=f(X),之后利用一个Anchor point 以及 Lanmarks来对 x ~ {\tilde x} x~ 进一步提取特征,记为 p = g ( x ~ ) ,  p  ∈ R ( N + 1 ) × 2 {\text p}=g({\tilde x}),~{\text p}{~}{\in}{\mathbb{R}^{(N+1){\times}2}} p=g(x~), p R(N+1)×2 p 0   ∈   R 2 {\text p}_{0}~{\in}{\mathbb ~R^2} p0  R2 对应着锚点, p n   ∈   R 2 {\text p}_{n}~{\in}{\mathbb ~R^2} pn  R2 对应着Landmarks。这个地方的N是最关键的,当N=4,36,17分别对应于目标检测、实例分割、姿态估计三大任务。
  接下来叙述模型主体结构的两阶段:1、利用backbone提取特征送入FPN来产生anchor point;2、将一系列的点限定在目标框里。
  额外措施:ATSS采样正负样本;利用DCN在预测出的标志点上提取特征。再之后讲一下模型的Loss设计,采用定位+分类损失作为监督方式,其中定位损失在两个阶段都包含了,而分类损失只在第二阶段被添加进去,位于DCN之后。
  接着点评下其他基于Anchor-free方法,CenterNet对于目标检测来说,预测超出了Anchor point的水平或垂直的集合,这限制了该方法找出极值点与提取显著性特征的能力;PolarMask使用一个极点坐标系来针对实例分割任务,但是很难处理目标在一些方向上多次交叉的情形,所以作者提出的方法很牛皮。

4.3 Cross IOU Loss

   cross-IOU Loss \text{cross-IOU Loss} cross-IOU Loss设计理念:根据三个任务的评估标准来反向操作一波。
  Anchor和Landmarks对应的GT可表示为: p ⋆ = ( p x ⋆ , p y ⋆ ) {\text p^{\star}}=({\text p_{x}^{\star},{\text p_{y}^{\star}}}) p=(px,py)
  锚框对应于Landmarks的偏移量可用笛卡尔坐标系表示为:
q n = [ ( p n , x − p 0 , x ) − , ( p n , x − p 0 , x ) + , ( p n , y − p 0 , y ) − , ( p n , y − p 0 , y ) + ] {\text q_{n}=[(p_{n,x}-p_{0,x})^-,(p_{n,x}-p_{0,x})^+,(p_{n,y}-p_{0,y})^-,(p_{n,y}-p_{0,y})^+]} qn=[(pn,xp0,x),(pn,xp0,x)+,(pn,yp0,y),(pn,yp0,y)+]
  其中, ( a ) −   &   ( a ) + (a)^- ~\& ~(a)^+ (a) & (a)+ 分别表示 max { − a , 0 }   &   max { a , 0 } {\text {max}}\{-a,0\}~\&~{\text{max}{\{}{a,0}{\}}} max{a,0} & max{a,0},因此最终的 cross-IOU Loss \text{cross-IOU Loss} cross-IOU Loss 记作:
cIOU ( q n , q n ⋆ ) = ∣ min { q n − q n ⋆ } ∣ 1 ∣ max { q n − q n ⋆ } ∣ 1 {\text {cIOU}({\text q}_{n},{\text q}_{n}^{\star})=\frac{|{{\text {min}}\{{\text q_n-q_n^\star{\}}}}|_{1}}{|{\text {max}}{\{}{{\text {q}}_{n}-{\text q}_{n}^{\star}{\}}|_{1}}}} cIOU(qn,qn)=max{qnqn}1min{qnqn}1
  其中, ∣ . ∣ |.| .表示 ℓ 1 − norm \ell_{1}-{\text {norm}} 1norm,用来衡量 prediction q n \text q_{n} qn 和 ground-truth q n ⋆ \text q_{n}^\star qn 的相似长度(最大重叠程度),最后定义的的 cross-IOU Loss \text{cross-IOU Loss} cross-IOU Loss 为:
L cIOU = 1 − 1 n ∑ n = 1 N cIOU ( q n , q n ⋆ ) {\mathcal L_{{\text {cIOU}}}=1-\frac {1}{n}{\sum}_{n=1}^{N}{\text {cIOU}{({\text {q}_{n}},{\text {q}_{n}^{\star}})}}} LcIOU=1n1n=1NcIOU(qn,qn)
  显然,当 p n = p n ⋆ {\text p_n}={\text p_n^\star} pn=pn 时, L cIOU = 0 {\mathcal L_{{\text {cIOU}}}=0} LcIOU=0。同时,作者在这里补充了细节部分,由于GT和预测有不同的符号( + or - \text{+ or -} + or -)时, L cIOU {\mathcal L_{{\text {cIOU}}}} LcIOU p n , x   &   p n , y p_{n,x} ~\&~ p_{n,y} pn,x & pn,y 上的梯度可能等于0,因此作者在附录A中设计了一种soft 预测来解决这种梯度消失问题。
  接下来说明一下这种设计的好处:1、可以拟合不同尺度的输入;2、不需要特定的超参数微调环节;3、缓和了FPN带来的一些问题;4、可以迁移到多边形(实例分割)和关键点(姿态估计)上。相反如果采用L1损失则会:1、对分辨率大的特征(图)更加敏感;2、忽视了来自相同向量内部的关系。

4.4 Pyramid DCN

在这里插入图片描述
  采用 DCN \text{DCN} DCN的目的:为了从标志点中提取特征进行识别。标准的 DCN \text{DCN} DCN有9个偏移量,而三个任务分别为4、36、17个偏移量。注意,论文中提及,为了避免从邻近区域中提取冗余向量,所以从候选的标志点中均匀采样9个点进行 DCN \text{DCN} DCN处理,之后再在DCN上建立更进一步的特征提取模型。

五、实验

5.1 Dataset and Evaluation Metrics

  数据集: MS-COCO 2017 dataset \text{MS-COCO 2017 dataset} MS-COCO 2017 dataset
  评估方法: AP

5.2 Implementation Details

  Backbone: ResNet、ResNeXt、Res2Net \text{ResNet、ResNeXt、Res2Net} ResNetResNeXtRes2Net ,在 ImageNet 预训练
  Neck: FPN \text{FPN} FPN
  最后生成向量的方式和数量:
  1、对于目标检测,为每个目标设置4个向量来学习四个极值点(上下左右)。具体一点来说,从目标mask中利用 ExtremeNet \text{ExtremeNet} ExtremeNet 来获得极值点的标注信息;
  2、对于实例分割和人体姿态估计,为每个实例设置36个向量来回归轮廓点位置进行实例分割,为每个实例设置17个向量来回归17个关键点。
  再后面是一些学习率、批量大小、卡的选择、epoch数等等,这里不细讲了。需要注意的地方只有这一部分了,关于正负样本的选择:
  1、在第一阶段,选择所有最接近目标中心的锚点作为正样本;
  2、在第二阶段,选择参考文献[64]中的 ATSS \text{ATSS} ATSS为每个目标分配锚点。

[64] S. Zhang, C. Chi, Y. Yao, Z. Lei, and S. Z. Li. Bridging the gap between anchor-based and anchor-free detection via adaptive training sample selection. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, pages 9759–9768, 2020. 3, 5, 6, 7

  然后是一个包含 class loss & focal loss & cross-IOU loss \text{class loss~\&~focal loss~\&~cross-IOU loss} class loss & focal loss & cross-IOU loss 的整体 Loss \text{Loss} Loss
L = L cls + β ⋅ L vector 1 + γ ⋅ vector 2 {\mathcal L={\mathcal L}_{\text {cls}}+{\beta}{\cdot}{\mathcal L}_{\text {vector}_{1}}+{\gamma}{\cdot}{\text {vector}_{2}}} L=Lcls+βLvector1+γvector2
  其中, β   = 1 \beta~=1 β =1 γ   = 2 \gamma~=2 γ =2 看得出来, cross-IOU \text{cross-IOU} cross-IOU 的权值给的挺大。然后非极大值抑制 NMS \text{NMS} NMS,阈值为0.6。

5.3 Object Detection

一些牛皮的数据

5.4 Instance Segmentation

一些牛皮的数据

5.5 Human Pose Estimation

一些牛皮的数据

六、Qualitative results for LSNet

主要是可视化的一些分析

七、结论

   LSNet \text{LSNet} LSNet 统一了三个任务,尤其是可以用在不同尺度上的 cross-IOU \text{cross-IOU} cross-IOU,采用关键点定义+定位目标很不错。

八、附录

A、The Softened Prediction Mechanism for Cross-IOU Loss

解决梯度可能变成0的问题(梯度消失):
在这里插入图片描述  这是对梯度为0时的设计,其中 q n \text{q}_{n} qn可以改写为 q n = [ q n , t , q n , l , q n , b , q n , r ] \text{q}_{n}=[q_{n,t},q_{n,l},q_{n,b},q_{n,r}] qn=[qn,t,qn,l,qn,b,qn,r], q n , t , q n , l , q n , b , q n , r q_{n,t},q_{n,l},q_{n,b},q_{n,r} qn,t,qn,l,qn,b,qn,r 全都大于0(强制大于0?)。对于GT值 q n ⋆ \text{q}_{n}^{\star} qn,同样分解为 q n , t ⋆ , q n , l ⋆ , q n , b ⋆ , q n , r ⋆ q_{n,t}^{\star},q_{n,l}^{\star},q_{n,b}^{\star},q_{n,r}^{\star} qn,t,qn,l,qn,b,qn,r,只不过最小边 q n , l ⋆ , q n , b ⋆ q_{n,l}^{\star},q_{n,b}^{\star} qn,l,qn,b 设为 α \alpha α 倍的 q n , l ⋆ , q n , b ⋆ q_{n,l}^{\star},q_{n,b}^{\star} qn,l,qn,b,在实验中, α = 0.2 \alpha=0.2 α=0.2
  如果在推理时,通过取笛卡尔坐标系中横纵向量中的最大值迁移到矩形坐标系来获得预测的偏移量,即 q n = [ max { q n , t , q n , b } , max { q n , l , q n , r } ] \text{q}_{n}=[{\text {max}}{\{}{q_{n,t},q_{n,b}}{\}},{\text {max}}{\{}{q_{n,l},q_{n,r}}{\}}] qn=[max{qn,t,qn,b},max{qn,l,qn,r}]
  说人话,也就是每个偏移量变成4个大于0的数,短边是长边的0.2倍,如果是在测试时,直接取水平和竖直方向最长边为偏移量进行计算。

B、Assign Samples by Keypoint-boxes to Improve Human Pose Estimation

  通过赋值给训练样本bbox的关键点标注(没有人体姿态点标注)的情况下,也就是训练的正样本中不包含只有bbox关键点标注的样本,这样提高人体姿态估计的性能。但是会削弱多尺度人体实例感知,也就是不能发现更多人了,从而证明了数据集中的标注是有bias的(并未标注小的人体)。如下图所示:在这里插入图片描述

总结

  小结一下吧,虽然文章已经阅读结束了,但是阅读源码仍然是一个痛苦的过程,继续淦~
  Ps:源码网络是用mmedection搭建的,也是个极难点,认真学习的话应该收获颇丰~
  推荐一下另外一篇文章,写的挺不错的,而且涉及到一些细节的补充,👍:LSNet: Anchor-free新玩法,只用一个head统一目标检测,实例分割,姿态估计三种任务

  记第二次修改时间:2021年8月20日,之前写的过于粗糙,这次精加工~

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐