Yolov1学习与总结

前言:最近看了网上很多关于yolo的文章,其实很多文章写得真的很不错,写的基本上小白都能看懂了,但是看多了你会发现,有些内容你要深入理解还必须得看原版的英文论文,大家写得东西或多或少都会加上自己主观的理解,所以要是有时间还是建议看一看原始论文,对算法原理的理解能够让你在做工程项目时更有把握,研发效率更高。

yolov1论文是2016年9月发布的,发明人作者当时还是一个读研的学生,不得不感叹他的天赋。而且作者将所有的代码全部开源,也敬佩作者的格局,一开始以为暗网的开发者和yolo的设计者不是同一个人,现在才发现原来暗网的框架和yolo的作者是同一人,不仅算法做的好,连软件设计水平也这么高,纯c开发暗网框架,是在是厉害。


目录

1. 整图回归逻辑

2. 损失函数

3.  一些操作说明

3.1 预训练模型:

3.2 leaky操作函数


作者在yolov1论文中介绍了,yolo相对于其他目标检测的优化主要表现在以下三点:

(1)将目标检测问题作为一个检测的回归问题;

这是yolo速度快的主要原因;

(2)yolo算法在预测时将整图作为一个输入,区别与滑动窗口的目标检测与R-CNN;

这是提高目标检测精度的主要原因;

(3)通用性好;

这一点感觉不能成为优点了,现在的faster R-cnn及SSD应该也具备了;

1. 整图回归逻辑

Yolov1学习与总结_第1张图片

上图是来自yolo原论文中的图片,作者将整张图像分为S*S个网格,每个网格预测B的矩形框,并且每一个这样的矩形框要预测C类目标。则一个矩形框预测该矩形框中含有某个目标的概率可表示为如下形式:

 IOU(intersection over union)即交并比,预测框与真实框两个框之间的交并比。为便于理解,贴出了原论文对于整图回归的解释。

Yolov1学习与总结_第2张图片

即一次整图的回归需要计算的tensor数目,假设将整图划分为7*7的网格大小,且每个网格需要预测两个矩形框,每一个矩形框需用5个参数表示,分别为x,y,w,h以及置信度。(x,y)为坐标,是矩形框的中心坐标,这里的坐标是相对于网格的坐标,以网格为参考的坐标,而不是整体为参考的坐标,而宽度和高度则是相对于整图的预测。所以在最终,整个网络的输出tensor是7*7*30,后面再接全连层输出最终的类的概率及坐标位置。整个yolo网络如下图所示,它包括了24个卷积层和两个全连层。

Yolov1学习与总结_第3张图片

 论文中作者还提到了可以进一步加快推理速度,成为fast yolo,也就是后面我们在暗网框架中见到的yolo-tiny网络,它只有9个卷积层。

2. 损失函数

损失函数设计时,作者对目标物在网格(grid cell)中和不在网格中设置了不同的权重,当目标物在网格中时,权重大,设置为5,不在网格中时权重小,设置为0.5,这有利于模型的稳定性,否则如果对两者同等对待,设置相同的权重,那么当目标物不在网格中时,这时候其实置信度是0,如果权重的比例设置的大,很容易导致模型的不稳定。

Yolov1学习与总结_第4张图片

其中,\lambda _{coord}=5,\lambda _{noobj}=0.5

3.  一些操作说明

3.1 预训练模型:

有文章表明增肌卷积层和全连层能够提高模型的性能,作者使用了图三种前20个卷积层用来训练预训练模型,将后面的四个卷积层和两个全连层随机初始化了。

3.2 leaky操作函数

Yolov1学习与总结_第5张图片

好了今天的学习就到这里,如果有新的认识再更新吧。

 微言微语:如果你不能用浅显的语言描述一件事情,那说明你没有理解透。

你可能感兴趣的