IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> YOLO2论文的理解(完整篇) -> 正文阅读

[人工智能]YOLO2论文的理解(完整篇)

本人CV算法新人一枚,文章主要是记录并分享自己的论文阅读体会,由于本人才学疏浅,如有不对或改善的地方,烦请指出,欢迎交流。
论文地址:YOLO9000: Better, Faster, Stronger
项目主页:YOLO: Real-Time Object Detection

概述

YOLO致力于实时、快速、高精度的端到端模型,YOLO1的速度很快,但是相对于Faster RCNN而言,准确率较低,在错误分析中发现,YOLO1的召回率和localization的错误占比更高。
YOLO2是在YOLO1的基础上进行改进,在保证分类准确率的基础上提高召回率和localization,得到一个快速、高精度的端到端模型。
因为检测任务标注数据匮乏,类别也只有几十到几百种,而分类数据集庞大并且拥有几万到几十万的分类,除此之外,检测任务的标注代价太高,所以作者采用了一种新的方法来利用分类数据集,并提出了联合训练算法,使得检测数据集和分类数据集都参与到目标检测器的训练中。最后,YOLO2作为一个实时目标检测器,可以检测至少9000种不同的目标类别。

论文从better、faster、stronger三方面阐述YOLO2相对于YOLO1的进步。

Better

在这里插入图片描述
上图展示了从YOLO1到YOLO2的改进和相应的mAP值。

1、Batch Normalization:
Batch Normalization可以加快模型的收敛,并且能消除对其他形式正则化的需要。作者对网络每一个卷积层都使用了Batch Normalization,mAP得到了2%的提高,而且删除dropout也不会使模型过拟合。

2、High Resolution Classifier:
在YOLO1中,预训练模型的图像输入尺寸为224* 224,在检测训练阶段,又将图像输入尺寸扩大为448* 448。这意味着模型在学习目标检测的同时,还要适应新的输入分辨率。
YOLO2中,作者使用448*448的分辨率(还是ImageNet)finetune分类模型,epoch=10,然后再fine tune 检测模型,最后使mAP提高了3%。

3、Convolutional With Anchor Boxes:
YOLO是通过卷积特征提取器上面的全连接层直接预测bboxes的坐标。Faster R-CNN使用精选的先验框来预测bboxes,Faster R-CNN的RPN网络通过卷积层预测anchor boxes的offsets和置信度,RPN会预测feature map中每一个location的offsets,预测offsets而不是coordinates,这简化了问题,而且模型容易去学习。

作者去掉了YOLO中的全连接层,使用anchor boxes来预测bboxes。首先,为了得到更高的分辨率,作者删掉了一个池化层。削减网络以处理416* 416的图片输入,这是为了得到一个locations为奇数的feature map,从而让feature map只有一个center cell,最后YOLO的卷积层通过因子32对输入图像进行下采样,最后得到13*13的feature map。

切换为anchor boxes时,YOLO继续将类别预测机制和空间定位分离,而不是预测每一个anchor box的类别和检测。对每一个proposed box预测其与ground truth的IOU,一个location预测一个类别的条件概率(含有object时的class概率)。

之前的YOLO会预测98个boxes,但使用了anchor boxes后需要预测13* 13* 9=1521个,所以最终的召回率得到了较大提高:mAP从69.5降到69.2,而召回率从81%提高到了88%,这说明YOLO还有很大的改进空间。

4、Dimension Clusters:
在使用anchor boxes时,作者遇到了两个问题,第一个是,box的维度是精选出来的(hand picked priors),即一个feature map中一个location映射到原图片中的anchor后,按照固定的宽高比和大小比例给出anchor boxes。即便网络可以适当地去调整boxes,但是如果我们使用更好的先验框(priors),模型学习检测能力就会更容易。

作者使用K-means训练训练集bboxes来得到更好的先验框。如果使用传统的K-means计算距离的算法,大的boxes会比小的产生更多的错误,然而我们希望通过priors可以获得更好的IOU分数,所以作者使用了如下的公式计算距离:

         d(box, centroid) = 1 - IOU(box, centroid)

在这里插入图片描述
上图展示了使用不同的k和得到的Avg IOU之间的关系,综合模型复杂度和召回率,作者使用k=5。
从右边的图可以看出,不同于anchor boxes,使用cluster centroid和hand picked priors有很大的不同,有更少的矮宽型boxes,和更多的瘦高型的boxes。
在这里插入图片描述
从表中可以看出,当k=5时,Avg IOU=61.0,已经比anchor boxes(数量为9)的高,当k=9时则有更高的Avg IOU。这表明,使用K-means生成boxes来开始模型的训练,会有一个更好的表示,也能让模型更容易去学习。

5、Direct location prediction:
作者遇到的第二个问题是:模型不稳定,尤其是迭代早期。大部分的不稳定来自于预测box的中心店(x,y)坐标。在RPN中,是通过预测tx和ty来计算中心点坐标的:
在这里插入图片描述
所以:x = (tx ? wa) + xa, y = (ty ? ha) + ya
举个例子,如果tx=1,会让box向右移动wa(box的宽度)的距离,tx=-1则向左移动。这个公式是不受约束的,会导致不管anchor boxes预测的位置是什么,都可以在图像的任意点结束。随机初始化会使模型需要很长时间去预测合理的偏移量。

作者的做法是延续YOLO的方法,直接预测相对于网格(grid cell)的位置坐标,将groundtruth限制在0~1之间,然后用逻辑回归激活将模型的预测值控制在这个范围内。

模型对每一个cell预测5个bboxes,每一个box预测5个坐标值,tx,ty,tw,th,to(如下图)。如果cell相对于图像左上角的偏移是(cx,cy),Bbox prior的宽和高是pw,ph,则预测框的值根据以下公式计算:
在这里插入图片描述
因为作者限制了位置的预测,所以参数比较容易学习,模型也更加稳定。通过使用dimension cluster和directly predicting bbox center location,是YOLO的mAP提高了5%。
在这里插入图片描述

6、Fine-Grained Features(细粒度特性):
经过改良的 YOLO是在13* 13的feature map上进行预测,虽然这对大的物体来说已经足够,但是更细粒度的特征可能有助于检测更小的物体。Faster R-CNN和SSD都通过多样的feature map产生不同分辨率的区域建议。作者的方式是添加一个转移层,通过将相邻的特征整合到不同的channel中,把高分辨率(26* 26)和低分辨率(13* 13)的特征图连接起来,这个类似于ResNet的identity mappings(这里不是很明白)。这样就把26* 26* 512的特征图改成了13* 13* 2048,就能够和原来的特征图连接起来。通过这个方法,YOLO的mAP提高了1%。

7、Multi-Scale Training:
YOLO1的图片输入尺寸是448* 448,因为anchor box的使用,YOLO将图片尺寸改为416416,然而作者希望YOLO2可以在不同的图片尺寸上具有鲁棒性。作者的做法是每隔几次迭代就改变网络。每10个batch,网络就会随机选择一个新的图像尺寸。因为模型的采样因子是32,所以从32的倍数中选择新的尺寸:{320,352,…,608},这样最大的尺寸是608 * 608,最小为320 320。作者会调整网络到那个维度,并继续训练。
在这里插入图片描述
这种机制使得模型横跨不同的输入维度去很好地预测。也就是说,用同一个网络对不同分辨率的图像进行检测预测。上表展示了YOLO2对不同分辨率图像的检测准确度和速度,同时也展示了其他先进模型的性能。当YOLO2对最小的输入图像(288* 288)进行检测时,FPS达到了91,同时mAP和Fast R-CNN基本持平,这非常适合小GPUs、高帧率视频或者多帧视频流。当检测544*544分辨率的图像时,mAP达到了最高值78.6%。
在这里插入图片描述

8、Further Experiment:
在这里插入图片描述

作者对YOLO2在VOC2012上进行训练,上图展示了其与其他模型的性能比较,YOLO2的mAP达到了73.4,然而速度更快。作者也在COCO数据集上进行了训练,并且和其他方法进行了比较,如下图,在IOU=0.5时,mAP为44.0,仅次于SSD512。
在这里插入图片描述

Faster

作者想要的结果是模型的检测能力又快又准。很多检测模型都依赖于VGG-16作为特征提取器,VGG-16是一个强健、精确的分类网络,但是它比较复杂。VGG-16的卷积层跑一次224* 224的图片需要306.9亿次浮点数运算。目前YOLO使用的是基于Googlenet结构的定制网络,这比VGG-16快,并且是需要85.2亿次运算。然而它的准确度较低于VGG-16。在ImageNet上测试224* 224的图片,top-5的准确率是88.0%,VGG-16有90.0%的准确率。

1、Darknet-19:
作者提出了一个新的分类模型作为YOLO2的基础。此模型吸取了之前的网络经验和领域认知。和VGG-16类似,作者使用的最多的是3* 3的卷积核,并且在每一次的池化操作后将频道数翻倍。使用全局平均池化,在3*3的卷积层之间使用1 * 1的卷积核压缩特征表示。然后使用batch normalization来稳定训练,加速收敛,对模型正则化。

最终的模型叫Darknet-19,有19个卷积层和5个最大池化层,见下图。此模型只需要55.8亿次运算,并在ImageNet上得到了72.9%的top-1准确率和91.2%的top-5准确率。
在这里插入图片描述
2、Training for classification:
使用Darknet-19分类模型在标准的ImageNet(1000 class )分类数据集上训练了160epochs,使用随机梯度下降法,初始的学习率为0.1,多项速率削减功率为4,weight decay为0.0005,momentum为0.9。同时,作者使用了标准的数据增强,包括岁间切割、旋转和色调、饱和度、曝光度转换。

使用以上方法在224* 224的数据集进行训练后,又在448* 448的数据集上进行fine tune。finetune时的epoch为10,初试学习率为0.01。最终,top-1准确度为76.5%,top-5准确度为93.3%。

3、Training for detection:
训练检测模型阶段,去掉了最后一层卷积层,并加了3层331024的卷积层,然后跟着一个11的卷积层,filter数是检测任务需要的数。对于VOC,需要预测5个boxes,每个box有5个坐标值和20个分类,所以filter数量为125。作者还添加了一个转换层,将最后一个33*512卷积层连接到倒数第二个卷积层,这样模型就有了细粒度特征。

模型训练用了160epochs,初试学习率为0.01,在60和90epoch时,用之前的学习率除以10。weight decay为0.0005,momentum为0.9。数据增强和YOLO、SSD类似,训练策略类似于COCO和VOC。

Stronger

作者提出了一种用分类数据集和监测数据集联合训练的机制。使用检测数据集去学习检测相关的信息,比如Bbox的坐标和分类,用分类数据集去扩充监测模型可检测的物体类别。在训练阶段混合两种数据集,如果模型接收到的是有检测标注的图片,就会通过YOLO2的损失函数进行反响传递。如果接收到的是只有分类标签的图片,就只计算分类损失。

这种方法遇到了一些挑战。监测数据及只包含一些笼统的分类标签,比如猫、狗。而分类数据集包含的类别则非常宽广,ImageNet就有包含一百多种狗的分支类别。大部分分类用的是softmax函数,然后softmax要求类别之间是互斥的,这对于混合数据集来说就不适用了。作者使用multi-label模型来混合数据集,这个没有互斥的假设。

1、Hierachical classification(类别分层):

ImageNet的labels来自于WordNet(一个将概念和它们之间的关系结构化的语言数据集)。对于合并的数据集,也正好需要这样的结构,所以作者将ImageNet中的概念建了一颗分层树(建树方法不再赘述),并将树称为WordTree。如果想计算某个节点的概率,就可以顺着通往根节点的路径,将所有的条件概率相乘。比如计算一张图片里是不是Norfolk terrier,可以通过以下公式得到:
在这里插入图片描述
在建WordTree的时候,作者加入了许多中间节点,将1000类扩展至1369类。许多模型使用softmax对1000个类别进行预测,而有了WordTree,softmax用在每一个节点下的子分类(如下图)。
在这里插入图片描述
作者在Darknet-19模型上使用WordTree训练,最终得到71.9%的top-1准确率和90.4%的top-5准确率。WordTree也同样能用在检测中,检测器会预测一个box和一个概率树,然后会从上而下顺着树,在每一个分叉选择执行度最高的路径,直到达到一些阈值来预测物体类别。

2、Dataset conbination with WordTree:
WordTree同样可以用来结合其他不同的数据集,下图是将ImageNet和COCO数据集结合的例子。WordTree非常多样性,可以将这个技术用在很多数据集上。
在这里插入图片描述
3、Joint classification and detection:
既然通过数据结合,使用WordTree来包含分类和检测的结合模型,那么何不训练一个规模更大的检测器呢?作者将COCO和ImageNet数据集合并,最终包含9418个类别,因为ImageNet数据集相对于COCO来说太大,所以将COCO进行了上采样,使得两个数据集最终的比例为4:1。

最后用这个庞大的数据集训练YOLO9000模型,但是priors从5个降为3个,以此来限制输出大小。

训练后在ImageNet上进行评估:COCO和ImageNet数据集只有44个相同的物体类别,这意味着模型只看到了大量的分类数据,而不是检测数据。最终总体的mAP为19.7,没有检测标注的156个类别数据的mAP为16.0,这个结果已经比DPM高,但YOLO9000只在部分监督的情况下进行训练的。除此之外,模型能够实时地同时检测其他9000个类别。

当分析YOLO9000在ImageNet上的性能时发现,它能很好地学习新的动物种类,但是像衣服、工具这样的类别识别的不好。新的动物种类容易学习是因为模型将COCO数据集里的动物概括的很好,而COCO数据集没有衣服等种类的Bbox标注。

总结

与比其他基于各种检测数据集的检测系统相比,YOLO2当时更先进且更快。除此之外,YOLO2可以操作一系列不同尺寸的图像,并且在速度和准确度直接可以平稳地tradeoff。YOLO9000是一个可以检测9000+物体类别的实时模型。在消除分类数据集和检测数据集大小的差距中,YOLO9000迈出了重要的一步。

本论文的许多技术都适用于物体检测之外的领域。WordTree表示让图像分类更加丰富和详细。用分层分类的数据集合并在分类和分割领域也是有用的。multi-scale训练技术可以在各种视觉任务中发挥作用。

在未来,作者希望将类似的技术用在弱监督的图像分割中,并计划使用更强大的匹配策略为分类数据分配若标签,来提高检测结果。他们也会继续探索,带来不同的资源和不同结构的数据整合方法,以此来让视觉领域的模型更强健。

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-08-13 12:01:20  更:2021-08-13 12:05:13 
 
开发: 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/27 21:00:12-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码