前言
最常用的斜框标注方式是在正框的基础上加一个旋转角度θ,其代数表示为(x_c,y_c,w,h,θ),其中(x_c,y_c )表示范围框中心点坐标,(w,h)表示范围框的宽和高[1,2,7]。对于该标注方式,如果将w和h的值互换,再将θ加上或者减去2kπ+π⁄2,就能够表示同一个范围框。由于同一个范围框有多种不同的数值表示,会导致近似范围框之间的数值差异有大大小小多种情况。如果近似范围框之间的数值差异大,对于基于监督分类的方法来说,就是损失函数的取值异常[7],不利于模型训练。此标注方式还有一种变形,标注正框时不是记录宽和高,而是记录中心点到四边的距离[6],当然同样会有损失异常的问题。
记录四个顶点的坐标也可以用于标注斜框,武大夏桂松和华科白翔团队制作的DOTA[4]数据集以及中国科学院大学模式识别与智能系统开发实验室标注的UCAS-AOD[5]数据集就采用了这种标注方式。由于可以从四个顶点中的任意一个开始记录,此标注方式导致同一个范围框有多种不同的数值表示,进而会导致损失异常[7],增加回归难度,不利于模型训练。避免损失异常的现行方式是按照坐标值排序顶点,然后计算对应坐标点之间的差异。这种处理方式也是有问题的,对坐标值排序会改变数值维度间的对应关系[8, 9],也就是说,在某次损失计算过程中预测向量的第一维对应真值向量的第二维,在另外一次损失计算过程中第一维可能对应第三维。这种对应关系的随机性同样不利于模型训练。记录四个顶点坐标的好处是可以表示任意四边形,但是在表示矩形时会有三个冗余量。一种去除冗余的方式是按顺时针顺序记录矩形四个顶点中的前两个和第二个顶点到第三个顶点的距离[7],但是同样会出现一个范围框有多种不同的数值表示。
还有一种斜框标注方式是记录斜框的外接正框以及斜框四个顶点与正框四个顶点顺时针方向的偏移量[8]。该标注方式同样可以表示任意四边形,如果只记录斜框量个顶点与正框两个顶点顺时针方向的偏移量就只能表示矩形框[9]。目前没有用该标注方式标注样本的,而是用于先预测正框再进一步预测真实的斜框,在预测正框时将锚点框向斜框的外接正框回归。但是要想斜框预测得准确就要求正框也得预测准确,增加了预测目标数量,也就增加了回归难度,同样不利于模型训练。
本文提供了一种矩形斜框标注方式,可以用作样本标注和模型的回归目标。该标注方式没有冗余量,同一个范围框只有一种数值表示,作为回归目标时不会出现损失异常,有利于模型训练。本文还将此标注方式与多种其他倾斜范围框标注方式在目标检测任务上进行了对比验证。对比实验证明此标注方式对于朝向任意、密集排布的目标检测具有一定的优势。
标注方法
本文提供的斜框标注方式用于标注的量有“中心点C的坐标、中心点到任意一个顶点D的向量□((CD) ⃗ )、C到D的一个相邻顶点E的向量□((CE) ⃗ )在□((CD) ⃗ )上的投影向量□((CP) ⃗ )与□((CD) ⃗ )的比例系数”,代数表示为(x_c,y_c,u,v,ρ),其中(x_c,y_c )为中心点C的坐标,(u,v)为向量□((CD) ⃗ )的坐标,ρ为向量□((CP) ⃗ )与□((CD) ⃗ )的比例系数。
图1中黑实线表示倾斜范围框,X表示表示图像行方向上的坐标轴,Y表示图像列方向上的坐标轴,C表示范围框的中心点,D、E为范围框的某两个顶点,P为□((CE) ⃗ )在□((CD) ⃗ )上的投影点。
由于向量□((CD) ⃗ )可以从四个中任取,□((CE) ⃗ )向量可以从两个中任取,必须提供一些外在约束确保标注方式数值表示的唯一性。首先,要求ρ的取值范围为[0,1) ,也就是□((CP) ⃗ )与□((CD) ⃗ )同向;另外要求从□((CD) ⃗ )到□((CE) ⃗ )的夹角只能是顺时针方向或者逆时针方向中的一种。
如此一来,同一个范围框只有两种数值表示。也就是说,将向量□((CD) ⃗ )取反,但保持其它值不变,仍然表示同一个范围框。由于同一个范围框的两种表示之间只有向量(CD) ⃗是相反的,可以引入一个量s表示(CD) ⃗的两个分量是同正负的还是一正一负的(后文将称之为同号或异号,可见s只有两种取值),那么可以用(|u|,|v|,s)表示(CD) ⃗和-(CD) ⃗。同号时,(CD) ⃗和-(CD) ⃗分别为(|u|,|v| )和(-|u|,-|v| );异号时,(CD) ⃗和-(CD) ⃗分别为(-|u|,|v| )和(|u|,-|v| )。此时就可以将同一个范围框的数值表示减少到一个,其代数表示为(x_c,y_c,|u|,|v|,s,ρ)。
从图1中还可以看出,如果是正框,显然向量(CD) ⃗的坐标就是范围框宽高的一半。可以通过令(u,v)=2(CD) ⃗使该标注方式与正框的相应标注方式兼容。
求解顶点坐标和边长
在给定标注数值(x_c,y_c,|u|,|v|,s,ρ)时,向量□((CD) ⃗ )就是已知的,向量□((CP) ⃗ )可以表示为□(ρ(CD) ⃗ )。那么要获得范围框四个顶点的坐标,将引入的外部约束用方程进行表示,通过求解以下方程组的实现。
方程组中的第一个式子表示向量□((EP) ⃗ )与向量□((CD) ⃗ )垂直,第二个式子表示向量□((CP) ⃗ )与向量□((CD) ⃗ )的长度相等,第三个式子表示从□((CD) ⃗ )到□((CE) ⃗ )的夹角只能是顺时针方向或者逆时针方向中的一种。第三个式子只取用一个即可。
范围框的边长可以用下式计算。
式中w_b是范围框的短边长度,h_b是范围框的长边长度。
正方形范围框
易知,在范围框是正方形时,即使满足前述约束条件,仍然有两种数值表示。取任意一个顶点作为参考向量□((CD) ⃗ ),中心点到其顺时针或逆时针方向的相邻顶点的向量在□((CD) ⃗ )上的投影总是0。如果ρ的取值不允许为0,就不能表示正方形范围框,虽然正方形范围框非常少见。
我们解决方案是,为正方形范围框引入额外的约束:□((CD) ⃗ )与X轴夹角的取值范围为[ 0,90) 度。这这个约束条件下,□((CD) ⃗ )只能落在X轴上或者第一、三象限。
s的损失平滑
图3中实线和虚线范围框的s值不同,但是它们却是非常近似的范围框。因此s值的差异不能真实体现范围框之间的差异。容易看出,□((CD) ⃗ )与坐标轴的夹角越小,s的差异越是不能真实体现范围框之间的差异。
□((CD) ⃗ )与坐标的夹角越小,□((CD) ⃗ )的两个分量的模之间的差异越大。当□((CD) ⃗ )的两个分量的模之间的差异大到一定程度后,为s的差值乘上一个很小的权重来平滑s的差异与范围框的真实差异间的错配。
我们首先设计了一个函数用于度量□((CD) ⃗ )的两个分量的模之间的差异。
其中|u|,|v|分别是□((CD) ⃗ )的两个分量的模。可见diff的取值范围为[0,1],当|u|,|v|相等时取零,当其中一个为0时取1。在公式(4)中采用了平方函数,实际应用中,为了加快计算速度推荐使用求绝对值函数。然后将diff代入反Sigmoid函数求出s损失的权重。(PS:相减除以相加是常用的评估两个数量之间相对差异的方式,比如NDVI、NDWI。)
后记
弄这个东西纯属于临时起意,早些时候为公司做了一个基于深度学习的遥感影像目标检测软件,总觉得当时用的范围框标注方式不够好。抽了个时间琢磨了一下,设计了这样一种标注方法。先写好了专利,觉得把时间投入到深度学习里纯属于浪费生命,问了几个人是否愿意参与进来做个实验,我来写个论文,一作让出去;然而他们不是没空,就是水平没到。
这个标注方式确实还有点价值,不想给埋没了,只得自己动手,设计了一个目标检测网络,在一些数据集上初步试验了效果,写了论文的初稿。恰好用了一个月的时间,下面那个分割算法仓库的提交日志记录下来了时间,2-15到3-15。
最终论文会发表到国内某个学报上。发论文不是目的,都是先写专利,论文从专利说明书改出来的。专利说明书中文写的,也不想翻译,发中文期刊省事。
这里仅介绍了范围框标注方式,正式发表的论文里还包含了一个用于对比验证这个标注方式的网络,还有一些试验数据和结论。关于那个目标检测网络没啥好说的,结构简单不新奇。有了这个标注方式,诸位可以轻松想到,或者想到更好的。另外……
论文出来之后,代码将会公开到tgis-top/TRD。
引用
[1] Shaoqing Ren, Kaiming He, Ross Girshick, and Jian Sun. Faster r-cnn: towards real-time object detection with region proposal networks. In IEEE Transactions on Pattern Analysis and Machine Intelligence, (6):1137–1149, 2017.
[2] Joseph Redmon, Santosh Divvala, Ross Girshick and Ali Farhadi. You only look once: Unified, real-time object detection. In Proc. of CVPR, p779–788, 2016.
[3] Wei Liu, Dragomir Anguelov, Dumitru Erhan, Christian Szegedy, Scott Reed, Cheng-Yang Fu, and Alexander C Berg. Ssd: Single shot multibox detector. In ECCV, p21–37. Springer, 2016.
[4] Gui-Song Xia, Xiang Bai, Jian Ding, Zhen Zhu, Serge Belongie, Jiebo Luo, Mihai Datcu, Marcello Pelillo, and Liangpei Zhang. DOTA: A Large-scale Dataset for Object Detection in Aerial Images. In CVPR, 2018.
[5] Haigang Zhu, Xiaogang Chen, Weiqun Dai, Kun Fu, Qixiang Ye, Jianbin Jiao. Orientation Robust Object Detection in Aerial Images Using Deep Convolutional Neural Network. IEEE Int'l Conf. Image Processing, 2015.
[6] Xinyu Zhou, Cong Yao, He Wen, Yuzhi Wang, Shuchang Zhou, Weiran He, and Jiajun Liang. East: an efficient andaccurate scene text detector. In Proc. CVPR, p2642–2651, 2017.
[7] Yingying Jiang, Xiangyu Zhu, Xiaobing Wang, Shuli Yang,Wei Li, Hua Wang, Pei Fu, and Zhenbo Luo. R2cnn: rotational region cnn for orientation robust scene text detection. arXiv:1706.09579, 2017.
[8] Xue Yang,Jirui Yang, Junchi Yan, Yue Zhang, Tengfei Zhang, Zhi Guo, Sun Xian, and Kun Fu. SCRDet: Towards More Robust Detection for Small, Cluttered and Rotated Objs. In ICCV, 2019.
[9] Yongchao Xu, Mingtao Fu, Qimeng Wang, Yukang Wang, Kai Chen, Gui-Song Xia, and Xiang Bai. Gliding vertex on the horizontal bounding box for multi-oriented obj detection. arXiv:1911.09358, 2019.
[10] Youtian Lin, Pengming Feng, and Jian Guan. IENet: Interacting Embranchment One Stage Anchor Free Detector for Orientation Aerial Object Detection. arXiv:1912.00969, 2019.
[11] Tsung-Yi Lin, Piotr Doll ́ar, Ross B Girshick, Kaiming He, Bharath Hariharan, and Serge J Belongie. Feature pyramid networks for object detection. In Proc. of CVPR, vol 1, page 4, 2017.
[12] Kaiming He, Xiangyu Zhang, Shaoqing Ren, and Jian Sun. Deep residual learning for image recognition. In Proc. of CVPR, pages 770–778, 2016.