yolov2 yolo9000阅读笔记(未完成)
论文地址:https://arxiv.org/pdf/1612.08242v1.pdf
YOLO9000: Better, Faster, Stronger
-
yolov2是指对yolov1做出了些许改进,而yolo9000是指对yolov2使用dataset combination method and joint training algorithm从而得到可以实现9000个类别的detection的model
-
首先,yolov1存在召回率(即查全率 )低和localization不准的问题,针对这些问题提出了一些改进,也即
better
- 用batch normalization提高了一点点的map(2%),并且可以去掉v1中的dropout
- v1采用224224的分类任务来预训练backbone再在448 * 448的detection上去finetune,而v2在448 * 448detection finetune之前,插入了10个epoch的448448分类任务来过渡resolution,又对map提高了几乎4%
- 借鉴faster-rcnn的anchor,而且对每个anchor都预测一个class而改变了之前一个grid只预测一个class的做法。这样做的结果是降低了一点map但是提高了召回率
- 使用k-means来确定anchor的尺寸,而k-means采取的距离为:目的是消除bbox的size的影响
- 认为faster-rcnn的anchor shift设计有缺陷,输出的如果是直接对anchor的center的shift会导致一开始飘到很远的地方,振荡很久才收敛,所以这里沿用yolov1采用0-1(用grid来归一化)的输出,所以输出前要加一个logistics回归。
输出,而是anchor的长宽,是grid cell的位置
最终效果如下图: - 为了得到fine-grained的feature,将earlier的feature用一个passthrough传到后面的层,而由于没有用unet结构,为了将前面的26 * 26和后面的13*13concatenate到一起,将26 * 26拆成4个channel
- multi-scale training,每10个epoch随机改变一次输入的size(由于只由conv和pooling组成,所以输入理论上只要是某个倍数即可)导致训练出的模型可以适应多种resolution的输入