YOLO全系列更新,YOLO的进化历程

由于在学习中没能找到用一篇即能感受YOLO的全部发展和变化的文章,所以决定自己写一篇,有不当可评论指出!!

本文重点在yolov1-yolov5不同版本间进行了哪些升级和改变,因此,本文仅适用于对yolo有初步了解的同学,如果对yolo完全没有概念还请先对yolo进行系统的学习.以免在此文上浪费时间///

YOLOv1:

  1. 提出 anchor free 的想法,通过将一幅图像分成SxS个网格(grid cell),如果某个object的中心 落在这个网格中,则这个网格就负责预测这个object.
    在这里插入图片描述

  2. 每个网络需要预测B个BBox的位置信息和confidence(置信度)信息,一个BBox对应着四个位置信息和一个confidence信息。confidence代表了所预测的box中含有object的置信度和这个box预测的有多准两重信息,举例说明: 在PASCAL VOC中, 图像输入为448x448,取S=7,B=2,一共有20个类别(C=20)。则输出就是7x7x30的一个tensor。
    具体网络设计:

在这里插入图片描述

  1. 每个bounding box要预测(x, y, w, h)和confidence共5个值,每个网格还要预测一个类别信息,记为C类。则SxS个网格,每个网格要预测B个bounding box还要预测C个categories。输出就是S x S x (5*B+C)的一个tensor。(注意:class信息是针对每个网格的,confidence信息是针对每个bounding box的。)

在test的时候,每个网格预测的class信息和bounding box预测的confidence信息相乘,就得到每个bounding box的class-specific confidence score:
在这里插入图片描述
4. loss的计算

这个损失函数中:
只有当某个网格中有object的时候才对classification error进行惩罚。
只有当某个box predictor对某个ground truth box负责的时候,才会对box的coordinate error进行惩罚,而对哪个ground truth box负责就看其预测值和ground truth box的IoU是不是在那个cell的所有box中最大。

在这里插入图片描述
损失函数设计
在这里插入图片描述

缺点:

  1. 由于输出层为全连接层,因此在检测时,YOLO训练模型只支持与训练图像相同的输入分辨率。
  2. 虽然每个格子可以预测B个bounding box,但是最终只选择只选择IOU最高的bounding box作为物体检测输出,即每个格子最多只预测出一个物体。当物体占画面比例较小,如图像中包含畜群或鸟群时,每个格子包含多个物体,但却只能检测出其中一个。这是YOLO方法的一个缺陷。
  3. YOLO loss函数中,大物体IOU误差和小物体IOU误差对网络训练中loss贡献值接近(虽然采用求平方根方式,但没有根本解决问题)。因此,对于小物体,小的IOU误差也会对网络优化过程造成很大的影响,从而降低了物体检测的定位准确性。

算法核心:

  1. 提出anchor free的思想,无锚的算法使得其速度优势很大,但由于只有两个bbox,且两个bbox只能同时预测单个分类(B x 5 + C)的输出特征图,意味着一次只能预测一个物体,所以导致网络的召回率极低
  2. 改进Loss计算策略,将坐标和长宽归一化,保证每个cell负责一个物体的中心点

YOLOv2

对于yolov1改进之处

在这里插入图片描述

核心:

1. 回归先验框机制:通过在coco和voc数据集上使用k-mean聚类的方式,在每个cell上,设置5个先验框(如下)

COCO: (0.57273, 0.677385), (1.87446, 2.06253), (3.33843, 5.47434), (7.88282, 3.52778), (9.77052, 9.16828)
VOC: (1.3221, 1.73145), (3.19275, 4.00944), (5.05587, 8.09892), (9.47112, 4.84053), (11.2364, 10.0071)

2. New Network: 使用新的网络结构 Darknet-19(结构如下)

在这里插入图片描述

3. 坐标回归方式

在这里插入图片描述

4. Fine-Grained Features(passthrough层检测细粒度特征)

意义:
对象检测面临的一个问题是图像中对象会有大有小,输入图像经过多层网络提取特征,最后输出的特征图中(比如YOLO2中输入416416经过卷积网络下采样最后输出是1313),较小的对象可能特征已经不明显甚至被忽略掉了。为了更好的检测出一些比较小的对象,最后输出的特征图需要保留一些更细节的信息。
YOLO2引入一种称为passthrough层的方法在特征图中保留一些细节信息。具体来说,就是在最后一个pooling之前,特征图的大小是2626512,将其1拆4,直接传递(passthrough)到pooling后(并且又经过一组卷积)的特征图,两者叠加到一起作为输出的特征图。
在这里插入图片描述

5. Multi-Scale Training多尺度训练,在固定个数的batch后修改图片尺寸,实现多尺度训练,使得模型对大,小物体性能更佳.图片尺寸如下:

在这里插入图片描述
在这里插入图片描述

6. Loss 计算方式更改,更加复杂

在这里插入图片描述

-----------------Updating is not finished-----------

YOLOv3

引入FPN

YOLOv4

引入PAN, 网络csp block,
准确度更高

YOLOv5

引入PAN, 网络csp block,YOLOv4和YOLOv5的区别还有待分析
速度更快
两者整合了大量的data argumentation,融合了现有的大部分backbone和网络融合特征
但YOLOv5基于pytorch框架,速度更快,配置文件对用户修改更加友好

参考文献:
8. https://blog.csdn.net/c20081052/article/details/80236015
9. https://zhuanlan.zhihu.com/p/136382095
10. yolov2:https://blog.csdn.net/shanlepu6038/article/details/84778770
7.yolov1 https://blog.csdn.net/c20081052/article/details/80236015

  • 5
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值