在竞技中磨砺,在实战中成长
集结超千名数据科学家报名参加
惠普Z系列算法大赛火热进行中
在这里,切磋交流,彰显技术实力
在这里,快速学习,提升算法技能
在这里,创意无限,解锁极智镜界
合Z之力 解锁极智境界
“惠普Z系列算法大赛”报名倒计时
为帮助大家勇夺佳绩
奉上解题算法指南
理清思路,创新算法
欢迎数据科学家来挑战!

【赛题简介】
本次惠普Z系列算法大赛主要聚焦在卫星/无人机遥感场景,大赛官方将提供场景数据,由参赛者检测道路车辆,在本地完成“带角度信息的目标检测”并调试算法,在线提交结果。
【算法简介】
本次为大家带来的解题思路,是利用YOLOv3目标检测方法,在融合DRBox算法思想的基础上完成对各类旋转车辆目标的定位与分类。
1.1 YOLOv3算法简介
随着目标检测方法各种不同思想的融会贯通,YOLO系列检测算法经历了从YOLOv1到YOLOv2,再到如今YOLOv3的迭代过程。
YOLOv1是Joseph Redmon等人于2015年提出的单阶段目标检测算法。其将输入图片划分为S×S个网格,每个网格负责预测中心点落到该处的目标。具体来说,整个网络最后输出(B×5+C)个S×S的特征图,其中B表示每个网络会预测B个边框,每个边框包括5个预测值,分别是x, y, w, h和confidence;C则表示B个边框共享的C类目标概率。在当时的实时检测算法中,YOLOv1的检测效果是最好的。然而,其最大的缺点在于检测精度明显较低。
考虑到YOLOv1的检测精度较差,Joseph Redmon等人于2017年提出了更新的YOLOv2检测算法。YOLOv2重点解决了召回率和定位精度方面的误差,相较于YOLOv1进行了以下一些改进:提高了分类网络训练的图像分辨率;引入了Faster R-CNN中anchor box的思想;对网络结构的设计进行了改进;输出层使用卷积层替代YOLO的全连接层等,从而在识别精度、定位精度和检测速度等方面都有大大提升。

图1-1 YOLOv3与其他方法在COCO上的性能比较
YOLOv3则是在YOLOv2的基础上,吸收SSD中多层检测、FPN特征金字塔以及ResNet更好的基础网络等思想提出的更精准的检测方法。其在COCO上的性能如图1-1所示。
相比于YOLOv2,YOLOv3从以下几个方面进行了改进:
1)采用多标签分类来替代之前的多交叉熵分类:每个候选框采用多标签的方式进行分类,即采用二值交叉熵来进行候选框类别的学习。当预测的目标类别较复杂,且存在重叠情况时,这种分类方式十分有效;
2)采用多尺度特征进行预测:借鉴SSD和FPN的思想,YOLOv3在三个不同尺度的特征图上进行预测,分别为scale1(13×13)、scale2(26×26)和scale3(52×52)。同时,在scale2和scale3上,采用高层特征上采样后和低层特征进行融合后的特征进行预测;
3)设置更多、更有效的先验框:YOLOv3延续了YOLOv2利用聚类统计的方式来获取先验框宽高的设置,由于预测层数的变多,YOLOv3总共设置了9个尺度的先验框,并且平均分布于每个尺度的预测层上(即对于每个尺度的预测层,其每个特征点对应3个先验框,13×13对应较大的3个,52×52对应较小的3个,26×26对应余下的3个);
4)利用更强大的特征提取网络:YOLOv3结合ResNet和NIN的思想,提出了更加高效的backbone,名为darknet-53。Darknet-53在保留相对较低计算量的同时,分类精度可媲美ResNet-101,甚至ResNet-152。
在YOLOv3后,出现了少量基于该框架的一些检测方法,分别如下:
1)GIoU(CVPR 2019):在目前大多数目标检测算法中,常常采用L2、L1或者Smooth L1 Loss的方式来进行边框调整的训练,然而在评测的时候却利用IoU来判断是否检测到目标。这两种方式显然存在不一致性,即无法用上述度量来决定IoU的好坏。针对这一问题,GIoU提出了一种更加普适的度量,直接利用GIoU进行损失的计算和梯度反传,从而使得目标检测精度更高。
2)Gaussian YOLOv3(ICCV 2019):参考KL Loss,Gaussian YOLOv3在YOLOv3的基础上,采用高斯模型来预测边框。即对于每个预测框来说,从之前的(

)变为(

),其中
表示边框的坐标,
表示各坐标的不确定性。在最终获取目标置信度时,采用边框包含目标概率、目标类别概率和边框确定性三部分的乘积,即
。这里的
采用的是上述四个方差的平均。
详细可参考:https://github.com/pjreddie/darknet
1.2 DRBox旋转框思想简介

图1-2 DRBox(基于SSD)算法示意图
DRBox采用定向框来克服遥感图像中水平检测框的困难。定向框是一个带有angle参数的矩形,用于定义其方向。其需要五个参数来回归其位置,大小和方向。与水平检测框相比,定向框更紧密地围绕了目标的轮廓,比水平框包含更少的背景像素,因此目标和背景之间的分类更容易。
详细可参考:
(DRBox)
https://github.com/liulei01/DRBo
(DRBoxv2)
https://github.com/ZongxuPan/DrBox-v2-tensorflow
1.3 推荐思路
传统的YOLOv3采用无旋转矩形框的方式来检测目标,与之相关的操作也基本保持这个特性,例如先验框的设定,训练过程中匹配先验框的机制以及NMS过程中IoU的计算等。而在旋转矩形建模下,其最大的不同在于额外引入了旋转角θ。因此,上述相关的操作过程要根据进行调整。
1.3.1 先验框设置
在原始的YOLOv3中,主要包含以下一些先验框。这里以基础网络为darknet-53,网络输入大小为416×416举例说明。
1)scale1(13×13):在该尺度特征图上,每个点对应3个不同大小的先验框,分别是[116,90],[156,198]和[373,326],如图3-3所示。

图3-3 scale1(13×13)传统矩形先验框示例图
2)scale2(26×26):在该尺度特征图上,每个点同样对应3个不同大小的先验框,分别是[30,61],[62,45]和[59,119],如图3-4所示。

图3-4 scale2(26×26)传统矩形先验框示例图
先验框放大4倍显示
3)scale3(52×52):在该尺度特征图上,每个点同样对应3个不同大小的先验框,分别是[10,13],[16,20]和[33,23],如图3-5所示。

图3-5 scale3(52×52)传统矩形先验框示例图
先验框放大8倍显示
在保持每个尺度上先验框大小不变的情况下,我们为每个先验框增加了旋转角度,旋转角度以30°的间隔从0°开始变化到330°。每个尺度带旋转角度的先验框分别如图3-6、3-7和3-8所示。

图3-6 scale1(13×13)旋转矩形先验框示例图

图3-7 scale2(26×26)旋转矩形先验框示例图
先验框放大4倍显示

图3-8 scale3(52×52)旋转矩形先验框示例图
先验框放大8倍显示
1.3.2 先验框与目标框匹配
YOLOv3在匹配的过程中,首先初始化每个尺度的先验框为背景区域,即令Objectness的ground-truth为0;然后对于每个目标框,找到与其最佳匹配的先验框,令其Objectness的ground-truth为1,同时根据先验框的分类和边框回归偏置值进行梯度反传,之后不断迭代优化。
在传统矩形先验框下,一般采用IoU的度量来获取每个目标的最佳匹配。IoU定义如下:

基于传统IoU,旋转矩形之间的匹配度量ArIoU在保持框位置和大小的情况下,同时引入了角度之间的差异,具体如下:

其中A表示目标框,旋转角度为

;B表示先验框,旋转角度为

;

表示将先验框B绕中心点旋转,使得其与目标框A具有同样的旋转角度。因此,ArIoU相当于在传统IoU的基础了,多了

。
在每种尺度预测层上的匹配过程中,对于每个旋转矩形目标,首先获取其所对应的网格;然后在该网格中找到与其最佳匹配的旋转先验框,若该先验框正好处于当前尺度下,则该先验框与当前目标框进行匹配,并根据先验框的分类和边框回归偏置值进行梯度反传,之后不断迭代优化。
1.3.3 先验框与目标框匹配
在原始传统矩形框检测下,YOLOv3会在三个尺度上进行预测,假设尺度表示为

。同时对于每个尺度特征图上的点,会设置M个先验框,每个先验框会预测

个数值,分别是边框偏移量(

),置信度C以及属于每个类别的概率。
尽管在YOLOv3的技术报告中没有提到损失函数的具体定义,但根据对源码和其之前系列检测算法的了解,损失函数包含三个部分,一是采用欧式距离损失计算边框偏移量的预测误差,二是采用logistic回归损失定义信度C的预测误差,最后是采用logistic回归损失定义多标签P分类的预测误差。具体形式表示如下:

其中,

在加入旋转角度后,网络预测的边框偏移量变成(
)。因此,网络的损失增加了预测角度的误差。另外,由于先验框引入了角度维度,网络预测量也成倍增多。新的损失形式如下:

其中,

1.3.4 NMS过程
在NMS中,预测旋转框之间的度量采用与匹配过程中类似的ArIoU形式。由于在实际预测过程中,同一位置一般仅包含一个目标,因此对于角度相差180°的预测框也因同样抑制。故而在这个过程的度量,一般忽略目标头和尾的朝向。忽略朝向后的度量如下所示:

了解算法指南后
是否跃跃欲试
展示你的算法创意?
快来参加惠普Z系列算法大赛
和数据科学家们一起竞技吧!
【任务时间】
大赛日程报名及模型提交
9月29日-11月24日
成绩评审
11月25日-12月7日
结果公布
12月8日
【任务奖励】
丰厚奖金等你来拿
10万元奖金池
将由组委会评选出的6支优秀参赛团队瓜分
一等奖1名 奖金3万元
二等奖2名 奖金2万元
三等奖3名 奖金1万元
扫码报名参赛↓