【Abstract】
1.new network-resnet53
2.fast,bigger
320*320图像输入,V3能在22ms完成并且mAP有28.2,和SSD精度相当,且比其快3倍。
【Deal】
- boundingbox prediction
在YOLO9000后,系统开始使用dimension cluster选anchor box来预测boundingbox。网络会为每个boundingbox预测4个坐标:tx,ty,tw,th。如果目标cell和图像左上角的offset是(cx,cy),且其对应边界框宽高是pw,ph。那么网络的预测值为:

训练期间,我们会求和平方差损失。若gtbox是t‘,那梯度计算就是t‘-t,表示gt值和预测值的差。
YOLOV3使用logistic regression预测每个boundingbox的objetness score。如果boundingbox prior比其他boundingbox prior和gtbox的重叠率高,那值=1。像faster rcnn一样,如果boundingbox prior不是最高IOU但也有一定的IOU(阈值为0.5),那就忽略掉。与faster rcnn不同的是,系统只为每个gt对象分配一个boundingbox prior。如果boundingbox prior未分配给gt对象,就不用计算其坐标和类别损失,只要objectness

- class prediction
使用multilabel classification(多分类标签?)来预测可能包含的类。不使用softmax而使用independent logistic classifiers(独立的逻辑分类器)。在训练过程中,使用binary cross-entropy(二元交叉熵损失)进行类别预测
这个公式有助于转向更复杂的领域如Open Image Dataset。在这个数据集中有很多重复的标签(woman and person)。使用softmax会更加强调每个box只能有一个类别这个假设,但通常情况不是这样。多标签方法能更好地模拟数据
- prediction across scales
YOLOV3预测三种不同尺度的box。系统使用相同概念,提取不同尺度的特征,形成feature pyramid network(fpn)。在基本特征提取器(base feature extractor)中添加几个卷积层,最后预测成一个3维张量编码的boundingbox,objectness,class prediction。在coco上实验时,我们每个维度预测3个box,于是张量是N*N*[3*(4+1+80)]。其中4是boundingbox坐标,1是置信度,80是类别预测。
接下来我们从上两层取得feature map并将其上采样两倍,且又从网络中的较早版本获取feature map,并将其和我们刚才的上采样特征合并(merge it with our upsampled features using concatenation)。这种方法可以使我们能够从早期的特征映射中的上采样特征和更细粒度的信息中获得更有意义的语义信息(more meaningful semantic information)。然后我们添加几个卷积层来处理这个组合的特征图,最终预测一个相似的张量(尽管他现在是原来size的两倍)。
接着也是一样的流程处理最终尺度的boundingbox prior。
我们仍然使用k-mean sclustering 方法来确定我们的boundingbox prior(?先验框)。我们选择9个聚类clusters和3个尺度scales。在COCO数据集上,9个聚类是:
![]()
- feature extractor
使用新的骨干网络用于特征提取,其基于YOLOV2的darknet-19和其他新颖的残差网络的混合想法。
网络使用连续的3*3和1*1卷积层,且有一些shotcut连接,该网络明显更大。其有53个卷积层,所以称之为darknet-53


上面是YOLO V3的网络结构。
DBL:Darknetconv2d_BN_Leaky,卷积+BN+LeaklyRelu,是YOLOV3的基本组件。
resn:n代表res_block中含有res_unit的数量。
concat:张量拼接,将darknet中间层和后面的某一层的上采样进行拼接。拼接的操作和残差层add的操作是不一样的,拼接会扩充tensor的维度,而add只是直接相加不会导致tensor维度的改变。
这个新网络在性能上远超darknet-19,在效率上优于resnet-101和resnet-152,下表是在imagenet上的实验结果:

每个网络都使用相同的设置进行训练,输入256*256的图像进行单精度测试。运行环境为TianX。结果是Darknet-53在精度上可以与最先进的分类器相媲美,同时其浮点运算更少,速度更快。和resnet-101相比,darknet-53的速度是前者1.5倍;而resnet-152和其性能相似,但用时却是它的2倍以上。
darknet-53也可以实现每秒最高的浮点运算上限,意思是darknet-53的网络结构可以更好利用GPU,使其预测效率更高,速度更快。这主要是因为resnet的层数太多,效率不高。
- training
都是一些基础操作,multi-scale training、lots of data augmentation、batch normalization。
模型训练和测试的框架是darknet neural network。
【how we do】
YOLOV3的表现很好,就COCO数据集的平均mAP而言,其与SSD变体的分差不多但是速度提高了3倍。

可以发现,在IOU阈值设为0.5时YOLOV3非常强大,几乎与RetinaNet相当且远高于SSD变体,这也证明了它是一款非常灵活的检测器,可以为检测对象生成合适的boundingbox。然而随着IOU阈值增加,YOLOV3的性能也开始同步下降,这时其预测的boundingbox就无法做到完美对齐了。
在过去,YOLO一直致力于小object的目标检测,但随着multi-scale prediction的上线,YOLOV3将具备更高的APs性能。它目前在中大型object上的表现还相对较差,仍需进一步完善。
当我们基于AP50指标绘制精度和速度时,我们发现YOLOV3比其他检测系统更具优势,faster nad better。
【Things we tried that didn't work】
一些尝试了但没成功的案例:
- anchor box x,y offset predictions
我们尝试了常规的anchor box预测方法,比如线性激活将x,y的偏移程度预测为边界框宽度或高度的倍数,但我们发现这种做法降低了模型的稳定性且效果不佳。
- Linear x,y predictions instead of logistic
即用线性方法而不是逻辑方法预测直接预测x,y的offset。降低了mAP
- focal loss
尝试使用focal loss,但这样会让mAP降低,YOLOV3已经可以解决focal loss想要解决的事情了
- Dual IOU thresholds and truth assignment
在训练期间,faster rcnn用了两个IOU阈值,(如果预测框和和gtIOU>0.7,那他就是个正例。如果<0.7且>0.3,那就忽略,如果<0.3,那就是反例)在YOLOV3尝试了这种思路但效果不好

【what this all means】
YOLOV3是一个fast又accurate的检测器,虽然基于0.3和0.95的新指标时在COCO上表现一般,但在旧指标0.5上表现得很好。
而且我们也没必要改变指标,人类自己都难以分辨0.3和0.5的边界框
我们更应该思考一个问题,那就是这些detector的用处。
浙公网安备 33010602011771号