YOLO 算不算深度学习模型?YOLO 算法的优势
论文地址:You Only Look Once: Unified, Real-Time Object Detection
创新点
YOLO实现了实时处理图片,达到45FPS;Fast YOLO达到155FPS,但是检测准确率不高。
优势:
- 速度快。
- 做预测时全局了解图像,对背景预测错误出现的概率比Fast R-CNN小。
- YOLO学习目标的一般特征,具有较高通用性,应用到新领域,不太可能发生故障。
但是YOLO检测准确性不高,虽然可以快速识别图像中的对象,但是很难准确定位一些目标,尤其是小目标。
算法概述
YOLO使用整张图片的特征预测bounding box。
- 将图片分为的网格。如果某个目标中心落在一个网格,则该网格负责检测该目标。有些目标中心点可能落在多个网格的边界,可通过nms进行筛选。
- 每个网格预测个bounding box及其置信度。置信度反映了bounding box包含对象的信心程度,以及bounding box预测目标的准确程度。置信度定义为:。如果不含目标,则cnotallow=0,如果含有目标,则cnotallow=。
- 每个bounding box包括5个预测值:及置信度。(x,y)表示bounding box中心坐标,与网格相关,训练过程将x,y,w,h进行归一化。
- 每个网格预测个条件类别概率。不论每个网格中bounding box有多少个,每个网格只预测一组类别概率。
- 在测试阶段,我们将条件类别概率与bounding box置信度相乘,,得到每个bounding box属于特定类别的confidence score。
- 因此最终预测值变为的张量。
YOLO在VOC数据集上测试,参数
,因为VOC数据集含有20类,因此设置
,最终预测值为
的张量。
算法详解
1. 网络结构
YOLO网络有24个卷积层,紧跟2个全联接层,整体网络结构如图所示。
Fast YOLO网络使用较少卷积层,只有9个。
2. 训练过程
在ImageNet数据集上使用网络前20个卷积层紧接着一个平均池化层及一个全连接层进行预训练,我们添加4个卷积层和2个全连接层,并进行初始化。为了增加细粒度信息,我们将网络输入分辨率由提高到
网络最后一层采用线性激活函数,其他层采用pRelu(修正线性激活函数):
3. 损失函数
作者采用sum-squared error(平方和)的方式把坐标误差和分类误差整合到一起。但如果二者的权值一致,容易导致模型不稳定,训练发散。因为很多grid cell是不包含物体的,因此grid cell的confidence score为0。所以采用设置不同权重方式来解决,一方面提高坐标误差的权重,另一方面降低不包含目标的bounding box的confidence loss权值,loss权重分别是,。而对于包含object的box的confidence loss权值还是原来的1。损失函数如下所示:
第一项Loss表示bounding box中心坐标误差,第二项Loss表示bounding box宽与高的误差,之所以使用平方根,为了提高对小目标的检测准确性。比如大目标w=8,预测值w=10;小目标w=1,预测值w=3.不采用平方根,对于大小目标误差相同为4;而采用平方根,对于大目标误差为0.11,小目标误差为0.54.
第三项与第四项分别为该网格的bounding boxes有目标与无目标情况下的confidence Loss。
第五项表示预测类别的误差。
实验结果
1. 实时性系统比较
YOLO在实时检测方面,准确性较高,相比于Faster R-CNN等非实时检测,虽然mAP较低,但FPS较高,满足实时性要求。
2. 误差分析
- Correct: correct class and IOU > :5
- Localization: correct class, :1 < IOU < :5
- Similar: class is similar, IOU > :1
- Other: class is wrong, IOU > :1
- Background: IOU < :1 for any object
YOLO相比于Fast R-CNN,有较多定位误差,Fast R-CNN有较多背景误判。
3. Fast R-CNN与YOLO结合
提升mAP,但是耗费时间增加。
4. VOC12上测试结果
5. YOLO在其他数据集上测试
YOLO算法缺点
- 依照论文,每张图产生49个网格,98个bounding box,最多检测出49个目标,对于距离较近的成群小目标,检测效果差。
- 定位不准。Loss主要来自于定位误差,小误差对小bounding box影响远大于同等误差对大bounding box影响。
- 不擅长检测特征相似的某类物体,擅长实时检测多类物体。
推荐阅读
-
YoloDeployCsharp]深度学习模型部署测试平台基于 .NET 的 YOLO 深度学习模型部署测试平台
-
深度学习在 iOS 上的实践 - 利用 YOLO 在 iOS 上进行实时物体检测
-
YOLO 领域模型:适用于复杂场景的中文交通标志识别算法
-
yolo 属于深度学习模型,什么是 yolo 算法?
-
yolo 深度学习示意图 yolo 算法原理介绍
-
YOLO 算不算深度学习模型?YOLO 算法的优势
-
YOLO目标检测大解析:从YOLOv1到YOLOv5的实时深度学习算法介绍
-
电脑设计比赛:利用Python和OpenCV的YOLO深度学习技术进行安检物品识别与检测 - 第一阶段课题介绍
-
深度学习目标检测系列:一文弄懂YOLO算法|附Python源码