[ 目标检测 ] 经典网络模型5——YOLO-v1 详解与复现


Author :Horizon Max

编程技巧篇:各种操作小结

机器视觉篇:会变魔术 OpenCV

深度学习篇:简单入门 PyTorch

神经网络篇:经典网络模型

算法篇:再忙也别忘了 LeetCode


[ 目标检测 ] 经典网络模型5——YOLO-v1 详解与复现

  • You Only Look Once
  • YOLO-v1 详解
    • 特点
    • 网络结构
      • 网络设计
      • 结构框图
      • 损失函数
      • 局限性
      • 性能比较
  • YOLO-v1 复现

You Only Look Once

在此之前目标检测都有着多阶段的过程,并采用单独的分类器来进行分类 ;

如 R-CNN 利用一系列 SVMs 对生成的 Region proposals 进行分类预测,存在着 检测速度慢、优化难 的问题 ;

YOLO 算法将目标检测作为一个单一的回归问题,直接对输入图像进行边界框与类别概率的预测 ;

YOLO 也是 You Only Look Once 的缩写,表示只需要看一次图像就能知道是什么物体以及位于何处 ;

检测速度base YOLO – 45 FPS , Fast YOLO – 155 FPS ;


论文地址:You Only Look Once: Unified, Real-Time Object Detection

作者:Joseph Redmon,Santosh Divvala,Ross Girshick,Ali Farhadi

收录:CVPR 2016


[ 目标检测 ] 经典网络模型5——YOLO-v1 详解与复现_第1张图片


YOLO-v1 详解

特点

滑动窗口(sliding window) 和 区域建议(region proposal) 方法不同 ;

YOLO 在训练和测试阶段都是通过获取整张图像的信息 ;

  • 检测速度快 (extremely fast) ;
  • 对图像进行全局的推理 (reasons globally about the image) ;
  • 学习高泛化性 (highly generalizable) ;

YOLO 可以实现端到端的训练和实时预测, 且能保证较高的 mAP 值 ;

注: 检测速度 ,准确率未达到领先,且针对小物体检测定位困难 ;


网络结构

将目标检测的独立组件统一为单一的神经网络,实现对整张图像和图像中的所有对象进行分析 ,利用全局特征来预测所有类别和对应的边界框 ;


网络设计

  • 将输入图像划分为 S×S 的网格,如果检测物体的中心位于该网格内,则该网格负责该物体的检测 ;
  • 每个网格负责预测 B 个边界框和对应边界框的置信度,置信度包括:是否包含物体 + IOU得分,Confidence = Pr(Object) * I O U p t IOU^t_p IOUpt
  • 每个边界框参数包括5个:x,y,w,h,Confidence,其中x,y表示预测框中心坐标,w,h是相较于整张图像的宽度和高度(值为0~1);
  • 每个网格对 C个类别进行预测,Probability = Pr(Classi | Object),概率取决于网格中是否包含物体,针对每个网格只预测一组类别概率,不管边界框数量 B 是多少 ;
  • 最后得到每个框的置信度得分 ;

在这里插入图片描述

注: 在 PASCAL VOC 数据集上,YOLO的一些参数设置如下:

    S = 7,B = 2,C = 20,最后的一层大小为 7 × 7 × 30 tensor ;


    具体可以参考以下图解:

[ 目标检测 ] 经典网络模型5——YOLO-v1 详解与复现_第2张图片


结构框图

[ 目标检测 ] 经典网络模型5——YOLO-v1 详解与复现_第3张图片


YOLO 网络结构受 GoogLeNet 的启发,一共是 24个卷积层 和 2个全连接层(fast YOLO 卷积层减小为9层 );

交替使用1×1卷积层用于减小前一层的特征 ;

  • 输入维度:448×448×3
  • 输出维度:7×7×30

训练阶段:

  • 在 ImageNet 1000-class competition dataset 上对前 20层 网络进行预训练,在 ImageNet 2012验证集上 top-5 达到 88% 的准确率,输入图像分辨率为 224×224 ;
  • Ren 等人的研究表明,在预训练网络中同时添加卷积层和连接层可以提高模型性能 ;
  • 而后添加了4层卷积层和2层全连接层,并随机初始化权重,将输入图像分辨率从 224×224 提升至 448×448 ;

损失函数

主要使用平方和误差,得益于它很容易优化的特点,并对平方和误差进行优化 :

  • 增加边界框坐标预测损失,减少不包含对象的边界框置信度预测损失,防止网格中不存在物体导致置信度得分趋于零从而使模型训练不稳定,设置了两个参数:λcoord = 5 ,λnoobj = 0.5 ;
  • 平方和误差对于大边界框和小边界框得到权重相同,对 w,h 偏差值采用先开方求和再平方,这样可以使大边界框中的小偏差较小边界框小偏差影响更小 ;

    最终得到的损失函数 :

[ 目标检测 ] 经典网络模型5——YOLO-v1 详解与复现_第4张图片


局限性

  • 对于多物体检测困难:每个网格只能预测两个框,每个框只能有一类 ;
  • 对于新的或不寻常的目标尺寸和配置预测效果差 ;
  • 主要错误的原因说定位误差:直接预测带来的影响 ;

性能比较

[ 目标检测 ] 经典网络模型5——YOLO-v1 详解与复现_第5张图片


[ 目标检测 ] 经典网络模型5——YOLO-v1 详解与复现_第6张图片


YOLO-v1 复现

# 后续更新 ~

输出结果:




你可能感兴趣的:(经典网络模型,人工智能,深度学习,目标检测,YOLO,神经网络)