YOLOv3: An Incremental Improvement(YOLOv3)学习笔记

摘要:

1.提出新的YOLO,320x320输入,22ms,28.2mAP
2.在Titan X上实现了57.9AP50,速度51ms/张
YOLOv3: An Incremental Improvement(YOLOv3)学习笔记_第1张图片

介绍:

论文中的介绍部分没有什么特别重点的部分,提到这篇论文算是一篇科技报告。

细节:

1.bbox预测。

跟yolov2一样,使用了k-means方法对anchor box的个数和长宽进行统计计算,yolov2得到的是5个,yolov3是3个。在feature map中,每个网格都会预测3个bbox,每个bbox要预测4个坐标信息和1个目标分数值(置信度,是否物体)和类别概率,所以最后要计算的有B*(C+5)个,yolov3的B是3,前面提到过,C是20,VOC是20个类别。网格预测的坐标信息如下公式,其中,(cx,cy)是网格的左上角坐标,实际预测的坐标信息(bx,by,bw,bh),偏移坐标(tx,ty,tw,th),之前的先验框长宽(pw,ph),这个长宽是相对于最后的特征图大小的。实际的坐标信息是t*,预测的是t^,那么梯度计算的就是这俩的差值。
YOLOv3: An Incremental Improvement(YOLOv3)学习笔记_第2张图片
YOLOv3: An Incremental Improvement(YOLOv3)学习笔记_第3张图片
Yolov3在每个网格里,用逻辑回归预测物体置信度。如果预测的先验框,比之前的要,要更加与gt重合,那么其分数为1;如果预测的不好,但是与gt也是重合到了一定阈值以上,神经网络会忽视这个预测。Yolov3为每个gt只分配了一个bbox。

2.类别预测

1.对每个bbox使用多标签预测,用逻辑回归分类器替代softmax分类器。
2.在训练时候,使用二元交叉熵损失进行训练。
3.多标签分类方法能够更好的模拟数据

3.Predictions Across Scales

1.正如前面提到的,yolov3的每个网络有三个bbox来预测相关信息。在基础的特征提取器中,添加了几层卷积层,并在最后一层卷积层预测3个张量编码信息,分别是bbox,置信度和类别预测。
2.COCO数据集中,得到的维度信息则是NxNx[3x(4+1+80)],也就是NxN网格,每个网格预测bbox坐标信息、物体置信度和类别(多标签预测)。
3.再从前面两层得到特征图进行2次上采样,然后将它们融合在一起,这样有利于细粒度信息和语义信息的提取。然后再加几层卷积来对这个融合后的特征图进行预测。
4.用新的网络来进行特征提取,这个网络加了shortcut连接,3x3接1x1等熟悉的操作。网络名为darknet-53,顾名思义就是有53个卷积层(但是我数着怎么只有52个),结构图和结果对比如下:
YOLOv3: An Incremental Improvement(YOLOv3)学习笔记_第4张图片
YOLOv3: An Incremental Improvement(YOLOv3)学习笔记_第5张图片

4.训练

训练完整的图像,没有难样本或其他任何东西。 使用多尺度训练,大量的数据增强,批量归一化,所有的标准东西。 使用darknet来训练和测试。

结果:

如图所示,v3与RetinaNet相当,并远高于SSD513,同时速度提升了很高
YOLOv3: An Incremental Improvement(YOLOv3)学习笔记_第6张图片

尝试了但是没有效果的工作:

1.anchor boxes坐标偏移的预测, 尝试使用正常的锚盒预测机制,其中使用线性激活将x,y偏移量预测为盒宽或高度的倍数,效果不好
2.线性方法预测x,y而非逻辑回归,mAP下降
3.focal loss,这种方法也会导致mAP下降
4.双IOU阈值和真值分配,借鉴Faster RCNN但是发现没有提升

其他参考

1.网络结构图(图片来源https://blog.csdn.net/leviopku/article/details/82660381)
YOLOv3: An Incremental Improvement(YOLOv3)学习笔记_第7张图片
2.代码keras
3.论文链接

你可能感兴趣的:(论文学习总结,目标检测)