YOLOV3与FasterRCNN相比较,最最明显的使用特征就是快!训练同样的数据集,训练速度比FasterRCNN快了几倍。

图像特征提取采用的是Darknet-53的网络结构,含有53个卷积层,并借鉴了残差网络的做法,在一些层之间设置了快捷链路(shortcut connections)。

Darknet-53网络除去最后一个FC,总共52个卷积用于当做主体网络,主体网络被分成三个stage,结构类似FPN,1-26层卷积为stage1,27-43层卷积为stage2,44-52层卷积为stage3,低层卷积(26)感受野更小,负责检测小目标,深层卷积(52)感受野大,容易检测出大目标

YOLOV3像YOLOV2一样,需要K-means聚类得到先验框的尺寸,为每种下采样尺度设定3种先验框,总共聚类出9种尺寸的先验框。

yolov3进行了五次下采样,提取特征,然后在85层进行上采样,将85层和61层的特征拼接起来,同样的操作在98层

预测对象类别时不使用softmax,改成使用logistic的输出进行预测。这样能够支持多标签对象。因为softmax前提是:各个类别的分类是相互独立的,也就是如果一个目标属于一种类别,那么它就不能属于另一种。但某些时候这种前提是没有意义的,所以YOLOV3改用logistic regression来预测每个类别得分并使用一个阈值来对目标进行多标签预测,比阈值高的类别就是这个边界框真正的类别。也就是对每种类别使用二分类的logistic回归,即你要么是这种类别要么就不是,然后遍历所有类别,得到所有类别的得分,选取大于阈值的类别。logistic回归用于对anchor包围的部分进行一个目标性评分(objectness score),即这块位置是目标的可能性有多大。这一步是在predict之前进行的,去掉不必要anchor,减少计算量。如果模板框不是最佳的即使它超过我们设定的阈值,我们还是不会对它进行predict。不同于faster R-CNN的是,yolo_v3只会对最佳prior这一个进行操作。而logistic回归就是用来从9个anchor priors中找到objectness score(目标存在可能性得分)最高的那一个。

YOLOv3网络在三个不同尺度特征图中进行对象检测(82 94 106层)。在每个尺度的特征图的每个网格设置3个先验框,总共有 13*13*3 + 26*26*3 + 52*52*3 = 10647 个预测。每一个预测是一个(4+1+80)=85维向量,这个85维向量包含边框坐标(4个数值:边框坐标,中心坐标tx和ty,,框的高度bh和宽度bw),边框置信度(1个数值),对象类别的概率(类别数)。32倍降采样的感受野最大,适合检测大的目标,所以在输入为416×416时,每个cell的三个anchor box为(116 ,90); (156 ,198); (373 ,326)。16倍适合一般大小的物体,anchor box为(30,61); (62,45); (59,119)。8倍的感受野最小,适合检测小目标,因此anchor box为(10,13); (16,30); (33,23)。

YOLOV3分别通过(4+1+c) k个大小为11的卷积核进行卷积预测,k为预设边界框(bounding box prior)的个数(k默认取3),c为预测目标的类别数,其中4k个参数负责预测目标边界框的偏移量,k个参数负责预测目标边界框内包含目标的概率,ck个参数负责预测这k个预设边界框对应c个目标类别的概率。下图展示了目标边界框的预测过程。图中虚线矩形框为预设边界框,实线矩形框为通过网络预测的偏移量计算得到的预测边界框。其中为预设边界框在特征图上的中心坐标,为预设边界框在特征图上的宽和高,分别为网络预测的边界框中心偏移量以及宽高缩放比,为最终预测的目标边界框,从预设边界框到最终预测边界框的转换过程。

主要的网络结构:

bounding box 与anchor box的区别:

Bounding box:是框的位置(中心坐标与宽高),confidence以及N个类别。

anchor box:只是一个尺度即只有宽高