查看原文
其他

惠普Z系列算法大赛核心解题思路和技巧快来Get!

CSDN 2022-12-07


在竞技中磨砺,在实战中成长
集结超千名数据科学家报名参加惠普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万元

扫码报名参赛

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存