前言
之前有一段时间看了挺多深度学习方面的论文,但是由于时间方面的问题一直没来得及进行总结。最近一段时间突发奇想把自己看论文时的学习笔记给记录一下,由于之前没写过博文,所以排版可能会有点emmm...一言难尽。专业方面的知识,如果有理解不到位的地方欢迎各位大佬指教。
1、Abstract和Introduction
- YOLOv3网络在目标检测的速度和精度方面都有所提升。
- YOLOv3能在22ms内完成320×320大小的图片的处理,并取得28.2mAP的成绩。其精度和SSD相当,但速度要快上3倍。
- 在Titan X环境下使用0.5 IoU mAP检测标准进行衡量,YOLOv3的检测精度为57.9 AP50,用时51ms。
2、The Deal
2.1、BBox预测
- YOLOv3仍是使用dimension clusters固定anchor box来选定BBox。具体的操作就是,在特征图上会生成许多个anchor box(锚点框),通过移动锚点框的位置和改变其大小来获得BBox。神经网络会为每个锚点框预测4个参数:,,,,假设锚点框的坐标为,宽和高为,,则根据锚点框和生成的4个参数可以预测出BBox的4个参数,,,,具体公式如下图中所示。
- 在训练时使用了方差损失,假设ground truth的坐标为(神经网络输出的那四个参数),预测框BBox的坐标为,则梯度为。
- YOLOv3用Logistic回归预测每个边界框的objectness score(物体置信度),如果预测框BBox比之前的更好地与ground truth重合则分数就是1。如果当前的预测不是最好的,但其与ground truth的IoU值超过0.5,则网络会自动忽略该预测框。
2.2、分类预测
- 由于同一个BBox中可能包含了重叠的目标,YOLOv3使用了单独的Logistic分类器而非softmax对BBox中的物体进行分类。
- 在训练时使用二元交叉熵损失来预测物体类别。
2.3、不同面积物体检测
- YOLOv3有三种不同面积的anchor box(锚点框),每种面积的锚点框具有3种不同的长宽比。所以网络输出的张量大小为,其中4为上文提到的锚点框的4个参数:,,,,1为判定该BBox框中是否存在物体,80为80个分类的置信度。
- YOLOv3为了提取浅层特征,将早期的特征图和后期的特征图做了连接,具体的操作方式可以从网上找一张YOLOv3的网络结构图来看,一目了然。
2.4、特征提取器(主干网络)
- YOLOv3网络使用的主干网络为Darknet-53。
- 在GPU为Titan X,输入为256×256图片的环境下,作者对几个特征提取网络进行了单精度测试。得出的结论是Darknet-53网络的浮点运算更少,速度也更快,同时精度可以和最先进的分类器相媲美。
3、How We Do
这一部分主要是展示YOLOv3和其他主流目标检测网络在不同精度测量标准下的性能比较。
4、尝试过但没有效果的东西
- Anchor box坐标的偏移预测
- 使用线性方法预测x,y,而不是使用Logistic方法
- Focal loss
- 双IOU阈值和真值分配