1、yolov3简介
yolov3已经出来好久了,最近花了些时间分析了下yolov3的源码。yolov3并没有很大的创新,更多的是借鉴了最近两年一些网络构造技巧。不过不得不承认效果还是很赞的,在保持速度的前提下,提升了预测精度,尤其是小目标物体的检测相比v1、v2来说得到了较大的改善。
yolov3的主要改进:调整了网络结构;利用多尺度特征进行目标检测;对象分类用logistic取代了softmax。
2、网络结构
以darknet-53为例,具体结构如下:
其中Residual示意图如下:
3、利用多尺度进行目标检测
yolo2中也采用了passthrough结构来检测细粒度特征,在yolo3中则采用了3个不同尺度的特征图进行目标 检测。三个尺度的特征图尺度相对输入图片的stride分别为32、16、8;stride越大则特征图的局部野越大,能够用于检测较大的目标物体,stride越小则反之。同时,anchors的引入能够使得网络更好的进行学习。网络中采用了9中尺度的先验框,具体分配如下:
具体如下(黄色框为gt,蓝色框为anchors):
4、输入到输出的映射
输出的数据分布维度信息如下:
对于416*416的输入图像,没个尺度特征图的每个网络设置3个先验框,总共有13*13*3 + 26 * 26 *3 + 52 * 52 * 3 = 10647个预测结果,没个榆次是(4 + 1 + 80) = 85维向量。而yolo2中只有845个预测。
5、总结
yolo3借鉴了残差 网络,形成了更深的网络层次,以及多尺度检测,提升了map以及小物体检测效果。
个人水平有限,很多东西也是参考了其他人的成果,在此表示感谢,如果文中有误之处请指教,谢谢!