| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 【目标检测】YOLOv2 ,对YOLOv1的多种改进 -> 正文阅读 |
|
[人工智能]【目标检测】YOLOv2 ,对YOLOv1的多种改进 |
文章目录
一、YOLOv2简介YOLOv1介绍:【目标检测】YOLOv1 ,one-stage 目标检测算法的开山之作 首先还是接着推荐这篇博客: 你一定从未看过如此通俗易懂的YOLO系列(从v1到v5)模型解读 (中) 这篇博客对于整个目标检测的思想和网络的改进思路讲的很好。 YOLOv2即YOLO9000,原论文是《YOLO9000: Better, Faster, Stronger》 YOLO2相比于YOLOv1主要有两个大方面的改进: (1)使用一系列的方法对YOLO进行了改进,在保持原有速度的同时提升精度得到YOLOv2。 (2)提出了一种目标分类与检测的联合训练方法,同时在COCO和ImageNet数据集中进行训练得到YOLO9000,实现9000多种物体的实时检测。 二、目标检测模型的改进思路可以认为:
在YOLOv1的模型中检测头就是最后的2个全连接层(Linear Layers),它们是参数量最大的2个层,也是最值得改进的2个层。所以后面的YOLO模型都对这里进行改进。 YOLO v1一共预测49个目标,一共98个框。YOLOv1虽然速度快,但是预测的框不准确,主要有两个问题:
以某种object为正类,其他类别为负类。召回率(recall)表示正确预测该 object的数量占该 object所有数量的比例。 我们一个问题一个问题解决,首先第1个:预测的框不准确。这个问题的解决方法参看“3.6 直接位置预测”。 问题2:很多目标找不到。这个问题的解决方法参看“3.5 anchor 维度聚类”。 三、YOLOv2的改进之处YOLOv2 在 YOLOv1的基础上的几种改进策略如下: 3.1 批归一化(Batch Normalization,BN)YOLOv2 在每个卷积层之后加了BN层,去掉Dropout。BN层可以起到一定的正则化效果,提升模型收敛速度,防止模型过拟合。YOLOv2通过使用BN层使得MAP( Mean Average Precision )提高了2%. 3.2 高分辨率的分类器(hi-res classifier)目前的大部分检测模型都会使用主流分类网络(如VGG、Resnet等)在ImageNet 上的预训练模型作为特征提取器,而这些网络都是小于256*256分辨率的图片作为输入进行训练的,低分辨率会影响模型检测能力。 YOLOv2将输入图片的分辨率提升至448x448,为了使网络适应新的分辨率,YOLOv2先在ImageNet上以448x448的分辨率对网络进行10个epoch的微调,让网络适应高分辨率的输入。通过使用高分辨率的输入,YOLOv2的MAP提升了约4%。 3.3 与锚框进行卷积(Convolutional With Anchor Boxes)YOLOv1利用全连接层直接对边界框进行预测,导致丢失较多空间信息,定位不准。YOLOv2去掉了YOLOv1中的全连接层,使用Anchor Boxes预测边界框,同时为了得到更高分辨率的特征图,YOLOv2还去掉了一个池化层。 由于图片中的物体都倾向于出现在图片的中心位置,若特征图恰好有一个中心位置,利用这个中心位置预测中心点落入该位置的物体,对这些物体的检测会更容易。所以总希望得到的特征图的宽高都为奇数。 YOLOv2通过缩减网络,使用416x416的输入,模型下采样的总步长为32,最后得到13x13的特征图,然后对13x13的特征图的每个cell预测5个anchor boxes,对每个anchor box预测边界框的位置信息、置信度和一套分类概率值。 使用anchor boxes之后,YOLOv2可以预测 13x13x5=845个边界框(YOLOv2可以预测 7x7x2=98个边界框),模型的召回率由原来的81%提升到88%,MAP由原来的69.5%降低到69.2%.召回率提升了7%,准确率下降了0.3%。 3.4 新的网络 Darknet-19(new network)YOLOv2采用 Darknet-19网络,其网络结构(以输入图片尺寸为416*416为例)以及YOLOv2整体的网络结构如下图所示:
Darknet-19 包括19个卷积层和5个max pooling层,主要采用3x3卷积和1x1卷积。这里1x1卷积可以压缩特征图通道数以降低模型计算量和参数,每个卷积层后使用BN层以加快模型收敛同时防止过拟合。最终采用global avg pool (全局池化)做预测。采用YOLOv2,模型的MAP值没有显著提升,但计算量减少了。 3.5 anchor 维度聚类(dimension priors)我们首先回顾一下Faster RCNN,经典目标检测算法:RCNN、Fast RCNN、 Faster RCNN 基本思想和网络结构介绍 Faster RCNN中引入了anchor,特征图中的每个位置在原图中生成9个anchor(3种面积和3种长宽比,3*3=9)。 也就是说在Faster R-CNN和SSD中,先验框都是手动设定的,带有一定的主观性。虽说在训练过程中网络也会学习调整boxes的宽高维度,最终得到准确的bounding boxes。但是如果能够一开始就选择了更好的、更有代表性的先验 boxes尺寸,那么网络就应该更容易学到准确的预测位置。 在YOLOv1中,生成每个网格生成2个框,导致其总体预测精度不高。也就是说2个框不够,9个框可能略多,因为计算时间太长,注意是可能,因为我们现在还没有别的方案做对比。那么如何选择合适有效的anchor数量呢?YOLOv2采用的方法是聚类。 YOLOv2采用 k-means聚类算法对 训练集中标注的 ground truth boxes做聚类分析,boxes之间的IOU值作为聚类指标,找到 ground truth boxes的统计规律,从而自动找到更好的boxes尺寸。以聚类个数k为 anchor 个数,也就是说一个特征图的点在原图中在生成5个特点尺寸的 anchor,YOLOv2最终生成 13x13 分辨率的特征图,所以会生成13x13x5=845个anchor(一个anchor就是一个候界框)。 那么为什么选取聚类数 k=5呢?作者综合考虑了模型复杂度和召回率,最终选择5个聚类中心,得到5个先验框。作者发现其中中扁长的框较少,而瘦高的框更多,更符合行人特征。通过对比实验,发现用聚类分析得到的先验框比手动选择的先验框有更高的平均IOU值,这使得模型更容易训练学习。 3.6 直接位置预测(Direct location prediction)Faster R-CNN使用anchor boxes预测边界框相对先验框的偏移量,由于没有对偏移量进行约束,每个位置预测的边界框可以落在图片任何位置,甚至回归之后的anchor可能会超过对应的网格范围。会导致模型不稳定,加长训练时间。 YOLOv1直接预测x,y,w,h等参数,范围比较大,现在我们想预测一个稍微小一点的值,来增加准确度。 YOLOv2根据所在网格单元的位置来预测坐标。设一个网格相对于图片左上角的偏移量是cx和cy,先验框的宽度和高度分别是pw和ph,则预测的边界框相对于特征图的中心坐标(bx,by)和宽高bw、bh的计算公式如下图所示。 ???????? 其中各个变量的含义如下: ???????? YOLOv2结合anchor 聚类, 通过对边界框的位置预测进行约束,使模型更容易稳定训练,使得模型的MAP值提升了约5%。 3.7 细粒度特征(Fine-Grained Features)YOLOv2借鉴SSD使用多尺度的特征图做检测,提出pass through层将高分辨率的特征图与低分辨率的特征图联系在一起,从而实现多尺度检测。YOLOv2提取Darknet-19最后一个max pool层的输入,得到26x26x512的特征图。经过1x1x64的卷积以降低特征图的维度,得到26x26x64的特征图,然后经过pass through层的处理变成13x13x256的特征图(抽取原特征图每个2x2的局部区域组成新的channel,即原特征图大小降低4倍,channel增加4倍),再与13x13x1024大小的特征图连接,变成13x13x1280的特征图,最后在这些特征图上做预测。使用Fine-Grained Features,YOLOv2的性能提升了1%. 3.8 多尺度训练(Multi-Scale Training)YOLOv2中使用的Darknet-19网络结构中只有卷积层和池化层(没有全连接层),所以其对输入图片的大小没有限制。YOLOv2采用多尺度输入的方式训练,在训练过程中每隔10个batches,重新随机选择输入图片的尺寸。由于Darknet-19下采样总步长为416/13=32,输入图片的尺寸一般选择32的倍数{320,352,…,608}。 采用Multi-Scale Training, 可以适应不同大小的图片输入,当采用低分辨率的图片输入时,mAP值略有下降,但速度更快,当采用高分辨率的图片输入时,能得到较高mAP值,但速度有所下降。 3.9 高分辨率探测器(Hi-res Detector)YOLOv2调整网络后能适应多种尺寸的输入图像,通常使用416 * 146大小的输入图像。若采用较高分辨率的输入图像,比如 608 * 608,则MAP可以提升1.8% 3.10 总结YOLOv2借鉴了很多其它目标检测方法的一些技巧,如Faster R-CNN的anchor boxes, SSD中的多尺度检测。除此之外,YOLOv2在网络设计上做了很多tricks,使它能在保证速度的同时提高检测准确率,Multi-Scale Training更使得同一个模型适应不同大小的输入,从而可以在速度和精度上进行自由权衡。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 11:51:40- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |