失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 论文阅读笔记:YOLO9000: Better Faster Stronger

论文阅读笔记:YOLO9000: Better Faster Stronger

时间:2020-12-01 16:02:48

相关推荐

论文阅读笔记:YOLO9000: Better Faster Stronger

论文阅读笔记:YOLO9000: Better,Faster,Stronger

本文主要包含如下内容:

论文地址

参考博客

论文阅读笔记YOLO9000 BetterFasterStronger回顾 YOLOv1主要思想网络改进 Better实验结果 网络改进 Faster-Draknet19网络改进 Stronger

回顾 YOLOv1

给个一个输入图像,首先将图像划分成 7 * 7 的网格。对于每个网格,每个网格预测 2 个 bouding box(每个box包含5个预测量)以及 20 个类别概率,总共输出 7×7×(2*5+20)=1470 个 tensor根据上一步可以预测出 7 * 7 * 2 = 98 个目标窗口,然后根据阈值去除可能性比较低的目标窗口,再由 NMS 去除冗余窗口即可。

YOLOv1 使用了 end-to-end 的回归方法,没有 region proposal 步骤,直接回归便完成了位置和类别的判定。种种原因使得 YOLOv1 在目标定位上不那么精准,直接导致 YOLO 的检测精度并不是很高。

主要思想

提出 YOLO v2 :代表着目前业界最先进物体检测的水平,它的速度要快过其他检测系统(FasterR-CNN,ResNet,SSD),使用者可以在它的速度与精确度之间进行权衡。

提出 YOLO9000 :这一网络结构可以实时地检测超过 9000 种物体分类,这归功于它使用了 WordTree,通过 WordTree 来混合检测数据集与识别数据集之中的数据。(分类信息学习自 ImageNet 分类数据集,物体位置检测学习自 COCO 检测数据集)

提出了一种新的联合训练算法( Joint Training Algorithm ),使用这种联合训练技术同时在 ImageNet 和 COCO 数据集上进行训练。基本思路: 同时在检测数据集和分类数据集上训练物体检测器( Object Detectors ),用监测数据集的数据学习物体的准确位置,用分类数据集的数据来增加分类的类别量、提升健壮性。

网络改进 Better

YOLO 有很多缺点,作者希望改进的方向是:改善召回率,提升定位的准确度,同时保持分类的准确度。

Batch Normalization

使用 Batch Normalization 对网络进行优化,让网络提高了收敛性,同时还消除了对其他形式的正则化( regularization )的依赖。通过对 YOLO 的每一个卷积层增加 Batch Normalization,最终使得 mAP 提高了 2%,同时还使 model 正则化。使用 Batch Normalization 可以从 model 中去掉 Dropout,而不会产生过拟合。

High resolution classifier

YOLO v2 的分类网络以 448*448 的分辨率先在 ImageNet 上进行 Fine Tune, 之后用于检测网络。最终通过使用高分辨率,mAP 提升了4%。

Convolution with anchor boxes

YOLO 包含有全连接层,从而能直接预测 Bounding Boxes 的坐标值。 Faster R-CNN 的方法只用卷积层与 Region Proposal Network 来预测 Anchor Box 的偏移值与置信度,而不是直接预测坐标值。

YOLO 删除全连接层和池化层, 通过选择 416*416 用作输入尺寸最终能输出一个 13*13 的 Feature Map。

使用 Anchor Box 会让精确度稍微下降,但用了它能让 YOLO 能预测出大于一千个框,同时 recall 达到 88%,mAP 达到 69.2%。

Dimension clusters

Faster R-CNN 方法的 Anchor Box 的尺寸是手动选择的,所以尺寸还有优化的余地。 为了优化,在训练集(training set)Bounding Boxes 上跑了一下 k-means 聚类,来找到一个比较好的值。

如果使用标准的 k-means 方法进行聚类,即使用欧氏距离,那么尺寸大的框比尺寸小的框产生更多的错误. 因此,这里使用 IOU 来度量距离.最后设定的 k-means 聚类的类别为 k=5 类.

Direct location prediction

YOLO v2 通过对 Anchor 的偏移量进行预测回归,获得最终的坐标框,这里提出具体的方法. 网络在每一个网格单元中预测出 5 个 Bounding Boxes,每个 Bounding Boxes 有五个坐标值 tx,ty,tw,th,t0. 同时假设一个网格单元对于图片左上角的偏移量是 cx,cy,Bounding Boxes Prior 的宽度和高度是 pw,ph.

Fine-Grained Features

修改后的 YOLO 的 Feature Map 大小为 13*13, 加上了一个 Passthrough Layer 来取得之前的某个 26*26 分辨率的层的特征。这个 Passthrough layer 能够把高分辨率特征与低分辨率特征联系在一起,联系起来的方法是把相邻的特征堆积在不同的 Channel 之中,把 26*26*512 变成 13*13*2048。YOLO 中的检测器位于扩展后(expanded )的 Feature Map 的上方,所以他能取得细粒度的特征信息,这提升了 YOLO 1% 的性能。

Multi-ScaleTraining

YOLO v2 每迭代几次都会改变网络参数。每10个 Batch,网络会随机地选择一个新的图片尺寸,由于使用了下采样参数是 32,所以不同的尺寸大小也选择为32的倍数 {320,352…..608},最小 320*320,最大 608*608,网络会自动改变尺寸,并继续训练的过程。

这一政策让网络在不同的输入尺寸上都能达到一个很好的预测效果,同一网络能在不同分辨率上进行检测。当输入图片尺寸比较小的时候跑的比较快,输入图片尺寸比较大的时候精度高,所以你可以在 YOLO v2 的速度和精度上进行权衡。

实验结果

网络改进 Faster-Draknet19

YOLO v2 基于一个新的分类 model,有点类似与 VGG。YOLO v2 使用 3*3 filter,每次 Pooling 之后都增加一倍 Channels 的数量。YOLO v2 使用全局平均 Pooling,使用 Batch Normilazation 来让训练更稳定,加速收敛,使 model 规范化。

最终的 model–Darknet 19,有 19 个卷积层和 5 个 maxpooling 层,处理一张图片只需要 5.58 billio 次运算,在 ImageNet 上达到 72.9% top-1 精确度,91.2% top-5 精确度。

在检测阶段: 网络去掉了最后一个卷积层,而加上了三个 3*3 卷积层,每个卷积层有 1024 个 Filters,每个卷积层紧接着一个 1*1 卷积层, with the number of outputs we need for detection。

对于 VOC 数据,网络预测出每个网格单元预测五个 Bounding Boxes,每个 Bounding Boxes 预测 5 个坐标和 20 类,所以一共 125 个 Filters,增加了 Passthough 层来获取前面层的细粒度信息,

网络改进 Stronger

通过条件概率,建立一个分层树 WordtTree. 同时对相应的类别进行扩充. 在构建 WordtTree 的情况下, 只需要对同一概念下的同义词进行 softmax 分类.

这种方法的好处:在对未知或者新的物体进行分类时,性能降低的很优雅(gracefully)。比如看到一个狗的照片,但不知道是哪种种类的狗,那么就高置信度(confidence)预测是”狗“,而其他狗的种类的同义词如”哈士奇“”牛头梗“”金毛“等这些则低置信度。

使用联合训练法,YOLO9000 使用 COCO 检测数据集学习检测图片中的物体的位置,使用 ImageNet 分类数据集学习如何从大量的类别中进行分类。

训练的时候使用 WordTree 混合了 COCO 检测数据集与 ImageNet 中的 Top9000 类,混合后的数据集对应的 WordTree 有 9418 个类。另一方面,由于 ImageNet 数据集太大了,作者为了平衡一下两个数据集之间的数据量,通过过采样(oversampling)COCO 数据集中的数据,使 COCO 数据集与 ImageNet 数据集之间的数据量比例达到1:4。

当网络遇到检测数据集中的图片时则正常地反方向传播,当遇到分类数据集图片的时候,只使用分类的 loss 功能进行反向传播。同时作者假设 IOU 最少为 .3。最后根据这些假设进行反向传播。

如果觉得《论文阅读笔记:YOLO9000: Better Faster Stronger》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。