Yolo系列之Yolov2

简介

新的YOLO版本全名叫“YOLO9000:Better, Faster, Stronger”,对比YOLOV1的改进主要有两方面:

第一,作者使用了一系列的方法对原来的YOLO多目标检测框进行了改进,在保持原有速度的优势下精度得以提升。VOC 2007数据集测试,67FPS下mAP达到76.8%,40FPS下mAP达到78.6%,基本上可以与Faster R-CNN和SSD一战。

第二,作者提出了一种目标分类与检测的联合训练方法,通过这种方法,YOLO9000可以同时在COCO和ImageNet数据集中进行训练,训练后的模型可以实现多达9000种物体的实时检测。

下面根据论文提到的Better、Faster、Stronger三个方面来阐述YoloV2的细节:

Better

Batch Normalization

神经网络学习过程本质就是学习数据分布,一旦训练数据和测试数据的分布不同,那么网络的泛化能力也大大降低;另一方面,一旦每批训练数据的分布各不相同(batch梯度下降),那么网络就要在每次迭代都去学习适应不同的分布,这样将会大大降低网络的训练速度。

解决办法之一就是对数据都做一个归一化预处理。YoloV2网络通过在每一个卷积层之后添加batch normalization,极大地改善了收敛速度同时减少了对其他regularization方法的依赖(舍弃了dropout优化后依然没有过拟合),使得mAP获得了2%的提升。

High Resolution Classifier

预训练分类模型采用了更高分辨率的图片

YoloV1现在ImageNet(224*224)分类数据集上预训练模型的主体部分,获得较好的分类效果,然后再训练网络的时候将网络的输入从224*224增加为448*448。但是直接切换分辨率,检测模型可能很难快速适应高分辨率。

对于YoloV2,作者首先对分类网络(自定义的darknet)进行了finetune,分辨率改为448*448,在ImageNet数据集上训练10轮(10epochs),训练后的网络就可以适应高分辨率输入了。然后作者对检测网络部分也进行finetune,这样通过提升输入的分辨率,mAP获得了4%的提升。

Convolutional With Anchor Boxes

YoloV1是利用全连接层直接预测bounding box的坐标,导致丢失较多的空间信息,定位不准。YoloV2则借鉴了Faster R-CNN的思想引入了anchor,anchor是RNP网络中一个关键步骤,说的是在卷积特征图上进行滑窗操作,每一个中心可以预测9种大小不同的建议框。YoloV2移除了YoloV1中的全连接层而采用了卷积和anchor boxes来预测边界框。为了使检测所用的特征图分辨率更高,移除其中一个pool层,在检测模型中,YoloV2不是采用418*418的图片作为输入,而是采用416*416大小,因为YoloV2模型下采样的总步长为32,对于416*416大小的图片,最终得到的特征图大小为13*13,维度是奇数。这样特征图恰好只有一个中心位置,对于一些大物体,他们中心点往往落在图片中心位置,此时使用特征图的一个中心点去预测这些物体的边界框相对容易些。所以YoLoV2设计中要保证最终的特征图有奇数个位置。

Dimension Clusters(维度聚类)

作者在使用anchor的时候遇到两个问题,第一个是anchor boxes的宽高维度往往是精选的先验框,虽然说在训练过程中也会学习调整boxes的宽高维度,最终得到准确的bounding boxes。作者采用了K-means聚类方法训练bounding boxes,传统的K-means聚类方法使用的是欧氏距离函数,为了更贴近找到更合适的boxes的宽高维度,作者采取了IOU得分为评判标准,最终的距离函数为d(box,centroid)=1-IOU(box,centroid)

Direct Location prediction

作者在引入anchor box的时候遇到第二个问题:模型不稳定,尤其是在训练刚开始的时候。作者认为主要来自于预测box的中心坐标(x, y)值。基于region proposal的目标检测算法中,是通过tx和ty来得到(x, y)值,也就是预测的是offsets。这种方式是无约束的,预测的边界框很容易向任何方向偏移。因此每个位置预测的边界框可以落在图片任何位置,这导致模型的不稳定性,在训练时需要很长时间来预测出正确的offsets。

Fine-Grained Features

YoloV2的输入图片大小为416*416,经过5次maxpooling之后得到13*13大小的特征图,并以此特征图采用卷积做预测,13*13大小的特征图对于检测大物体是足够的,但是对于小物体还需要更精细的特征图(Fine-Grained Features)。因此SSD使用了多尺度的特征图来分别检测不同大小的物体,前面更精细的特征图可以用来预测小物体。

YoloV2提出了一种passthrough层来利用更精细的特征图,所利用的Fine-Grained Features是26*26大小的特征图(最后一个maxpooling层的输入),对于Darknet-19模型来说就是大小为26*26*512的特征图。passthrough层与Resnet网络的shortcut类似,以前面更高分辨率的特征图作为输入,然后将其连接到后面的低分辨率特征图上。前面的特征图维度是后面的特征图的2倍,passthrough层抽取前面层的每个2*2的局部区域,然后将其转换成channel维度,对于26*26*512的特征图,经过passthrough层处理之后就变成了13*13*2048的新特征图(特征大小降低4倍,而channels增加4倍),这样就可以与后面的13*13*1024特征图连接在一起行成13*13*3072的特征图,然后在此特征图基础上卷积做预测。

Multi-Scale Training

原来的Yolo网络使用固定的448*448的图片作为输入,现在加入anchor boxes之后输入变成了416*416,目前的网络只用到了卷积层和池化层,那么就可以进行动态调整(意思是可以检测任意大小图片)

不同于固定输入网络的图片尺寸的方法,YoloV2在迭代后就会微调网络,每经过10次训练(10epoch),就会随机选择新的图片尺寸。网络使用的降采样参数是32,所以就是用32的倍数进行尺度池化,具体采用320、352、384、416、448、480、512、544、576、608共10种size。

这种机制使得网络可以更好地预测不同尺寸的图片,意味着同一个网络可以进行不同分辨率的检测任务,在小尺寸图片上YoloV2运行更快,在速度和精度上达到了平衡。

Faster

Darknet-19

网络包含19个卷积层和5个max pooling层,而在YoloV1中采用的GoogleNet,包含24个卷积层和2个全连接层,因此DarkNet-19整体上卷积操作比YoloV1中用的GoogleNet要少,这是计算量减少的关键。最后用average pooling层代替全连接层进行预测。

YoloV2的训练

YoloV2的训练分三个阶段:

第一阶段就是先在ImageNet分类数据集上预训练DarkNet-19,此时模型输入为224*224,共训练160个epochs。

第二阶段将网络的输入调整为448*448,继续在ImageNet数据集上finetune分类模型,训练10个epochs,此时分类模型top-1准确率为76.5%,而top-5准确率为93.3%。

第三个阶段就是修改DarkNet-19分类模型为检测模型,并在检测数据集上继续finetune网络。

Stronger

带标注的检测数据集量比较少,而带标注的分类数据集量比较大,因此Yolo9000主要通过结合分类和检测数据集使得训练得到的检测模型可以检测约9000类物体。

一方面要构造数据集(采用WordTree解决),另一方面要解决模型训练问题(采用Joint classfication and detection)


参考:

论文地址:https://arxiv.org/abs/1612.08242

一文看懂YOLO v2 - 知乎

YOLOv2 论文笔记_Jesse_Mx的博客-CSDN博客

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答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是一种比较先进的目标检测算法,其准确率和速度都较高,可以应用于多个领域。但是其训练过程比较复杂,需要有一定的专业知识和技能才能够进行有效的训练和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值