题记 :希望大家看论文的时候可以借鉴我的文章去看,单独看原文论文可能有点看不懂,当然大神绕过吧,我也是自己一边学习一边总结,有什么问题大家可以一块交流.
----------------------正文----------------------------------------
yolov1论文链接:https://arxiv.org/pdf/1506.02640.pdf
论文标题: 《You Only Look Once: Unified, Real-Time Object Detection》
一:算法思想:分治
yolov1是"分而治之”的基调,在yolov1上,输入图片被划分为7X7的网格,下面这个图片就是yolov1原作者的算法思想示意图,我们可以看到对应于Class probability map 的粉红色,黄色,和天蓝色在Final detections中分别框出来了汽车,自行车,狗,这就是作者算法的核心思想.
如下图所示,输入图片被划分为7x7个单元格,每个单元格独立作检测。
二. Loss Function (损失函数)
这个是原文中对于loss function的公式,而我对于这个公式的理解是这样的:
首先每个字母的含义:
1.S2表示网格数,在这里是7x7。
2.B 表示每个单元格预测框的个数,这里是2;
将边界框x参数化
y坐标是特定网格单元位置的偏移量,因此它们也限定在0和1之间
3.第一行就总方误差( sum-squared error)来当作位置预测的损失函数;
第二行用根号总方误差来当作宽度和高度的损失函数;
第三行和第四行对置信度confidence也用SSE作为损失函数;
第五行用SSE作类别概率的损失函数;
最后将几个损失函数加到一起,当作yolo v1的损失函数。
三.yolov1的网络结构
yolov1的输出是一个7x7x30的张量,7x7表示把输入图片划分位7x7的网格,每一个小单元的另一个维度等于30.(其中,SxS表示网格数量,B表示每个网格生成框的个数,C表示能检测识别的种类。S=7,B=2,C=20),yolov1的输出深度只有30,意味着每个单元格只能预测两个框(而且只认识20类物体),这对于密集型目标检测和小物体检测都不能很好适用.
四.yolov2以及yolov3,yolov4还保留的关于 yolov1的几点
1.原始yolov1的论文中这个公式说明:相比普通ReLU,leaky并不会让负数直接为0,而是乘以一个很小的系数(恒定),保留负数输出,但衰减负数输出;公式如下:
2.分治思想:用网格来划分图片区域,每块区域独立检测目标(借鉴本文刚开始的分析);