目录
1.YoloV1
1.1综述
- 同时预测多个box位置和类别
- 端到端的目标检测和识别
- 速度更快
- 实现回归功能的CNN并不需要复杂的设计过程
- hijack选用整图训练模型,更好地区分目标和背景区域
1.2算法原理
- 图像被分成S×S个格子,对于每一个格子
- 包含GT物体中心的格子负责检测相应的物体,如上图狗所在中心落在某一个格子上,则这个格子负责预测狗。
- 每个格子预测B(超参数)个检测框及其置信度(x,y,w,h,c),以及C个类别概率。置信度表面了预测的bbox中含有目标物体的可能性以及当前bbox预测得有多准。检测框及置信度对应bbox,类别对应当前的格子。每个格子预测的向量长度为5×B×C
- bbox信息(x,y,w,h)为物体的中心位置相对格子位置的偏移及宽度和高度,均被归一化。
- 置信度反映是否包含物体以及包含物体情况下位置的准确性,定义为
1.3yolov1网络结构图
yolov1的网络结构采用直接回归的方式来获取最终所需要检测的物体的位置和类别,它只包含了CNN网络结构。原始的输入图像经过多层卷积之后最终再通过一个FC层。原论文里S的大小为7,B为2。 通过这样的回归,最终可以得到每一个格子所包含的bbox的置信度以及是否包含目标物体,如果包含的话,当前物体的偏移量是多少,以及长宽是多少。对FC层通过的结果进行解码,得到上图中下半部分的两幅图,对于第一个图,虽然每个格子预测B个BBOX,但是只选择IOU最高的BBOX作为物体检测的输出,这也是yolo算法的缺陷,图像中可能会包含多个小的目标,但由于每一个格子只预测一个物体,如果格子同时出现多个物体的时候,效果就会变差。网络回归之后得到每一个bbox对应的类别和位置信息,通过NMS进行筛选后得到最终检测的结果。
1.4网络结构分析
- 网络使用小卷积,即1×1和3×3
- FC输出为:S×S(B×5+C)
- 网络比VGG16快,准确率稍差
1.5损失函数定义
- Loss函数:均方和误差
- 坐标误差、IOU误差和分类误差
- 权重考量