YOLOv3: An Incremental Improvement 整体介绍及部分细节讲解(部分基于飞桨课程)

本篇笔记部分基于飞桨课程:https://aistudio.baidu.com/aistudio/education/group/info/1297


一、整体总结

yolov3网络输出分候选框回归、objectness(是否有目标)检测、候选框内物体类别三部分。
其中候选框回归部分的损失采用的是平方误差损失的和,objectness检测采用的是logistic regression,类别检测采用的是logistic分类器,训练时用的binary cross-entropy loss。
主要就是快(不是两阶段的,而且用了Darknet,没用ResNet),同时效果也还ok。
yolov3的网络结构如图。
YOLOv3: An Incremental Improvement 整体介绍及部分细节讲解(部分基于飞桨课程)

二、论文笔记

  1. 候选框回归与RCNN系列相似。如果想要了解原理可以看一文读懂Faster RCNN的2.4节bounding box regression原理。
    bx=σ(tx)+cxby=σ(ty)+cybw=pwetwbh=pheth b_x=\sigma(t_x)+c_x \\ b_y=\sigma(t_y)+c_y \\ b_w = p_w e^{t_w} \\ b_h = p_h e^{t_h}
    其中tx,ty,tw,tht_x, t_y, t_w, t_h是网络输出,用于矫正候选框,cx,cy,pw,phc_x, c_y, p_w, p_h分别是候选框中心点坐标(左上角为(0,0))和候选框宽高。
  2. 采用平方误差损失的和作为候选框回归的损失
  3. 候选框回归梯度计算公式:
    ift^tgradient=t^t if 真值 \hat{t_*},预测值t_*,那么gradient=\hat{t_*}-t_*
  4. 用logistic regression为每个bounding box预测objectness score(是否包含物体)
    A. 一个bouding box prior比其他bounding box prior与真值目标之间的重叠都大,那么该bounding box的objectness score为1。
    B. 某个框与真值框重叠大于阈值,但不是最好的框,那么忽略该框的预测,其中阈值threshold为0.5.
    C. 每个真值框只对应一个bounding box prior,如果一个bounding box prior没有对应真值目标,那么该框就不算入候选框回归和分类的损失,只算入objectness损失。
  5. 类别预测部分采用独立的logistic分类(针对multilabel的情况,也就是有多个label,比如woman和person的情况,不采用softmax),训练过程中,用binary cross-entropy loss。
  6. 用了类似特征金字塔的结构来预测3个不同尺度(大、中、小)的框。
  7. 特征提取器后加了几个conv层,最后一层输出3-d tensor,这个张量包括boudingbox回归结果、objectness和类别预测。以COCO为例,每个尺度预测3个框,所以输出tensor大小为N×N×[3(4+1+80)]N\times N\times [3*(4+1+80)],4个bounding box回归结果,1个objectness结果,80个类别预测结果。
  8. yolov3的结构大概如图所示。将2层之前的特征图做2x的上采样,同时取网络之前的更早的特征图,用连接的方式将其与上采样特征进行融合。这样让我们能够从上采样特征中得到更有意义的语义信息,同时从更早的特征图中获取细粒度的信息。之后加了一些conv层来处理这个融合的特征图,之后预测了一个相似的3-d tensor,不过尺度扩大了一倍。之后再采用一遍以上操作来得到最大尺度的结果。
    YOLOv3: An Incremental Improvement 整体介绍及部分细节讲解(部分基于飞桨课程)
  9. 采用k-means聚类的方式来决定bounding box prior。将所有图片中真值框大小做聚类,最后聚出了9个簇,这9个簇,之后将这9个簇平均分在3个尺度上。在COCO数据集上,这9个簇分别是(10×13),(16×30),(33×23),(30×61),(62×45),(59×119),(116×90),(156×198),(373×326)(10\times 13),(16\times 30),(33\times 23),(30\times 61),(62\times 45),(59\times 119),(116\times 90),(156\times 198),(373\times 326)
  10. 特征提取器:Darknet-53(因为有53层conv)。结构如图。这个结构比Darknet-19要更强大,同时还比ResNet101和152效率高。
    YOLOv3: An Incremental Improvement 整体介绍及部分细节讲解(部分基于飞桨课程)
  11. 每个网络训练时设置都相同,测试时是256×256256\times 256。????
  12. 训练时在整张图像上训练,且没有采用hard negative mining之类的处理。采用了多尺度训练、数据增强、批归一化等标准的处理。用Darknet框架训练和测试。
  13. yolov3检测小目标的水平提高了,但是在检测中尺度和大尺度目标上效果仍不是很好。
  14. 作者认为目标框的定位不是很重要,能定位就行,为目标框分类比较重要。VOC中IoU阈值被故意设置的很低,从而考虑了真值数据的目标框的不准确性(可能标错)。COCO数据集的候选框画的更好了,但是降低了分类准确率(我认为作者说这些主要是因为yolov3的AP在COCO指标上不是很好)。

后记:
这篇论文写的十分俏皮加随意。
大概这就是大佬吧。
如果是一个学术界的没有名气的小白这么发论文,估计早就被reject了。