【论文阅读】YOLO-X:Exceeding YOLO Series in 2021

题目: YOLOX: Exceeding YOLO Series in 2021
作者: Zheng Ge Songtao Liu Feng Wang Zeming Li Jian Sun

motivation:
作者想把yolo检测器改为anchor-freee的方发进行目标检测。

method:
先上张厉害的图:力压efficientdet.
【论文阅读】YOLO-X:Exceeding YOLO Series in 2021_第1张图片
训练细节:
Baseline:YOLOv3

300epoch的训练长度,其中,前5个epoch使用warmup学习率策略;
优化器使用标配的SGD;
学习率:其中初始学习率 0.01。使用余弦学习率策略;
batch size为128,使用8块GPU
多尺度训练:448-832,不再是以往的320-608了。这应该是追求large input size的涨点。
Backbone就是v3所使用的DarkNet-53。
预测部分加入了IoU-aware分支,这一点应该是和PP-YOLO是对齐的
损失函数:obj分支和cls分支还是使用BCE,reg分支则使用IoU loss;
使用EMA训练技巧;
数据增强仅使用RandomHorizontalFlip、ColorJitter以及多尺度训练,不使用randomResizedCrop,作者认为RandomResizedCrop和Mosaic有点重合了。由于后续会上Mosaic Augmentation,所以这里暂时先不要了。

Decoupled Head:

【论文阅读】YOLO-X:Exceeding YOLO Series in 2021_第2张图片
【论文阅读】YOLO-X:Exceeding YOLO Series in 2021_第3张图片
anchor-free:

YOLOX作者便去掉了anchor box,和FCOS一样,每个grid都只预测一个目标。
去掉了anchor box,也就是去掉了size的先验,故而FPN肯定会出现问题:如何做尺度分配?对于这一问题,YOLOX直接使用FCOS的路子,预先设定一个尺寸范围,根绝每个gt的size来判断应该分配到哪个尺度上去。这个预先设定的size范围,论文里没有给出,就需要我们自己去看源码了,但这个不是实质问题,不影响后续的阅读。
对于一个给定的gt边界框,首先根据它的size确定所匹配的尺度,然后就和YOLOv3一样了,计算它在这个尺度上的中心点位置,计算中心点偏差 ,至于宽高 ,就直接作为回归目标。

Multi positives
在完成了anchor-free化的改进后,我们会发现一个问题,那就是一个gt框只有一个正样本,也就是one-to-one,这个问题所带来的最大阻碍就是训练时间会很长,同时收敛速度很慢。为了缓解这一问题,YOLOX作者便自然想到可以增加正样本的数量,使用one-to-many策略。
很简单,之前只考虑中心点所在的网格,这会改成以中心点所在的网格的3x3邻域,都作为正样本,直观上来看,正样本数量增加至9倍。每个grid都去学到目标中心点的偏移量和宽高,此时,显然这个中心点偏移量不再是01了,这一点细节的变化需要留意一下。

simOTA:
整体代码逻辑:

1、确定正样本候选区域。

2、计算anchor与gt的iou。

3、在候选区域内计算cost。

4、使用iou确定每个gt的dynamic_k。

5、为每个gt取cost排名最小的前dynamic_k个anchor作为正样本,其余为负样本。

6、使用正负样本计算loss。

experiments:
【论文阅读】YOLO-X:Exceeding YOLO Series in 2021_第4张图片

【论文阅读】YOLO-X:Exceeding YOLO Series in 2021_第5张图片

你可能感兴趣的:(论文阅读)