YOLOv3: An Incremental Improvement论文阅读笔记

YOLOv3: An Incremental Improvement论文阅读笔记2018

Abstract

我们对YOLO做了一些更新,使用了一些小的设计来使它更好。我们也训练了一个比较大的新网络,它比上次的更大,但是更准确,同样速度很快。在320 * 320图像上,YOLOv3可以22ms处理一张图像,并取得28.2%的mAP,与SSD准确率相近,但是**倍。如果使用0.5IoU的评价方式,它可以51ms取得57.9%AP50,比RetinaNet相比,准确率相近,但是快了3.8倍。

1. Introduction

这篇论文更像是一个技术报告,所以不需要intros。首先会介绍YOLOv3,然后介绍我们做了什么和我们做了但是没有起作用的尝试,最后我们进行总结。

2. The Deal

对于YOLOv3,我们大部分吸取其他人的好的想法,我们也训练了一个新的分类网络,比其他的要好。下面我们从头介绍整个系统。YOLOv3: An Incremental Improvement论文阅读笔记

2.1 Bounding Box Prediction

与YOLO9000一样,我们使用维度聚类找到anchor尺度来预测bbox。网络对每个bbox预测4个坐标,tx、ty、tw、th,如果这个cell相对于图像左上角坐标offset为(cx,cy),先验框宽度和高度为px、ph,那么bbox预测为:

YOLOv3: An Incremental Improvement论文阅读笔记

训练期间,我们使用平方和误差loss,如果groundtruth的某个坐标为t*,我们预测为t,那么梯度即为t*-t,反转上面的公式很容易求出groundtruth的t值。

YOLOv3对每个bbox使用逻辑回归预测objectness值。如果某个先验框是与groundtruth重叠中最大的先验框,值应该为1。如果先验框不是最好的,但是超过了某个阈值,我们会忽略这个预测(与Faster R-CNN中一样,这个就当作既不是正样本也不是负样本)。我们使用阈值0.5,我们的系统对于每个groundtruth,只对应一个bbox先验框。如果先验框没有对应某个groundtruth,那么它对于坐标回归和class预测的loss没有贡献,只对objectness有。

YOLOv3: An Incremental Improvement论文阅读笔记

2.2 Class Prediction

每个box使用多标签分类预测bbox可能包含的类。我们不使用softmax因为我们发现它不是必需的,相反我们直接使用独立的逻辑分类器。训练期间,我们使用二分类的交叉熵loss作为分类预测。

这种形式当我们在更复杂领域比如OpenImagesDataset上很有帮助。在这个数据集上有很多的重叠标签(比如,女人和人)。使用softmax会强行使得每个box只有一个标签,多标签的方法更加适合。

2.3 Predictions Across Scales

YOLOv3在三个不同尺度上预测box。我们系统使用了与FPN网络相似的尺度提取特征。我们在我们的基础特征提取网络上加了一个卷积层。最后一层预测一个3-d的tensor,之中编码了bbox、objectness和class预测。我们的COCO实验中,我们在每个尺度预测3个box,所以这个tensor为 N*N*[3*(4+1+80)],即bbox的4个坐标,1个objectness、80个class预测。

接下来我们使用2层之前的特征图,然后将它上采样2倍。**我们同样使用了网络再之前的特征图,然后将它和我们的上采样的特征图进行融合(在通道维度上),这与FPN中一致。**这个方法可以使得我们可以从上采样的特征图上得到更有意义的语义信息,从更早的特征图中得到更细致的特征信息。然后我们添加了几个卷积层来处理组合的特征图,最后预测了一个相似的tensor,只不过尺寸 * 2。

我们又使用了一次上述操作,得到第三种尺度的特征图。

**我们仍使用k-means聚合来确定先验框尺寸,我们排序选择了9个聚类,在3个尺度上平均分配。**在COCO数据集上,这9个聚类为:(10 * 13)、(16 * 30)、(33 * 23)、(30 * 61)、(62 * 45)、(59 * 119)、(116 * 90)、(156 * 198)、(373 * 326)。

2.4 Feature Extractor

我们设计了一个新的特征提取网络,它是Darknet-19和新的残差网络的混合。我们的网络使用连续的3 * 3和1 * 1卷积层,同时也加了一些shortcut连接,并且更大了。它有53层卷积层,所以我们叫它Darknet-53。

YOLOv3: An Incremental Improvement论文阅读笔记

这个新的网络比Darknet-19更有力,且仍比ResNet-101或ResNet-152更有效率,下面是一些ImageNet上的结果:YOLOv3: An Incremental Improvement论文阅读笔记

每个网络都使用相同的设定训练,使用256 * 256进行测试。我们的网络效果达到SOTA,但是更少次的浮点运算且更快。Darknet-53比ResNet-101更好且快1.5倍,与ResNet效果近似,快2倍。

同样,我们的网络取得了最高的每秒浮点运算次数。这意味着网络结构更适合GPU,使得运算更高效。

2.5 Training

我们仍在整张图像上训练,没有使用hard negative mining或其他的stuff。我们使用了多尺度训练,许多数据增强,BN,这些标准的stuff。我们使用Darknet网络框架训练和测试。

3. How We Do

YOLOv3的效果很好,见表3。在COCO上,与SSD结果相近,但是快了3倍。仍然比一些其他的网络比如RetinaNet差。YOLOv3: An Incremental Improvement论文阅读笔记

当我们使用旧的标准,IoU0.5衡量mAP时(或表中AP50),YOLOv3非常强大。它几乎与RetinaNet效果近似,远超过SSD。然而当IoU的阈值增加,效果就变差了,这时因为YOLOv3对于将box完美框住目标表现稍差。

过去YOLO对于小目标效果很差,然而,现在我们不再这样。使用了新的多尺度预测,我们可以看到YOLOv3取得了相对高的APs表现,然而它在中等和大尺寸目标上相对弱一些。

当我们画出准确率和速度在AP50尺度上的关系图时(图5),我们看到YOLOv3超出其他系统很多,它就是更快更好的。YOLOv3: An Incremental Improvement论文阅读笔记

4. Things We Tried That Didn’t Work

下面是一些我们尝试过的stuff,但是没有起作用。

Anchor box x,y offset predictions.

我们尝试使用normal的anchor box预测方法,使用线性**函数预测x,y的offset,这个offset为相对于box宽度和高度的倍数。我们发现这种方法降低了模型的可靠性并且效果不够好。

Linear x,y predictions instead of logistic.

我们尝试使用一个线性**函数直接预测xy的offset,而不是逻辑**。这导致mAP下降了。

Focal loss.

我们尝试使用focal loss。它使得我们的mAP降低了2点。YOLOv3可能对于focalloss解决的问题已经足够鲁棒了,因为它有分离的objectness预测和条件class预测。因此对于大部分的样本,对于class预测没有loss。我们也不确定。

Dual IOU thresholds and truth assignment.

Faster R-CNN训练时使用了两个IoU的阈值。如果一个预测与groundtruth重叠超过0.7,那么是正样本;在[0.3-0.7]之间,忽略;小于0.3为负样本。我们尝试了相似的策略但是没有取得好的结果。

我们对目前的方法很有自信,它至少是一种局部最优解。同样,这些技术最终会取得好的结果,可能需要一些微调来使得训练更可靠。

5. What This All Means

YOLOv3是一个好的目标检测器,它快,且准确。在COCO的mAP计算方法中,它不够好,但是在旧的0.5IoU标准下,它很棒。YOLOv3: An Incremental Improvement论文阅读笔记

我们为什么要更换评价尺度呢?Russakovsky等人发现,人类很难区分IoU0.3-0.5的预测结果。如果人类都很难找到不同,那么我们为什么要使用这种评价尺度呢?

下面是作者的碎碎念…真是respect