YOLO系列学习(YOLOv2)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Bernice_lying


# YOLO:You only look once#

     方法如其名,仅需看一次图像,即可预测存在的物体和相对应的坐标位置,它追求“秒识”体验,有着“fast & accurate”的检测表现。它的建模思想是将检测问题转化为回归问题。

官方源码: http://pjreddie.com/yolo/


接上篇博客,下面将介绍YOLO系列第二部YOLOv2:

## YOLO-v2

【参考】

1.  https://blog.csdn.net/hrsstudy/article/details/70767950
2.  http://www.360doc.com/content/17/0810/10/10408243_678094588.shtml
3.  http://x-algo.cn/index.php/2017/03/03/1820/
4.  https://blog.csdn.net/linolzhang/article/details/59728206?locationNum=5&fps=1

【主线】
Better:对YOLOv1做了系列优化
Faster:使用新的基本特征提取网络——DarkNet
Stronger:使用分级分类思想,实现更多类别的目标检测

【Part I:Better】
(1)Batch Normalization
细节:每一个卷积层后都添加BN层。

效果:提升mAP约2% + 辅助模型正则化 + 移除dropout也不会发生过拟合。


(2)High Resolution Classifier
细节:使用全448×448的图像作为网络输入,训练分类模型,在得到的模型上继续finetune得到检测网络。
与YOLOv1对比,YOLOv1输入为224×224分辨率图像,训练检测网络时使用448×448图像,需要更久的滤波器调整时间。
效果:提升mAP约4%。

(3)Convolutional With Anchor Boxes
细节:摒弃v1的坐标直接预测,移除全连接层,改用anchor boxes来预测bounding box,但做了一些调整:
去除一个pooling层,得到更大分辨率的特征图(有更丰富的特征信息)
将输入压缩到416×416,使得在5次下采样(/2)后的特征图宽高是奇数,如13×13(奇数的意义在于让物体中心可落于cell中心,而非4个相邻的cell中间)
虽然使用了anchor思想,但是这个anchor仍然使用了YOLOv1的预测方法,即目标预测(包含x,y,w,h和置信度)和类别条件预测
效果:mAP略微下降,但召回率提升,并且模型支持更多的预测(YOLOv1只有2* 7 *7=98个预测,v2支持>1000个预测)

(4)维数聚类
动机/出发点:原始的Anchor的维数是人工设定的。
思考:能不能通过一种方法得到更好的先验维数,使其利于有更好的检测表现?
策略:使用k-means聚类,距离度量使用:d(box,centroid)=1-IOU(box,centroid)
思考:为什么使用这种基于IOU的距离度量,而不使用欧氏距离度量?

       直接的欧式距离只能衡量中心与中心的差距,这时大的物体的中心误差可能比小物体大;而我们的最终目的是想得到更吻合目标实际位置的Anchor先验维度,若使用IOU距离度量,它与box的大小无关,却可以让先验能得到好的IOU得分,比直接使用欧氏距离更适用。

注:论文中由实验得到k=5,可以达到模型复杂度和高召回率的平衡。

效果:优于原始Anchor设计,提升平均IOU约6.3。
图1 基于K-means的Anchor先验示意

(5)直接的位置预测

动机/出发点:模型不稳定,特别在早期的迭代时。这种不稳定来自于box中心位置的预测。
回忆原始的Anchor:它是通过网络学习偏移量后,通过公式计算,得到最终的预测x,y值。

因为t值无限制,以tx为例,当其大于0时,表示向右移动anchor宽的tx倍,小于0时,表示向左移动anchor宽的tx倍,这样就使得坐标可以落在图像的任何一点上,当落在别的cell中时就应当由那个cell来负责预测。此外,在模型随机初始化下,需要很长的训练时间才能使参数调整到可以敏感预测offset。

策略:针对上面的问题,YOLOv2延用YOLOv1的做法,预测bounding boxes相对cell左上角的坐标(即对应cell边长的比例)。为了确保bounding boxes的中心落在cell中(即坐标落在0到1之间),作者使用了logistic激活函数来约束预测值,使结果映射到[0,1]区间内。 每个cell预测5个bounding boxes,每个box预测5个坐标值,即tx,ty,tw,th,to,记cell中心与图像左上角cell距离(cx,cy),bounding box先验有宽pw,高ph,那么预测将为:
图2 bounding box位置预测示意

效果:维数聚类 + 直接的bounding box中心位置预测与原始anchor方法相比,提升了近5%。

(6)Fine-Grained Features
目的:原始13×13的特征图已可实现大物体的精确检测,但对于小物体,想进一步获取更充分的特征信息。
策略:添加一个passthrough层,将早期的层(有26×26分辨率特征图)的特征信息与低分辨率特征信息(13×13)通过concat操作,实现在不同通道上的特征融合。但是会存在有一个空间维度不匹配的问题,作者采用的方法是,将26×26×512作一个扩展,变成13×13×2048的特征图(这里实际上做了一个特征重排,即将特征图使用按行/列隔行采样,得到4个维度均为成13×13×512的特征图,concat后第三维变成2048),从而解决这个不匹配问题。
效果:提升近1%。

(7)Multi-Scale Training
目的:让模型对不同分辨率输入均能取得很好的检测表现。
策略:采用多种尺度的图像作为网络输入,训练对尺度鲁棒的模型。这里因为网络下采样32倍,因此输入尺寸选用32的倍数{320,352,…,608}。
效果:在检测速度和精度上达到了很好的平衡。 特别地:

对于低分辨率图像检测,精度较低但速度非常快。在输入尺寸为228×228的时候,检测帧率达到90FPS,而mAP几乎和Faster R-CNN的水准相同。使意味着YOLOv2在低性能GPU、高帧率视频、多媒体视频流场景中更加适用。 
对于高分辨率图像检测,能保持着实时水平,和高精度性能,如在VOC2007上mAP为78.6%。

图3 VOC2007上不同方法的精度和速度对比

(8)其他实验

【Part II:Faster】
思考:如何在保证精度的同时实现提速?先回忆一下,YOLOv1采用了GoogLeNet思想做特征提取基网络,但是实验表明它没有比用VGG16作特征提取网络的方法精度更高,而VGG16虽然精度高,却忽略了模型的复杂度。因此,需要找到一个既保障精度,又能有较小复杂度,能实现快速预测的特征提取网络。

策略:提出DarkNet-19分类网络,具体如下:
使用大量3×3卷积层
在3×3卷积层之间,使用1×1卷积层,用于特征压缩表征
池化后通道增倍(×2)
使用全局平均pooling做预测
使用BN,启到稳定训练、正则化模型、加速收敛作用

总之,这个网络共有19个卷积层,5个maxpooling层:

效果:Darknet-19 only requires  **5.58 billion operations** to process an image yet achieves  **72:9% top-1 accuracy** and  **91:2% top-5 accuracy** on ImageNet.

训练DarkNet-19分类网络:
      采用ImageNet1000类数据集来训练分类模型。训练以224×224图像作为输入;训练过程中,采用了random crops, rotations, and hue, saturation, and exposure shifts等data augmentation方法;预训练后,作者采用高分辨率图像(448×448)对模型进行finetune。

训练基于DarkNet-19检测网络:
      将分类模型的最后一层卷积层去除,替换为三层卷积层(3×3,1024 filters),最后一层为1×1卷积层,filters数目为需要检测的数目。对于VOC数据集,我们需要预测5个boxes,每个boxes包含5个适应度值,每个boxes预测20类别。因此,输出为125(=5×(20+5)) filters。最后还加入了passthough 层。

【Part III:Stronger】
策略:联合训练方法(分类和检测网络) + 多标签模型
(1)联合训练
细节:使用检测数据学习检测相关的信息,如bounding box坐标预测和物体存在置信度信息,训练反向传播基于整个YOLOv2损失函数;使用分类数据学习类别相关的信息,训练反传只包含分类这个分支的损失。

问题:检测的类别与分类的类别不完全一致,且可能有相互包含的关系,怎么办?
问题解决:构建无互斥现象的多标签模型。

注:直接使用softmax不适用于该问题,因为这里的很多类别有相互包含的关系,比如狗和比熊犬,softmax的前提假设是类别之间不能有相互包含的关系。

(2)分级分类Hierarchical classification
思想:仿照ImageNet,组建同义词集合,搭建WordNet;然后根据不同数据来源和包含关系,由使用树形结构将数据集进行细划分,得到最终的WordTree。

图4 COCO/ImageNet/WordTree示意

图5 softmax在ImageNet和WordTree上的应用

注意:
  1. 建树过程:若是在WordNet中,要想到达一个指定的类,若有多条通路,选择最短的一条,若只有一条,就直接添加到WordTree中;
  2. 在每个结点处,可以计算当前结点下所有子类别的条件概率,如:Pr(比熊犬|狗)、Pr(萨摩耶|狗)、Pr(斗牛犬|狗)...
  3. 若要从树跟结点开始,计算到WordTree中的某个结点,需要将到该结点的通路的所有条件概率相乘,如:Pr(斗牛犬)= Pr(斗牛犬|狗) * Pr(狗|犬科) * ... * Pr(脊椎动物|动物) * Pr(动物|物理对象),这里 Pr(物理对象)=1.
  4. 虽然softmax不可以计算有包含关系的类别,但是对于同一个同义词集合里的物体,可用softmax计算概率分布。

那么,怎么用这个WordTree呢?

寻找类别方式:在每个结点处,选择置信度最高的分支,直至达到某个设定的阈值才停止。
当样本标签属于叶子节点,父亲节点也被激活作为正样本;样本标签为非叶子节点,只针对非叶子节点和其父亲的部分进行反向传播。
对于分类图片(没有检测boundinig box标注的数据),此时得到一个置信度最高的bbox,将其当做一个负样本进行反向传播。

优点:
混合训练实现了网络可以检测、识别出来一些以前训练样本中没有的object。

【最终的效果】

实现最初的目标:Better/Faster/Stronger!






本博文内有博主的一些理解和思考,若有不同见解欢迎在讨论区分享,若有疑问也请在下方留言。


版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Bernice_lying

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 这是关于使用 YOLOv5 深入浅出的问题。YOLOv5 是目标检测领域的一种深度学习框架,它建立在 YOLO 系列的基础上,具有更快的速度和更高的精度。YOLov5 的核心基础知识包括卷积神经网络目标检测算法等。 ### 回答2: 目前,Yolo系列算法已经成为了目标检测领域的主流算法之一。其中,Yolov5作为Yolo系列的最新版本,相比之前版本,在检测速度和精度上都有了大幅度的提升。本文将从以下四个方面对Yolov5进行深入浅出地解析。 一、Yolov5基础框架 Yolov5的基础框架由三个主要部分组成,分别是:Backbone、Neck和Head。Backbone通常采用的是骨干网络,如ResNet、EfficientNet等,用于提取图像特征。Neck是用来融合不同层级的特征图,一般采用的是FPN(Feature Pyramid Network)或PAN(Path Aggregation Network)。Head是由若干个卷积层和全连接层组成的一个模块,用于进行目标检测。 二、Yolov5中的anchor boxes 在目标检测中,anchor boxes是非常重要的一部分。在Yolov5中,anchor boxes是通过k-means算法进行聚类得到的。这里的k-means算法是针对训练集中目标的大小进行的聚类,目的是得到最适合的anchor boxes尺寸。 三、Yolov5网络结构的变化 相比于Yolov4,Yolov5在网络结构上的变化主要包括:去掉了大量瓶颈块,增大了通道数,增加了下采样层数,减少了最大池化层。这些变化都是为了提高检测速度和准确率。 四、Yolov5的训练技巧 在训练阶段,Yolov5采用了GIoU损失函数和Mosaic数据增强方式。GIoU损失函数是一种与边框大小无关的、能够有效地惩罚预测框的偏移和错位的损失函数。而Mosaic数据增强方式则是一种结合了多张图像的数据增强方式,在提高数据样本多样性的同时还能有效避免过拟合。 综上所述,Yolov5作为Yolo系列的最新版本,不仅在检测速度和准确率上有了大幅提升,还采用了一系列新的训练技巧。对于从事目标检测研究的人员来说,了解和掌握Yolov5的核心基础知识是非常重要的。 ### 回答3: YOLOv5是一种新的目标检测算法,它通过使用深度学习技术来实现图像中物体的检测。这个算法具有很高的准确率和比较快的处理速度,因此在实际应用中得到了广泛的应用。下面来深入浅出的讲解YOLOv5的基础知识。 1、YOLOv5的特点:YOLOv5采用的是深度学习技术,利用神经网络对图像进行处理,从而实现物体检测。它的特点是速度快,准确率高。相比传统的目标检测方法,YOLOv5还可以同时处理多个物体的检测,所以它比较适合用于实时场景中的物体检测。 2、YOLOv5的网络结构:YOLOv5采用的是一种叫做YOLOv4的网络结构,它是一种非常复杂的卷积神经网络模型。整个网络分为多个层次,每一层都是由卷积、池化、激活函数等多个操作组成。通过这些层级的处理,YOLOv5可以进行对图像的特征提取,并最终输出每个物体的位置和类别。 3、YOLOv5的训练过程:YOLOv5的训练过程是一个比较复杂的过程,需要利用大量的标注好的图像数据进行训练。这个过程需要用到一些特殊工具和方法,比如数据增强、批量训练、学习率调整等。通过这些方法,YOLOv5可以不断地优化自己的检测能力,从而提升对物体的检测准确率。 4、YOLOv5的应用场景:YOLOv5的应用场景非常广泛,可以应用于工业生产、安防监控、交通管理等多个领域。比如在工业生产中,可以用来对自动化生产线上的产品进行检测;在安防监控中,可以用来对物体进行追踪和识别;在交通管理中,可以用来对车辆、行人等进行检测和统计。 以上就是YOLOv5的核心基础知识的完整讲解了,希望能对大家有所启发。总的来说,YOLOv5是一种比较先进的目标检测算法,其准确率和速度都较高,可以应用于多个领域。但是其训练过程比较复杂,需要有一定的专业知识和技能才能够进行有效的训练和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值