今天和大家分享一篇ECCV2020中关于旋转目标检测的文章:

源码地址:https://github.com/clobotics/piou

论文地址:https://arxiv.org/abs/2007.09584

动机

在检测旋转目标时,使用传统的Smooth L1损失会更关注减小角度误差(angle error)而不是减小全局IoU。如下图中图(a)所示,图中绿色的框是预测得到的Bounding Box,红色的框是ground truth。
在这里插入图片描述

在图(a)中,虽然2个目标的IOU一致,但是明显看到“细长”的目标检测得不太好。专注于减小角度误差很容易使得远离中心的点在Bounding Box外面。

为了解决上述问题,作者提出了PIoU(Pixels-IoU),并以此为基础构造PIoU损失,从图(b)可以看出,相比于Smooth L1损失,PIoU损失对于图中的“细长”目标有较大的值,因此能对其检测结果进一步优化。

PIoU(Pixels-IoU)Loss

假设存在一个Bounding Box和一个点,如下图中图(a)所示
在这里插入图片描述
定义如下指示函数用来表示点是否在Bounding Box内部:

δ(pi,j∣b)={1,di,jw≤w2,di,jh≤h20, otherwise \delta\left(\boldsymbol{p}_{i, j} \mid \boldsymbol{b}\right)=\left\{\begin{array}{ll} 1, & d_{i, j}^{w} \leq \frac{w}{2}, d_{i, j}^{h} \leq \frac{h}{2} \\ 0, & \text { otherwise } \end{array}\right.δ(pi,jb)={1,0,di,jw2w,di,jh2h otherwise 

定义两个框的“intersection area”Sb∩b′S_{b \cap b^{\prime}}Sbb和“union area”Sb∪b′S_{\boldsymbol{b} \cup \boldsymbol{b}^{\prime}}Sbb:

Sb∩b′=∑pi,j∈Bb,b′δ(pi,j∣b)δ(pi,j∣b′)Sb∪b′=∑pi,j∈Bb,b′δ(pi,j∣b)+δ(pi,j∣b′)−δ(pi,j∣b)δ(pi,j∣b′)\begin{array}{c} S_{b \cap b^{\prime}}=\sum_{p_{i, j} \in B_{b, b^{\prime}}} \delta\left(\boldsymbol{p}_{i, j} \mid \boldsymbol{b}\right) \delta\left(\boldsymbol{p}_{i, j} \mid \boldsymbol{b}^{\prime}\right) \\ S_{\boldsymbol{b} \cup \boldsymbol{b}^{\prime}}=\sum_{\boldsymbol{p}_{i, j} \in B_{b, b^{\prime}}} \delta\left(\boldsymbol{p}_{i, j} \mid \boldsymbol{b}\right)+\delta\left(\boldsymbol{p}_{i, j} \mid \boldsymbol{b}^{\prime}\right)-\delta\left(\boldsymbol{p}_{i, j} \mid \boldsymbol{b}\right) \delta\left(\boldsymbol{p}_{i, j} \mid \boldsymbol{b}^{\prime}\right) \end{array}Sbb=pi,jBb,bδ(pi,jb)δ(pi,jb)Sbb=pi,jBb,bδ(pi,jb)+δ(pi,jb)δ(pi,jb)δ(pi,jb)

上式中的Bb,b′B_{b, b^{\prime}}Bb,b表示能包含bbbb′b^{\prime}b的最小水平框。

上述公式可以用来表示PIoU,但是不可微,无法用于反向传播中。因此作者使用如下公式近似上文中的指示函数:

F(pi,j∣b)=K(di,jw,w)K(di,jh,h)F\left(\boldsymbol{p}_{i, j} \mid \boldsymbol{b}\right)=K\left(d_{i, j}^{w}, w\right) K\left(d_{i, j}^{h}, h\right)F(pi,jb)=K(di,jw,w)K(di,jh,h)

K(d,s)=1−11+e−k(d−s)K(d, s)=1 - \frac{1}{1+e^{-k(d-s)}}K(d,s)=11+ek(ds)1

F(pi,j∣b)F\left(\boldsymbol{p}_{i, j} \mid \boldsymbol{b}\right)F(pi,jb)的函数图如上图中图(b)所示。因此两个框的“intersection area”Sb∩b′S_{b \cap b^{\prime}}Sbb和“union area”Sb∪b′S_{\boldsymbol{b} \cup \boldsymbol{b}^{\prime}}Sbb可以近似表示为:

Sb∩b′≈∑pi,j∈Bb,b′F(pi,j∣b)F(pi,j∣b′)Sb∪b′≈∑pi,j∈Bb,b′F(pi,j∣b)+F(pi,j∣b′)−F(pi,j∣b)F(pi,j∣b′)\begin{array}{c} S_{b \cap b^{\prime}} \approx \sum_{p_{i, j} \in B_{b, b^{\prime}}} F\left(\boldsymbol{p}_{i, j} \mid \boldsymbol{b}\right) F\left(\boldsymbol{p}_{i, j} \mid \boldsymbol{b}^{\prime}\right) \\ S_{\boldsymbol{b} \cup \boldsymbol{b}^{\prime}} \approx \sum_{\boldsymbol{p}_{i, j} \in B_{b, b^{\prime}}} F\left(\boldsymbol{p}_{i, j} \mid \boldsymbol{b}\right)+F\left(\boldsymbol{p}_{i, j} \mid \boldsymbol{b}^{\prime}\right)-F\left(\boldsymbol{p}_{i, j} \mid \boldsymbol{b}\right) F\left(\boldsymbol{p}_{i, j} \mid \boldsymbol{b}^{\prime}\right) \end{array}Sbbpi,jBb,bF(pi,jb)F(pi,jb)Sbbpi,jBb,bF(pi,jb)+F(pi,jb)F(pi,jb)F(pi,jb)

在实际使用时,为减少计算量,使用如下公式近似表示Sb∪b′S_{\boldsymbol{b} \cup \boldsymbol{b}^{\prime}}Sbb

Sb∪b′=w×h+w′×h′−Sb∩b′S_{\boldsymbol{b} \cup \boldsymbol{b}^{\prime}}=w \times h+w^{\prime} \times h^{\prime}-S_{\boldsymbol{b} \cap \boldsymbol{b}^{\prime}}Sbb=w×h+w×hSbb

PIoU可以表示为:

PIoU(b,b′)=Sb∩b′Sb∪b′P I o U\left(\boldsymbol{b}, \boldsymbol{b}^{\prime}\right)=\frac{S_{\boldsymbol{b} \cap \boldsymbol{b}^{\prime}}}{S_{\boldsymbol{b} \cup \boldsymbol{b}^{\prime}}}PIoU(b,b)=SbbSbb

定义PIoU损失如下:

Lpiou=−∑(b,b′)∈Mln⁡PIoU⁡(b,b′)∣M∣L_{p i o u}=\frac{-\sum_{\left(\boldsymbol{b}, \boldsymbol{b}^{\prime}\right) \in M} \ln P \operatorname{IoU}\left(\boldsymbol{b}, \boldsymbol{b}^{\prime}\right)}{|M|}Lpiou=M(b,b)MlnPIoU(b,b)

上式中的bbb表示预测框,b′{b}^{\prime}b表示ground truth。M表示预测框和ground truth的匹配集合,当2者IoU大于0.5时认为匹配。

PIoU损失的示意图如下图所示:
在这里插入图片描述

实验结果

在baseline检测器的基础上使用PIoU损失的性能提升情况如下所示:

  • Retail50K(本文提出的公开数据集)在这里插入图片描述
  • HRSC2016
    在这里插入图片描述
  • DOTA
    在这里插入图片描述
    如果你对计算机视觉中的目标检测、分割、跟踪、轻量化网络感兴趣,欢迎关注公众号一起交流~
    在这里插入图片描述

更多推荐