yolo算法的优缺点分析_YOLO V3的原理学习笔记 1/3

YOLO V3的原理学习笔记

01_YOLOv3-introduction.jpg

通过笔记的方式记录自己学习YOLO V3的模型原理.

YOLO 是目标检测算法中常用的一种模型,目前最新的YOLO V3版本不论速度和精度上都有了很大进步,yolo算法在实际应用中能很好平衡精度和速度,

所以我们在实际应用中使用的还是比较多的.

0. What is Yolo?

YOLO即“You Only Look Once”, 是目标检测算法的一种,是采用一步算法实现目标检测的算法,比较两部算法的速度上较快.YOLO一直以速度快而见长. 识别精度比目前优秀的mask rcnn相比还有差距,但是如果在消费级的GPU上实现实时的目标检测,mask RCNN还是不能实现实时的效果,采用YOLO,尤其是YOLO3,在不牺牲太多精度的情景下,非常轻松实现实时的检测效果.

1. YOLO v3的结构

YOLOv3的paper中描述的是基于Darknet-53的网络,我们将Darknet-53转换成keras下的代码.

Darknet-53.png

网络模型的输入为:( 416, 416, 3)就是一个416*416的彩色图片.

输出为:包含box和类型的列表,表示图片中识别到的目标. (𝑝𝑐,𝑏𝑥,𝑏𝑦,𝑏ℎ,𝑏𝑤,𝑐).

[图片上传失败...(image-145b-1570409442271)]

2. YOLO的原理

原始思路:

如果采用最原始的思路,我们会采用窗口滑动的方法,逐个检测目标,通过image classifytion识别目标.

windows.jpg

采用滑动窗口的目标检测算法思路非常简单,它将检测问题转化为了图像分类问题。其基本原理就是采用不同大小和比例(宽高比)的窗口在整张图片上以一定的步长进行滑动,然后对这些窗口对应的区域做图像分类,这样就可以实现对整张图片的检测了。但是这个方法有致命的缺点,就是你并不知道要检测的目标大小是什么规模,所以你要设置不同大小和比例的窗口去滑动,而且还要选取合适的步长。但是这样会产生很多的子区域,

如上图,如果步长或窗口不合适,就会错过目标,如果过于精细,无疑会产生巨大的计算量和复杂的分类计算. 这个是窗口滑动的算法不足之处.

YOLO的思路:

Yolo算法很好的解决了这个问题,它不再是窗口滑动了,而是直接将原始图片分割成互不重合的小方块,然后通过卷积最后生产这样大小的特征图,

基于上面的分析,可以认为特征图的每个元素也是对应原始图片的一个小方块,然后用每个元素来可以预测那些中心点在该小方格内的目标,

这就是Yolo算法的朴素思想。

Yolo将输入的图片分割成 m*m 网格,然后每个单元格负责去检测那些中心点落在该格子内的目标.

car_example_1.png

可视化理解

car_example_4.png

找到锚点

car_example_5.png

非极大值抑制算法(non maximum suppression, NMS),去掉重复的box.

car_example_7.png

版权声明:本文为CSDN博主「weixin_39689506」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_39689506/article/details/111860610

weixin_39689506

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐