YOLO系列(V1-V2-V3)

article/2025/8/23 13:26:01

yolo系列整理

版本作者主页程序论文
yoloV1点击打开点击打开点击打开
yoloV2点击打开点击打开点击打开
yoloV3点击打开点击打开点击打开

改进

V2 VS V1:

增加BN层:

  • 解决问题:每层的输入分布一直在改变,训练难度增加;
  • 采取措施:在每层卷积层后,添加batch normalization;
  • 改进效果:
    1.mAP获得了2%的提升;
    2.规范化模型,可以在舍弃dropout优化后依然不会过拟合;
    ##High Resolution Classifier
  • 解决问题:由于现有的特征提取网络局限,导致图片被resize到不足256 * 256,导致分辨率不够高,给检测带来困难;
  • 采取措施:
    1.提高分辨力到448 * 448;
    2.改变原来特征网络的输入分辨率,在ImageNet数据集上对分类网络进行fine tune训练10轮(10 epochs),使得网络适应高分辨率的输入;然后,对检测网络进行fine tune。
  • 改进效果:mAP获得了4%的提升;
    ##Convolutional With Anchor Boxes
  • 解决问题:全连接层的数据完成边框的预测,导致丢失较多的空间信息,定位不准;
  • 采取措施:
    1.借鉴了Faster R-CNN中的anchor思想
    2.在卷积特征图上进行滑窗操作,每一个中心可以预测9种不同大小的建议框。
    3.去掉了后面的一个池化层以确保输出的卷积特征图有更高的分辨率;
    4.缩减网络,输入分辨力为416416,使得输出的feature map宽高为基数,产生一个center cell(大物体通常占据了图像的中间位置),用一个中心cell预测大物体,否则就要用中间的4个cell来进行预测,有利于提高效率。
    5.卷积层降采样(factor为32),输入大小:416
    416;输出大小:13*13
  • 改进效果:召回率上升,准确率下降。
    1.改进后:预测13 * 13 * 9 = 1521个boxes,recall为88%,mAP为69.2%
    2.改进前:预测7 * 7 * 2 = 98个boxes,recall为81%,mAP为69.5%
    3.准确率只有小幅度的下降,而召回率则提升了7%。
    ##Dimension Clusters
  • 解决问题:
    1.anchor boxes的宽高维度往往是精选的先验框,如果一开始就选择了更好的、更有代表性的先验boxes维度,那么网络就更容易学到准确的预测位置;
    2.传统的K-means聚类方法使用的是欧氏距离函数,也就意味着较大的boxes会比较小的boxes产生更多的error,聚类结果可能会偏离;
  • 采取措施:
    1.距离函数:error就和box的尺度无关
    这里写图片描述
    聚类结果:扁长的框较少,而瘦高的框更多
    这里写图片描述
  • 改进效果:使用聚类方法,仅仅5种boxes的召回率就和Faster R-CNN的9种相当
    这里写图片描述
    ##Direct location prediction
  • 模型不稳定,尤其是在早期迭代的时候,大部分的不稳定现象出现在预测box的 (x,y)(x,y) 坐标上;
  • 这里写图片描述
  • 这里写图片描述
    这个公式的理解为:当预测 tx=1tx=1,就会把box向右边移动一定距离(具体为anchor box的宽度),预测 tx=−1tx=−1,就会把box向左边移动相同的距离。
    符号含义:
    1.x是坐标预测值
    2.xa 是anchor坐标(预设固定值)
    3.x∗是坐标真实值(标注信息)
    4.其他变量 y,w,h 以此类推,t 变量是偏移量;
    这个公式没有任何限制,使得无论在什么位置进行预测,任何anchor boxes可以在图像中任意一点结束。模型随机初始化后,需要花很长一段时间才能稳定预测敏感的物体位置。
  • 采取措施:
    1.采用预测相对于grid cell坐标位置的方法。
    2.13*13的grid,每个cell对应5个anchors box,每个anchors box对应5个值(分别是坐标和置信度),如下所示:
    这里写图片描述
    (cx,cy):这个cell距离图像左上角的cell数;
    (pw,ph):cell对应的anchors box的宽高;
    tx,ty 经sigmod函数处理过,取值限定在了0~1,实际意义就是使anchor只负责周围的box,有利于提升效率和网络收敛。
    e的幂函数是因为前面做了 lnln 计算;
    σ(tx):bounding box的中心相对栅格左上角的横坐标;
    σ(ty):bounding box的中心相对栅格左上角的纵坐标;
    σ(to)是bounding box的confidence score。
  • 改进效果:定位预测值被归一化后,参数就更容易得到学习,模型就更稳定。使用Dimension Clusters和Direct location prediction这两项anchor boxes改进方法,mAP获得了5%的提升。

创新

将目标检测作为回归问题,实现end-to-end训练和检测。
#V3
##改进
多尺度检测 改动基础分类网络和分类器

  1. 添加多尺度预测:将深层特征上采样后,与浅层特征融合,分别形成多个尺度,输出featuremap进行检测,每个尺度对应3中不同大小的anchor,负责预测不同大小的目标。
    尺度1:在基础特征网络后添加几层卷积层后,再输出box信息,负责预测较大目标
    尺度2:从尺度1网络的倒数第二层2倍上采样后与最后一个1616大小的featuremap相加,再通过几层卷积层后,输出box,相比尺度1变大size变大两倍,负责预测中等大小的目标。
    尺度3:与尺度2类似,使用32
    32大小的featuremap作为输出,负责预测较小目标。

对比

1.与RCNN和Fast RCNN对比:yolo没有求取proposal region,而RCNN系列需要通过selective research提取候选框,导致训练过程分为多个阶段完成。
与Faster RCNN对比:尽管用RPN 网络代替selective research,将RPN集成到Fast RCNN中,形成了一个统一的网络,实现卷积层参数的共享。但是在训练过程中还是需要反复训练RPN和Fast RCNN网络。
因此RCNN系列的检测,都属于two-stage策略。
2.YOLO通过一次inference,同时得出目标位置和分类scores,而RCNN系列将目标检测任务分成:检测和回归。
#基础网络
仿ResNet, 与ResNet-101或ResNet-152准确率接近,但速度更快.
这里写图片描述
这里写图片描述
##边框预测
仍采用之前的logistic方式:
KaTeX parse error: No such environment: align at position 7: \begin{̲a̲l̲i̲g̲n̲}̲ b_x &= σ(t_x)+…
其中:
c x , c y c_x,c_y cx,cy:网格坐标(以grid为单位);
p w , p h p_w,p_h pw,ph:anchor box尺寸;
##优缺点
相比RCNN,YOLO的缺点如下:

  1. 精确性差,由于目标的位置信息通过回归求出,没有进行微调;
  2. 召回率低,在每个网格中预测固定数量的bbox这种约束方式减少了候选框的数量。
    ##YOLO 和FAster R-CNN区别
  3. 统一网络:YOLO没有显示求取region proposal的过程。Faster R-CNN中尽管RPN与fast rcnn共享卷积层,但是在模型训练过程中,需要反复训练RPN网络和fast rcnn网络.
    相对于R-CNN系列的"看两眼"(候选框提取与分类,图示如下),YOLO只需要Look Once.
  4. YOLO统一为一个回归问题:而R-CNN将检测结果分为两部分求解:物体类别(分类问题),物体位置即bounding box(回归问题)。

网络结构

这里写图片描述
YOLO网络借鉴了GoogLeNet分类网络结构。不同的是,YOLO未使用inception module,而是使用1x1卷积层(此处1x1卷积层的存在是为了跨通道信息整合)+3x3卷积层简单替代。
作者还给出一个更轻快的检测网络fast YOLO,它只有9个卷积层和2个全连接层。使用titan x GPU,fast YOLO可以达到155fps的检测速度,但是mAP值也从YOLO的63.4%降到了52.7%,但却仍然远高于以往的实时物体检测方法(DPM)的mAP值。
网络最后一层,直接通过reshape将一维的vector调整到7730的结构。丢失了空间信息。

检测思路

**思路:**以end-to-end的方式,进行训练和预测,使用整幅图像的特征,预测所有类上的所有boxes。将一幅图像分成S*S的格子,如果目标中心落到某个grid中,该grid就负责检测该object。
**box相关参数:**那每个grid负责预测B个box以及这B个box的confidence scores,每个box对应的confidence score说明该box包含目标的可能性以及与GT box的接近程度,通过下式定义:
这里写图片描述
对于每个box: x , y , w , h , c o n f i d e c e x,y,w,h,confidece x,y,w,h,confidece
其中: ( x , y ) (x,y) (x,y):box中心坐标相对于grid cell的边界位置,范围是0~1;
( w , h ) (w,h) (w,h):box的宽和高相对于整幅图像大小,范围是0~1;
( c o n f i d e c e ) (confidece) (confidece):见上述公式;
这里写图片描述
**class相关参数:**每个grid对应C个条件概率: P r ( C l a s s i ∣ O b j e c t ) Pr(Classi|Object) Pr(ClassiObject),也就是如果box包含物体,那么box中物体属于某类的概率(注意这里不是01编码)。该后验概率仅反映出IoU最大的box所包含物体的类概率。
这里写图片描述
注意:
conditional class probability信息是针对每个网格的。
confidence信息是针对每个bounding box的。

test指标:既包含了bounding box中预测的class的 probability信息,也反映了bounding box是否含有Object和bounding box坐标的准确度。
这里写图片描述
下图说明了这两方面的评估,以及最终的综合评估:
这里写图片描述
得到30维向量后,通过上述公式,将向量整合成20*1维的向量,如下图所示:
这里写图片描述
每个grid按照上面的规则,整合后的向量如下:
这里写图片描述
将小于阈值的结果进行抑制:
这里写图片描述
非极大值抑制:
这里写图片描述
输出检测结果:
这里写图片描述

训练思路(loss函数)

这里写图片描述
网络训练和检测思路不同。
仅仅通过最小均方误差来定义loss函数,存在不足,需要通过以下规则进行修改:

  1. 不同指标之间权衡关系:8维的localization error和20维的classification error同等重要显然是不合理的。
    解决办法:更重视8维的坐标预测,给这些损失前面赋予更大的loss weight, 记为 λcoord ,在pascal VOC训练中取5。(上图蓝色框)
  2. 大部分grids不含物体:那么就会将这些栅格中的bounding box的confidence 置为0,相比于较少的有object的栅格,这些不包含物体的栅格对梯度更新的贡献会远大于包含物体的栅格对梯度更新的贡献,这会导致网络不稳定甚至发散。
    解决办法:如上述红色框和黄色框,通过调整 λ n o o b j λnoobj λnoobj实现两者之间对梯度平衡作用。
    3.含有object的bbox的confidence loss (上图红色框) 和类别的loss (上图紫色框)的loss weight正常取1。
    4.**不同大小box对IoU影响:**对不同大小的bbox,相同的偏离,大bbox对IOU的影响若于小box。通过sum-square error loss对该问题进行缓和。
    调整的目标:相同的偏离,增强对小bbox的IOU的影响,减弱打的bbox的IOU的影响。为了缓和这个问题,作者用了一个巧妙的办法,就是将box的width和height取平方根代替原本的height和width。 如下图:small bbox的横轴值较小,发生偏移时,反应到y轴上的loss(下图绿色)比big box(下图红色)要大。
    如下图所示:
    这里写图片描述

每个grid有多个boxes,最终的结果,采用IoU最大的box predictor预测,因此,不同box之间存在竞争,因此,随着训练轮数的增加,特定box predictor越来越好的,负责预测不同尺寸的物体。

#参考网址
YOLO详解
图解YOLO
YOLOv1论文理解
目标检测网络之 YOLOv3
darknet+win+linux接口
yolov3论文解析


http://chatgpt.dhexx.cn/article/3SEJk0QH.shtml

相关文章

YOLO_v2讲解

文章目录 一:YOLO_v2的改进二:网络细节【BN层取代了Dropout】【高分辨率分类器】【Anchor思想】【K-means选定先验框】【预测坐标相对于Grid Cell的位置】【细粒度的特征】【多尺度训练】 三:损失函数四:YOLO_v2的不足 一&#xf…

YOLOV2原理理解

YOLOV2 一、YOLOV1的不足之处二、YOLOV2的改进论文精读AbstractIntroductionBetter(重点笔记)FasterStronger(非重点) 三、YOLOV2网络的输出输出结果解释输出图示 四、YOLOV2的LOSS函数五、Kmeans聚类——anchor box六、YOLOV2算法总结七、关于YOLOV2中a…

【目标检测】单阶段算法--YOLOv2详解

论文题目:《YOLO9000: Better, Faster, Stronger》 论文地址:https://arxiv.org/pdf/1612.08242.pdf 一文读懂YOLOv1:YOLOv1 一文读懂YOLOv3:YOLOv3 一文读懂YOLOv4:YOLOv4 1. 前言 在前面的一篇文章中,我…

yolov2详细讲解

yolov2详细讲解 概述 YOLO v1虽然检测速度快,但在定位方面不够准确,并且召回率较低。为了提升定位准确度,改善召回率,yolov2在yolov1的基础上提出了几种改进策略,如下图所示,一些改进方法能有效提高模型的…

YOLO V2解析

YOLO V2是YOLO系列的第二版,在YOLO V1的基础上加以改进,改善了YOLO V1定位不准的问题,又保证了检测的速度,可谓集准确性与速度于一身(YOLO V2获得了CVPR2017的最佳论文提名)。YOLO V2的原文提出了两个模型:YOLO V2和YOLO9000,本文主要着重YOLO V2,下面让我们一同走进Y…

YOLOV2详解

yolov2 YOLOv2论文中英文对照翻译_IT修炼家的博客-CSDN博客 YOLOv2 论文笔记Jesse_Mx的博客-CSDN博客yolov2论文 精读目标检测5——yolo2详解及其预测代码复现cv君的博客-CSDN博客yolo2 目标检测|YOLOv2原理与实现(附YOLOv3) - 知乎 (zhihu.com) YOLO v2 - ZhicongHou - 博客园…

YOLO 超详细入门02 v2 (含代码及原文)

文章目录 前言背景总结一、YOLOv2改进之框架1.1 网络架构1.2 Batch Normalization 二、YOLOv2改进方法之尺寸相关2.1 High Resolution Classifier(高分辨率的分类器)原因步骤 2.2 Fine-Grained Features(细粒度特征)原因步骤 2.3 …

深度学习目标检测_YOLOV2超详细解读

文章目录 YOLO v2概述Batch Normalization(批归一化)High Resolution Classifier(高分辨率预训练分类网络)New Network:Darknet-19神经网络中的filter (滤波器)与kernel(内核&#x…

【YOLO系列】YOLOv2论文超详细解读(翻译 +学习笔记)

前言 时隔一年,YOLOv2隆重登场,新的YOLO版本论文叫《YOLO9000: Better, Faster, Stronger》,作者 Joseph Redmon 和 Ali Farhadi 在 YOLOv1 的基础上,进行了大量改进,提出了 YOLOv2 和 YOLO9000,重点解决Y…

训练Doc2Vec

将文本数据表示成list of list的形式: 对每一条文本进行分词操作,可能的话,去除停用词,加上自定义词等: 将分词后的文本转换为gensim所需要的形式: 训练Doc2Vec,其中参数dm1表示DM模型&#…

Doc2vec计算文本相似度

1.Doc2vec模型介绍 Doc2Vec模型基于Word2vec模型,并在其基础上增加了一个段落向量。 以Doc2Vec的C-BOW方法为例。算法的主要思想在以下两个方面: 训练过程中新增了paragraph id,即训练语料中每个句子都有一个唯一的id。paragraph id和普通的…

Doc2vec 简介及应用

Doc2vec是基于Word2Vec方法,有两种训练方法,为Distributed Memory (DM) 和Distributed Bag of Words (DBOW); Distributed Memory version of Paragraph Vector (PV-DM)方法与CBOW方法类似,Bag of Words version of Paragraph Vec…

doc2vec java_Doc2Vec,Word2Vec文本相似度 初体验。

https://radimrehurek.com/gensim/models/word2vec.html 接上篇 : import jieba all_list jieba.cut(xl[‘工作内容‘][0:6],cut_allTrue) print(all_list) every_one xl[‘工作内容‘].apply(lambda x:jieba.cut(x)) import traceback def filtered_punctuations…

文本多分类之Doc2Vec实战篇

在我之前的几篇博客中,我介绍了两种文档向量化的表示方法,如Sklearn的CountVectorizer和TfidfTransformer,今天我们再来学习另外一种文档的向量化表示方法-Doc2Vec。如果你还不太了解Doc2Vec的话,我提供一些资料以便你可以对它有深入的了解: …

【NLP】 Word2Vec模型 Doc2Vec模型

🔎大家好,我是Sonhhxg_柒,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 📝个人主页-Sonhhxg_柒的博客_CSDN博客 📃 🎁欢迎各位→点赞…

基于gensim的doc2vec实践

1.“句向量”简介 word2vec提供了高质量的词向量,并在一些任务中表现良好。 关于word2vec的原理可以参考这几篇论文: https://arxiv.org/pdf/1310.4546.pdfhttps://arxiv.org/pdf/1301.3781.pdf 关于如何使用第三方库gensim训练word2vec可以参考这篇…

Word2vec And Doc2vec - 文本向量化

word2vec 与 doc2vec的区别: 两者从字面意思上就可以大致判断出区别来,word2vec主要针对与单词,而doc2vec主要针对于文本: 顾名思义,Word2Vec是在单个单词上训练的,而Doc2vec是在可变长度的文本上训练的,因…

doc2vec原理

doc2vec和word2vec类似,Doc2vec也有两种训练方式,分别是Distributed Memory(DM) 和 Distributed Bag of Words(DBOW)。 DM 试图在给定上下文和段落向量的情况下预测单词的概率,与word2vec中CBOW类似,在一个句子或者文档的训练过程…

Doc2vec论文阅读及源码理解

《Distributed representationss of Sentences and Documents》 Quoc Le and Tomas Mikolov, 2014 文章目录 《Distributed representationss of Sentences and Documents》1. Distributed Memory Model of Paragraph Vectors (PV-DM).1.1 模型架构图1.2 相关代码阅读 2. Dist…

doc2vec介绍和实践

简介 与其他方法的比较 bag of words (BOW):不会考虑词语出现的先后顺序。 Latent Dirichlet Allocation (LDA):更偏向于从文中提取关键词和核心思想extracting topics/keywords out of texts,但是非常难调参数并且难以评价模型的好坏。 …