前言
现阶段机器学习的多目标识别领域中,yolo是相当有优势的。我们在此使用的是yolov3,yolov3并没有太多创新,但以v1和v2为基础,保持速度的优势下,提高了预测精度。最大的进步可能体现在对小物体的识别能力上。
个人认为,如果觉得yolov3的资料太少的话,可以查找yolov2的资料,可以试着先理解v2的内容。
一些概念
tensorflow
一个框架,个人认为是方便实现一个神经网络模型的框架。官方解释为
一个基于数据流编程(dataflow programming)的符号数学系统,被广泛应用于各类机器学习(machine learning)算法的编程实现 。
yolov3
一种算法,用于多目标识别。
darknet
darknet是一种网络结构,并被yolov3所使用,用于图像特征提取。yolov3采用了darknet53(含有53个卷积层),还吸收了残差网络的做法。在yolov3中,是不存在池化层的。
残差网络可以很好的解决深度学习里的退化问题,即:随着深度的加深,训练误差和测试误差反而更大。
多尺度特征
yolov3可以很好地检测大中小对象,这是运用到了多尺度特征。如何识别大中小对象,其实是根据对特征图的上采样(或者下采样)完成的。
上采样:放大图片,增加分辨率。多采用内插值法,即在原图的基础上,在像素点之间插入合适的新元素。
下采样:生成对应图像的缩略图,使得图像符合显示区域大小。如mn图片下采样s倍,即把原图片在ss窗口的内容,打成一个像素点。
多尺度训练
多尺度训练在yolov2时就被引入了,引入的目的是为了让模型有更加好的鲁棒性,即输入图片不需要固定大小。
具体来说,就是每间隔一定的batch,去改变输入图片的大小。
在yolov2中,输入图片最小为320320,最大为608608,这个需要确认一下?
先验框
先验框是可以帮助网络更好的预测。设置先验框,可以让ground truth与预测框的IOU更好,从而更好的训练学习。先验框可以使用kmeans函数计算而得。(训练关键之一)
yolov3有9种先验框,分配上,在分辨率为13x13特征图上(有最大的感受野)应用较大的先验框(116x90),(156x198),(373x326),适合检测较大的对象。中等的2626特征图上(中等感受野)应用中等的先验框(30x61),(62x45),(59x119),适合检测中等大小的对象。较大的5252特征图上(较小的感受野)应用较小的先验框(10x13),(16x30),(33x23),适合检测较小的对象。
资料
《yolov3深入理解》 //www.greatytc.com/p/d13ae1055302