主要是提出了一系列方案来提升yolo v1的效果。
就如他论文题目一样,yolo v2分别让yolo v1变得更好,更快和更强。
更好, 更快
- 使用了batch norm,来约束神经元的输出,从而使模型更容易收敛。
2.使用了高分辨率的分类器:先在imagenet上训练低分辨率图的分类,再在高分辨率图上训练分类,再去训练检测
3.使用了anchor boxes:v1中每个小方块只有对应的2个bbox,而且是随机大小,随机位置的。而v2中每个小方块有5个bbox,而且大小是ground truth聚类的结果,因此更容易拟合图片。另外,v2对于bbox的中心点做了sigmoid,从而保证所有的bbox中心点都无法偏离当前方块。
4.使用了新的网络(darknet19)减少了计算量
5.加了pass through层:将一个大图拆分成多通道的小图,然后和直接卷积的结果拼接,从而让模型融合底层和高层信息
6.使用了多尺度训练:输入不同尺度的图像,使用global average pooling还原为同一尺度。GAP就是对同一通道的所有值求均值,然后输入下一层,因此不会被尺度影响。
7.使用了高分辨率的图片作为输入
8.用了更细的网格(1313),v1中是77
更强
联合训练Imagenet和coco,因为imagenet是有几万个类别的,而coco只有80个,所以如果可以借用imagenet里的类别信息,那么就可以学会几万个类别的分类了。
但是由于imagenet里的类别和coco的类别并不是互斥的,例如,coco中的“狗”,在imagenet里可能有金毛,有哈士奇。但一般而言,分类器都是互斥的,将不同类别拉的越远越好,因此简单的联合训练是行不通的。所以他借用了wordnet中的层次结构,将不同类别分层,不同层之间做分类,也即狗和猫分类,哈士奇和金毛分类。但是最终效果似乎一般。