YOLOv3学习笔记

图片出自YOLO作者个人博客

YOLOv3与YOLOv2和YOLOv1相比最大的改善就是对boundingbox进行了跨尺度预测(Prediction Across Scales),提高YOLO模型对不同尺度对象的预测精度。

image.png
YOLOv3 Architectrue

网络结构解析:

Darknet-53

YOLOv3的骨干网络(backbone)Darknet-53是从YOLOv2中的Darknet-19中进化而来的,Darknet-53是全卷积网络和残差网络的结合体。残差网络的优势在KaiMing He等人的论文中有所论述,而且残差网络的另一种变体DenseNet网络通过将浅层的feature map堆叠到深层来防止信息丢失。尤其对于YOLOv3而言由于其最中终的输出为不同尺度的3个feature map,对于尺度大的feature map中用来预测小物体的bbox而言由于池化层的下采样丢失的信息可能就会影响预测的准确度,因此YOLO作者Joseph Redmon不仅采用残差学习来降低模型的训练难度而且使用其减少信息的损失。
仔细看来Darknet-53就是一个使用了残差块的FCN网络,Darnet-53提取的特征不仅仅只用来输出一个尺度的特征图,而且用它不同卷积层输出的feature map来保留一部分信息,然后将骨干网络之后的feature map进行上采样之后以与其对应的尺度骨干网络中的feature map进行堆叠减少由于池化层丢失掉的一部分信息,最后输出三个尺度的特征图。

网络输入输出:

Input And output

由于YOLOv3的网络模型是没有使用全连接层的是一个完全由卷积层构成的网络,因此网络对与图片输入的分辨率是不敏感的,这里以输入大小为416x416的分辨率为例子。同过32倍下采样输出的张量大小为其中3为anchor数目,4为预测box的四个参数1为致信度,80为对象类别数。也就是说每个feature map的每个中心有独立的三个box对对象类别和边框进行预测,因为对应到原图中的感受野比较大因此这个尺度负责预测大的对象,负责预测中等大小的对象,负责预测小对象。模型也使用了anchor机制,论文中使用了9个 不同尺度的anchor,这9个anchor都是从COCO数据集GT中通过聚类算法的出来的,其尺度分别为(10×13),(16×30),(33×23),(30×61),(62×45),(59×119),(116×90),(156×198),(373 ×326)。前三个应用于对小物体的预测,中间三个用于对中等大小的物体,后面三个应用于大物体。

网络预测

网络对于边框的预测和YOLOv2是一样的,置信度采用的的是Sigmoid激活函数,输出的概率分布也不是通过softmax而是通过Sigmoid,因为softmax适用于多分类,而Sigmoid适用于多标签分类,置信度和类概率损失函数也是采用的交叉熵。

网络正负例区分

在前向传播的时候输出三个尺度特征图中所有的bbox然后遍历每个bbox选出与每个GT的IOU最大的那个将其标记为正例。设置一个阈值如果正例之外的bbox的IOU大于阈值则忽略小于则设置为负例。正例需要计算置信度和边框以及中心的损失值,负例计算置信度。

网络损失函数

image.png

你可能感兴趣的:(YOLOv3学习笔记)