YOLOV2
YOLO v1缺点:
- 定位不准确
- 比选择性搜索区域提取(region proposal)的方法召回率较低
YOLO v2网络结构:
YOLO v2对v1的改进:
- 对网络每一层的输出添加(Batch Normalization),即对输出做归一化。这样,输出被划分到 [0,1] 闭区间。不需要每层学习数据的分布,收敛速度加快。并且,解放了dropout,使mAP值提升。
- 预训练阶段v1使用224*224的imageNet数据集进行,然后检测阶段换了分辨率为448*448;这需要网络对尺寸的变换进行适应,可能会导致变换过程中权值更新不完全,降低检测时的mAP值;v2在224*224上预训练,又使用448*448进行适应性训练,最后使用448*448进行测试,能够缓解这一问题的发生。前两步均在ImageNet数据集上进行,后一步在自己的数据集上进行。
- 将Darknet-19网络的全连接层和最后一个pooling层去掉,使得最后的卷积层可以有更高分辨率的特征。416*416代替原来448*448,最终输入变成13*13大小的feature map输出。每个grid cell 给定 9 个框,由v1的7*7*2(30维向量中的前10个特征)变为13*13*9。如下图,这样可以提高定位准确性。
darknet-19网络模型
- 采用k-means的方式对训练集的bounding boxes做聚类,试图找到合适的anchor box,发现仅选取5种box就能达到Faster RCNN的9中box的效果。
- 每个bounding box预测5个值:x,y,w,h和o。x,y使用sigmoid函数进行归一化到(0,1)之间,这样处理使得模型训练更加稳定;计算方式如下图:
- 添加一个 passthrough layer 层。即将前面一层的26*26的feature map和本层的13*13的feature map进行连接,有点像ResNet。经过层层卷积和pooling,小的object可能到最后都不见了,通过连接可以有效检测小的object。
- 进行多尺度训练,在训练时,每训练10个batch,网络就会随机选择{320,352,…,608}中的另一种size的输入。size为32的倍数。这使得该网络可以检测不同尺寸的图像。
实验数据:
YOLO v2源码链接:
yolo v2网络结构图来源于:https://blog.csdn.net/mieleizhi0522/article/details/79887066,可以参考这篇更详细的介绍。