说明
1.本文是博主的学习记录,主要为了方便以后查看,当然如果能为别人提供帮助就更好了,如果有不对的地方请指正
2.本文重点是了解YOLOv3在之前两篇的基础上做了哪些改进,尽量用较少篇幅表达清楚论文整体思路,其他一些不影响理解论文算法的东西有需要的请查看其他博客
3.论文中的链接是我经过大量搜索,个人认为讲解最清楚的参考,看本文的过程中如对一些名词有疑惑可以直接点击参考链接
创新点
1.使用特征金字塔思想在三个尺寸的特征图上分别预测
2.用logistic代替softmax作为分类器
YOLOv3
YOLOv3相对于之前的YOLOv1和YOLOv2做了一些改进,但是相对于目标检测来说没有什么创新,但这不影响它在工程算法中的地位。主要改进的地方有基础网络、多尺度特征图预测、logistic代替softmax以及置信度和类别概率部分损失函数改用二分类交叉熵
1.网络结构
提取特征的基础网络,YOLOv3采用了Darknet-53,借鉴了Resnet的残差块,相对于YOLOv2的Darknet-19增加了网络深度,比Darknet-19慢,但是比同精度的ResNet快很多
2.多尺度特征图预测就是特征金字塔思想,只不过操作和FPN不太一样,一个是选择融合的层不一样。FPN是小尺寸特征图上采样后和上一层进行融合,依次进行,融合方式是像素相加,融合后尺度和通道数不变;YOLOv3是小尺寸特征图经过上采样尺寸变为SxS,则选择前面的尺寸为SxS的特征图进行融合,融合方式是拼接,尺度不变,通道数是二者相加
放一张在这篇文章借鉴的图更好理解:
1)YOLOv3中,只有卷积层,通过调节卷积步长控制输出特征图的尺寸(输入图片尺寸任意)
2)输出维度为N×N×[3 x(4 + 1 + 80)],NxN是网格数(分别是13、26、52),3是anchor个数,4是坐标信息,1是置信度,80是COCO数据集类别数(和YOLOv2没啥区别)
3)YOLOv2在最后一个特征图上进行预测,而YOLOv3在三个不同尺度的特征图上进行预测,所以anchor box 尺寸也得调整,依然使用k-means选择anchor,9中尺度,分为大中小三等,和FPN思想一样只不过没那么复杂公式对应,而是简单的大尺寸特征图(感受野小)对应小框,小尺寸特征图对应大框(感受野大),中尺寸特征图对应中框
再借鉴一张图感受一下不同尺寸的框:
黄色是gt,蓝色是anchor,红色是网格
3.logistic替代softmax以及损失函数
类别概率(输出维度中的80)不再用softmax,改用logistic分别对每个类别独立二分类;损失函数中坐标损失还是简单的平方差,置信度和类别概率损失改为二分类交叉熵,延续之前两篇的优良传统,每个gt只对应一个anchor(bbox也是)没有匹配到gt的anchor只产生置信度损失
其他
YOLOv3论文写的挺随意(我也随意的记录一下),也没啥特别亮的创新点,但是工程中好用,可以研究研究代码,其他一些参考:cscn、知乎、知乎