yolo 属于深度学习模型,什么是 yolo 算法?
YOLO-v1
- 1. 介绍
- 2. 优点
- 3. 大统一模型
- 4. 神经网络结构
- 5. 缺点
- 6. 对比
- 7. 结论
1. 介绍
YOLO算法是一种新的目标检测算法。以前的目标检测算法都是基于分类思想的算法。
相反,YOLO算法是一种基于回归思想的目标检测算法。
YOLO算法非常简单,就只有一个神经网络。
它可以同时定位物体的边界框和预测类别概率。
2. 优点
相对于以前的目标检测算法,YOLO算法有其优越性。
第一:它非常的快。它可以每秒45帧的速度在GPU上运行,其快速版本的速度可以超过150FPS。
第二:它是基于全局的图片进行类比预测。与基于滑动窗口(DPM)和候选区域提取(RNN)的技术不同,YOLO在训练和测试期间会看到整个图像,因此它隐式地编码有关类及其外观的上下文信息。更加准确。
第三:YOLO可以学习更加广泛的目标表示信息。在自然图像(也就是实际的样子)上进行训练后,在艺术图片(也就是加了滤镜的样子)上进行测试时,YOLO在很大程度上优于DPM和R-CNN等*检测方法。
3. 大统一模型
这两个我使用YOLO算法实战的例子。当我们将这两张图片输入给训练好的YOLO模型后,可以得到以上的输出。
可以看到YOLO算法非常的精确,在编译时也可以感受到,YOLO真的是非常的快。
YOLO算法最核心的思想就是,大统一模型。
它将独立分散的算法组件统一到一个神经网络中。
比如R-CNN算法,就是一个two-step算法,它先进行物体边界框的定位,再进行物体类别的预测。
但是YOLO就是一个one-step算法,它可以同时完成定位和预测。
言归正传啊,正因为这个大统一模型的思想,YOLO才做到了one-step的效果。
第一点,这个系统将输入的图片划分为SXS个小格,如果物体的中心存在这个小格中,那么这个小格就负责预测这个物体。
第二点,每一个小格预测B个边界框。
第三点,每一个边界框预测值包括边界框的中心坐标(x,y),宽w,高h和置信度confidence,置信度反应的是边界框里存在物体的概率。
第四点,每一个小格只预测C种类别的概率,这里的C跟B没有关系
最后输出一个维度是SXSX(BX5+C)的张量
接下来我们来学习一下YOLO神经网络的结构
4. 神经网络结构
YOLO的神经网络结构是在GoogLeNet的基础上发展来的,
不过,YOLO使用1x1的卷积层后跟着3x3的卷积层的卷积层组会代替了GoogLeNet的inception模块
前面24层卷积层从图像中提取特征,其后通过2层全连接层来预测输出类别概率和坐标
需要提到的是,YOLO的神经网络不光是卷积层还是全连接层都是采用leaky ReLU作为激活函数来使用的。
5. 缺点
我们前面介绍了YOLO的优点,介绍了YOLO算法。那YOLO是不是就没有缺点呢?
其实不是的。YOLO也有缺点,
第一点,YOLO在准确性方面仍落后于最新的检测系统。尽管它可以快速识别图像中的对象,但仍难以精确定位某些物体,尤其是一些小的物体。
第二点,YOLO采用的误差函数并不合理。YOLO采用了平方和函数作为误差函数,它非常易于优化,但无益于增大mAP。它不合理在对定位误差和分类误差的权重相等。为了解决这个问题,YOLO增加了边界框坐标预测的损失权重,并减少了不包含对象的框的置信度预测的损失权重。
第三点,YOLO限制了边界框预测的数量。每个网格单元仅预测两个框,并且只能具有一个类。
尽管YOLO算法存在诸多的缺点,但是当它与一些优秀的目标检测算法对比时,依然也非常能打。
6. 对比
我们将YOLO与几个*检测算法进行了比较,突出了关键的异同。
DPM算法是基于滑动窗口的目标检测算法,R-CNN和它的变体(也就后来Fast R-CNN,最新的Faster R-CNN),也都是基于候选区域提取的目标检测算法。它们都是two-step算法,相对于YOLO来说,YOLO更加统一,更加快,更加全局。
Deep MultiBox算法也是只用一个神经网络来进行图标检测和定位,但Deep MultiBox算法无法进行图像的批分类任务,相当于YOLO来说,YOLO更加完整。
7. 结论
到此,YOLOv1算法的理论学习就差不多了,回过头来看,YOLO是一个统一的目标检测算法,它只有一个神经网络就可以从全局来同时预测和定位物体的位置和类别概率。
推荐阅读
-
YoloDeployCsharp]深度学习模型部署测试平台基于 .NET 的 YOLO 深度学习模型部署测试平台
-
yolo 属于深度学习模型,什么是 yolo 算法?
-
yolo 深度学习示意图 yolo 算法原理介绍
-
YOLO 算不算深度学习模型?YOLO 算法的优势
-
什么是 yolo 模型神经网络 yolo 网络模型详解
-
回归算法 深度学习 什么是回归算法?
-
YOLO目标检测大解析:从YOLOv1到YOLOv5的实时深度学习算法介绍
-
简单易懂版 - 什么是粒子群算法(PSO)?" - PSO 是这样工作的: 想象一群小鸟寻找食物,它们会互相学习、竞争并跟随最优秀的伙伴。这就是模仿群体智慧(Swarm Intelligence,SI)的粒子群优化算法,由 Eberhart 博士和 Kennedy 博士创造,属于多智能体优化系统(MAOS)的一员。 - 数学背后的逻辑: - 每只“鸟”(粒子)依据邻居过去的发现来飞得更好: 1. 受到激励的好位置(Pbest) 2. 与附近伙伴的成绩对比 3. 阿婆姨领先者的模仿 - 模型简化来说,每个粒子像 D 维空间的理想点,按特定速度飞行,速度随自身经验和同伴表现实时调整。我们用 Xi 表示 D 个粒子的集合,其中 Pi 存储过最佳位置,Pg 是群体中最优的位置,Vi 是粒子的速度。 - 更新规则: - **速度更新**:有点像梯度下降法中的导数概念,但因鸟群数量大,能有效跳出局部最优区域,引导群体朝全局最优方向前进。 - **位置更新**:在固定的时间内,新移动的距离就是 Vi(即速度向量在单位时间内的累积效果)。 - 参数简述:粒子群算法涉及多个参数,如粒子数量、学习因子(影响对过去经验的重视程度)、加速常数(控制探索与利用之间的平衡),这些参数的选择会影响算法的实际性能和收敛速度。
-
计算机视觉中,究竟有哪些好用的目标跟踪算法(下)-快速变形主要因为CF是模板类方法。容易跟丢这个比较好理解,前面分析了相关滤波是模板类方法,如果目标快速变形,那基于HOG的梯度模板肯定就跟不上了,如果快速变色,那基于CN的颜色模板肯定也就跟不上了。这个还和模型更新策略与更新速度有关,固定学习率的线性加权更新,如果学习率太大,部分或短暂遮挡和任何检测不准确,模型就会学习到背景信息,积累到一定程度模型跟着背景私奔了,一去不复返。如果学习率太小,目标已经变形了而模板还是那个模板,就会变得不认识目标。(举个例子,多年不见的同学,你很可能就认不出了,而经常见面的同学,即使变化很大你也认识,因为常见的同学在你大脑里面的模型在持续更新,而多年不见就是很久不更新) 快速运动主要是边界效应(Boundary Effets),而且边界效应产生的错误样本会造成分类器判别力不够强,下面分训练阶段和检测阶段分别讨论。 训练阶段,合成样本降低了判别能力。如果不加余弦窗,那么移位样本是长这样的: 除了那个最原始样本,其他样本都是“合成”的,100*100的图像块,只有1/10000的样本是真实的,这样的样本集根本不能拿来训练。如果加了余弦窗,由于图像边缘像素值都是0,循环移位过程中只要目标保持完整那这个样本就是合理的,只有目标中心接近边缘时,目标跨越边界的那些样本是错误的,这样虽不真实但合理的样本数量增加到了大约2/3(padding= 1),即使这样仍然有1/3(3000/10000)的样本是不合理的,这些样本会降低分类器的判别能力。再者,加余弦窗也不是“免费的”,余弦窗将图像块的边缘区域像素全部变成0,大量过滤掉分类器本来非常需要学习的背景信息,原本训练时判别器能看到的背景信息就非常有限,我们还加了个余弦窗挡住了背景,这样进一步降低了分类器的判别力(是不是上帝在我前遮住了帘。不是上帝,是余弦窗)。 检测阶段,相关滤波对快速运动的目标检测比较乏力。相关滤波训练的图像块和检测的图像块大小必须是一样的,这就是说你训练了一个100*100的滤波器,那你也只能检测100*100的区域,如果打算通过加更大的padding来扩展检测区域,那样除了扩展了复杂度,并不会有什么好处。目标运动可能是目标自身移动,或摄像机移动,按照目标在检测区域的位置分四种情况来看: 如果目标在中心附近,检测准确且成功。 如果目标移动到了边界附近但还没有出边界,加了余弦窗以后,部分目标像素会被过滤掉,这时候就没法保证这里的响应是全局最大的,而且,这时候的检测样本和训练过程中的那些不合理样本很像,所以很可能会失败。 如果目标的一部分已经移出了这个区域,而我们还要加余弦窗,很可能就过滤掉了仅存的目标像素,检测失败。 如果整个目标已经位移出了这个区域,那肯定就检测失败了。 以上就是边界效应(Boundary Effets),推荐两个主流的解决边界效应的方法,但速度比较慢,并不推荐用于实时场合。
-
深度学习目标检测系列:一文弄懂YOLO算法|附Python源码