目标检测 | YOLOv3开启的回归网络下的多尺度策略
1.简介
通过文章目标检测 | 让YOLOv1算法告诉你回归网络的能力和目标检测 | 让YOLOv2告诉你Trick的力量讲述了YOLO算法的原理和部分改进策略。YOLO系列算法在刚被提出时其目的在于提升检测网络的速度,因此其算法的召回率和检测率相对于Faster RCNN系列算法会要低一些。作者为了提升YOLO算法的实用性,提出了YOLOv2,在不损失速度的情况下提升了网络精度。但从下图的左图中我们可以发现,在输入同等级分辨率图片的情况下,YOLOv2的精度是没有SSD系列算法好的。而YOLOv3的提出,彻底稳固了YOLO系列算法的地位,因为如下图右图所示YOLOv3使得YOLO系列算法的性能超越了SSD系列。因此本文就从原理上来简单阐述下YOLOv3算法的主要改进点,后续会针对YOLOv3算法解析darknet框架下的训练源码。
2.改进点
1.box是否含有物体改进
利用logistic回归计算每个bounding box是否含有物体(二分类:有或者没有)。在该过程中,之前的YOLOv2算法是看ground truth的位置中心坐标在哪,来判定当前bounding box是否含有物体。而在YOLOv3中将与ground truth的IOU最大的那个bounding box认为是包含该物体,因此YOLOv3的特点是每个ground truth都仅仅分配一个bounding box。对于那些没有被分配的bounding box,网络计算损失时,仅仅计算是否包含物体损失,不计算坐标和类概率损失。
2.类概率预测改进
对于类概率预测,在YOLOv2中是直接利用softmax进行类概率预测。而在YOLOv3中对于每一个类,使用独立的logistic分类器,使用交叉熵损失计算类概率损失。用这种策略的原因是,考虑到在利用softmax分类时,需要把所有的类别独立开来(one hot编码的特点),但是一旦遇到如(女人 ,人)这种包含类别时,用softmax就不是那么合适了。因此才引入logistic分类器结合多标签,来处理此类问题。
3.多尺度检测策略改进
YOLOv3的多尺度策略在三个不同的尺度作detection。
v2只有一个detection,v3一下变成了3个,在3个不同尺度的feature map上进行detection。在输入为416的情况下这三个特征图的尺度为13*13,26*26,52*52,这应该是对小目标影响最大的地方。
如下图所示,在输入为640*352的情况下,三个不同尺度的detection位置和特征图大小(分辨率搞成宽高不一样,感觉更直观一点)。
70 conv 27 1*1/1 20*11*256 -> 20*11*27 71 detection 72 route 29 73 conv 256 3*3/2 80*44*128 -> 40*22*256 74 route 73 48 75 conv 256 1*1/1 40*22*512 -> 40*22*256 76 conv 256 3*3/1 40*22*512 -> 40*22*256 77 conv 256 1*1/1 40*22*512 -> 40*22*256 78 conv 27 1*1/1 40*22*512 -> 40*22*27 79 detection 80 route 10 81 conv 128 3*3/2 160*88*64 -> 80*44*128 82 route 81 29 83 conv 256 1*1/1 80*44*256 -> 80*44*256 84 conv 256 3*3/1 80*44*256 -> 80*44*256 85 conv 256 1*1/1 80*44*256 -> 80*44*256 86 conv 27 1*1/1 80*44*256 -> 80*44*27 87 detection
3.YOLOv3的网络框架图
如下图所示,左边虚线框就是YOLOv3网络的特征提取模块的示意图,以416分辨率的图像作为输入,根据网络的深入,会产生3中不同尺度的特征图(52,26,13),YOLOv3在这三个尺度上进行不同尺度的目标检测。
如上图的框架所示,我们发现整个网络中用到了上采样操作,这其实是一种相对比较耗时,而且性价比不高的手段,因此在我用YOLOv3网络时做了一点小改动,在不损失网络精度和网络思想的前提下去掉网络的上采样过程。思路就如下图所示,通过stride为2的卷积实现下采样,最终也能实现三个尺度的detection,而且可以不用到上采样操作。
本文简单介绍了一下YOLOv3的策略,后续会更新一些YOLOv3的源码解读,欢迎持续关注~
- 目标检测和YOLOV3网络的学习
- 目标检测之网络篇(3)【Faster R-CNN】
- 以resnet作为前置网络的ssd目标提取检测
- 目标检测之one-stage和two-stage网络的区别
- 检测网络通开启exe
- 目标检测之网络篇(2)【STN-空间变换网络】
- 【神经网络与深度学习】【计算机视觉】RCNN- 将CNN引入目标检测的开山之作
- 车牌检测回归任务(三、目标检测模型评估)
- YOLT——利用卷积神经网络对卫星影像进行多尺度目标检测
- 基于Tensorflow学习神经网络-目标检测
- Android下检测手机移动网络、WIFI网络是否开启或链接
- 目标检测之网络篇(1)【FCN-全卷积网络】
- python开启摄像头以及深度学习实现目标检测
- 深度学习之目标检测网络总结
- 深度学习实战(1)--手机上跑目标检测网络(YOLO,从DarkNet到Caffe再到NCNN完整打通)
- Faster R-CNN:用区域提案网络实现实时目标检测
- 以resnet作为前置网络的ssd目标提取检测
- 目标检测常用网络RCNN系列快速回顾
- 基于OpenCV和YOLOv3深度学习的目标检测
- 间谍卫星的基础?YOLT——利用卷积神经网络对卫星影像进行多尺度目标检测(Part I)