细枝末节的知识点:LOSS解析
知乎爽文:
-
神经网络学习过程本质就是为了学习数据分布,一旦训练数据与测试数据的分布不同,那么网络的泛化能力也大大降低;另外一方面,一旦每批训练数据的分布各不相同(batch 梯度下降),那么网络就要在每次迭代都去学习适应不同的分布,这样将会大大降低网络的训练速度。
- 解决办法之一是对数据都要做一个归一化预处理。YOLOv2网络通过在每一个卷积层后添加batch normalization,极大的改善了收敛速度同时减少了对其它regularization方法的依赖(舍弃了dropout优化后依然没有过拟合),使得mAP获得了2%的提升。
- High Resolution Classifier,YOLOv2首先修改预训练分类网络的分辨率为448*448,在ImageNet数据集上训练10轮(10 epochs)。这个过程让网络有足够的时间调整filter去适应高分辨率的输入。然后fine tune为检测网络。mAP获得了4%的提升。
- Convolutional With Anchor Boxes.YOLOv2借鉴了Faster R-CNN中的anchor思想。由于都是卷积不需要reshape,很好的保留的空间信息,最终特征图的每个特征点和原图的每个cell一一对应。而且用预测相对偏移(offset)取代直接预测坐标简化了问题,方便网络学习。
- 总的来说就是移除全连接层(以获得更多空间信息)使用 anchor boxes 取预测 bounding boxes。
-
去掉最后的池化层确保输出的卷积特征图有更高的分辨率。
-
缩减网络,让图片输入分辨率为416 * 416,目的是让后面产生的卷积特征图宽高都为奇数,这样就可以产生一个center cell。因为作者观察到,大物体通常占据了图像的中间位置,可以只用一个中心的cell来预测这些物体的位置,否则就要用中间的4个cell来进行预测,这个技巧可稍稍提升效率。
-
使用卷积层降采样(factor 为32),使得输入卷积网络的416 * 416图片最终得到13 * 13的卷积特征图(416/32=13)。
-
把预测类别的机制从空间位置(cell)中解耦,由anchor box同时预测类别和坐标。因为YOLO是由每个cell来负责预测类别,每个cell对应的2个bounding box 负责预测坐标(回想YOLO中 最后输出7730的特征,每个cell对应1130,前10个主要是2个bounding box用来预测坐标,后20个表示该cell在假设包含物体的条件下属于20个类别的概率,具体请参考 图解YOLO 的图示) 。
-
YOLOv2中,不再让类别的预测与每个cell(空间位置)绑定一起,而是让全部放到anchor box中。