PIoU Loss|用于提高旋转目标检测器性能的新型损失函数
今天和大家分享一篇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,j∣b)={1,0,di,jw≤2w,di,jh≤2h otherwise
定义两个框的“intersection area”Sb∩b′S_{b \cap b^{\prime}}Sb∩b′和“union area”Sb∪b′S_{\boldsymbol{b} \cup \boldsymbol{b}^{\prime}}Sb∪b′:
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}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′)
上式中的Bb,b′B_{b, b^{\prime}}Bb,b′表示能包含bbb和b′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,j∣b)=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)=1−1+e−k(d−s)1
F(pi,j∣b)F\left(\boldsymbol{p}_{i, j} \mid \boldsymbol{b}\right)F(pi,j∣b)的函数图如上图中图(b)所示。因此两个框的“intersection area”Sb∩b′S_{b \cap b^{\prime}}Sb∩b′和“union area”Sb∪b′S_{\boldsymbol{b} \cup \boldsymbol{b}^{\prime}}Sb∪b′可以近似表示为:
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}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′)
在实际使用时,为减少计算量,使用如下公式近似表示Sb∪b′S_{\boldsymbol{b} \cup \boldsymbol{b}^{\prime}}Sb∪b′:
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}}Sb∪b′=w×h+w′×h′−Sb∩b′
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′)=Sb∪b′Sb∩b′
定义PIoU损失如下:
Lpiou=−∑(b,b′)∈MlnPIoU(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

如果你对计算机视觉中的目标检测、分割、跟踪、轻量化网络感兴趣,欢迎关注公众号一起交流~

更多推荐



所有评论(0)