简介
YOLO(You Only Look Once)是一种基于深度学习的目标检测算法,它的核心思想是将目标检测问题转化为一个回归问题,通过一个神经网络直接预测目标的类别和位置。
YOLO算法将输入图像分成SxS个网格,每个网格负责预测该网格内是否存在目标以及目标的类别和位置信息。此外,YOLO算法还采用了多尺度特征融合的技术,使得算法能够在不同尺度下对目标进行检测。 相比于传统的目标检测算法,如R-CNN、Fast R-CNN和Faster R-CNN等,YOLO算法具有更快的检测速度和更高的准确率。这得益于其端到端训练方式和单阶段检测的特性,使其可以同时处理分类和定位任务,避免了传统方法中的多阶段处理过程。因此,YOLO算法广泛应用于实时目标检测和自动驾驶等领域。
one-stage的优缺点:
优点:识别速度非常快,适合做实时检测任务
缺点:正确率相比较低
two-stage的优缺点:
优点:正确率比较高,识别效果理想
缺点:识别速度比较慢,通常达到5FPS
两阶段目标检测器是一种先生成候选框,然后对候选框进行分类和回归的检测方法。
这种方法主要包括两个阶段:
第一阶段:生成候选框。该算法从输入图像中生成多个候选框。每个候选框都会经过一个CNN模型进行特征提取,然后通过分类器进行过滤,保留与目标物体更相似的候选框。
第二阶段:在保留的候选框上进行精细的分类和回归。这个阶段通常使用另一个CNN模型或类似SVM的分类器来进行分类和回归。对于每个候选框,可能需要预测物体的类别、位置和大小等。 代表性的两阶段目标检测器包括R-CNN系列,以及其改进版本Fast R-CNN、Faster R-CNN和Mask R-CNN等。
Map指标
根据不同的阈值,绘制出召回率和精确率的曲线,将曲线以下的面积作为MAP值。当MAP值越大,则表示指标越好 。
网络架构
网络结构借鉴了 GoogLeNet 。24个卷积层,2个全链接层。(用1×1 reduction layers 紧跟 3×3 convolutional layers 取代Goolenet的 inception modules )
7×7意味着7×7个grid cell,30表示每个grid cell包含30个信息,其中2个预测框,每个预测框包含5个信息(x y w h c),分别为中心点位置坐标,宽高以及置信度,剩下20个是针对数据集的20个种类的预测概率。其中坐标的x,y用对应网格的归一化到0-1之间,w,h用图像的width和height归一化到0-1之间。
Yolo系列 v1 损失函数
YOLO-V1算法最后输出的检测结果为7x7x30的形式,其中30个值分别包括两个候选框的位置和有无包含物体的置信度以及网格中包含20个物体类别的概率。那么YOLO的损失就包括三部分:位置误差,confidence误差,分类误差。
i为第几个分格,j为预选框(总共两种)
i=30,j=1(1代表黄色的框,2代表蓝色的框)
位置误差
x,y为中心点坐标,w,h为预选框的长和宽
i=30时候为1,其他时候为0
i=30,j=1时候为1,其他时候为0
i=30,j=1时候为0,其他时候为1
confidence误差
置信度
c=Pr(Object)*lou
边界框内是否存在物体(Pr(Object)),以及边界框与真实物体的匹配程度(IOU)
分类误差
非极大值抑制(Non-Maximum Suppression,NMS)
目标检测中常用的一种技术,其主要作用是去除可能小的的检测框,只保留最有可能包含目标物体的框,从而提高检测的准确性和效率。
YOLO V1存在的优缺点:
优点:
- 实时性
- 网络结构简单
- 多对象检测
- 泛化能力
缺点:
- 定位精度
- 召回率低
- 对小目标检测不佳
- 每个cell只能生成有限的框