YOLOv2-详解
YOLO9000:Better, Faster, Stronger
论文下载:https://arxiv.org/abs/1612.08242
代码下载:https://pjreddie.com/darknet/yolo/
首先,提出了相对于yolov1做出的改进。yolov2采用多尺度训练方法,可以对不同大小的图片进行处理,实现检测速度与精度的先对平衡。67fps时,在voc2007数据集上达到76.8map,40fps时,达到78.6map,性能由于采用resnet的fasrer r-cnn和ssd算法。最后,提出一种联合训练目标检测和分类的方法,可以同时在coco目标检测数据集和imagenet目标分类数据集上进行训练,联合训练方法允许YOLO9000预测没有标记检测数据的目标类的检测。
当前相对于分类任务来说,目标检测数据集比较有限,标注目标检测数据集的成本也比较昂贵。论文提出一种新方法,使用当前已有的大量目标分类数据集,扩大目标检测系统的范围。使用目标分类的层次视图,允许将不同的数据集合在一起。另外,提出一种联合训练算法,允许我们在目标分类和目标检测数据集上训练目标检测器,该方法使用标注的检测图像学习目标的位置信息,使用分类图像增加语义和鲁棒性。采用这种方法训练的yolo9000模型可以检测9000种目标类别。
yolov1产生大量定位误差,并且与基于候选区域的目标检测算法相比,yolov1的召回率较低。因此,主要在保证精度的前提下,提高召回率和定位精度。
参考:https://blog.csdn.net/hjimce/article/details/50866313
https://zhuanlan.zhihu.com/p/24810318
文献来源:《Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift》,与《Spatial Transformer Networks》结构相似。
Batch Normalization, 批标准化, 和普通的数据标准化类似, 是将分散的数据统一的一种做法,具有统一规格的数据, 能让机器学习更容易学习到数据之中的规律。
yolov2中在所有卷积层后添加Batch Normalization,map增加2%,且有助于规范化模型。
作者首先对分类网络(自定义的darknet)进行了finetune,分辨率改成448 * 448,在ImageNet数据集上训练10轮(10 epochs),训练后的网络就可以适应高分辨率的输入了。然后,作者对检测网络部分(也就是后半部分)也进行finetunefinetune。这样通过提升输入的分辨率,mAP获得了4%的提升。
摘抄:https://blog.csdn.net/ytusdc/article/details/107666902
不变性意味着即使目标的外观发生了某种变化,但是你依然可以把它识别出来。这对图像分类来说是一种很好的特性,因为我们希望图像中目标无论是被平移,被旋转,还是被缩放,甚至是不同的光照条件、视角,都可以被成功地识别出来。
所以上面的描述就对应着各种不变性:
在欧几里得几何中,平移是一种几何变换,表示把一幅图像或一个空间中的每一个点在相同方向移动相同距离。比如对图像分类任务来说,图像中的目标不管被移动到图片的哪个位置,得到的结果(标签)应该是相同的,这就是卷积神经网络中的平移不变性。平移不变性意味着系统产生完全相同的响应(输出),不管它的输入是如何平移的 。平移同变性(translation equivariance)意味着系统在不同位置的工作原理相同,但它的响应随着目标位置的变化而变化 。
为什么卷积神经网络具有平移不变性:简单地说,卷积+最大池化约等于平移不变性。
卷积:简单地说,图像经过平移,相应的特征图上的表达也是平移的。下图只是一个为了说明这个问题的例子。输入图像的左下角有一个人脸,经过卷积,人脸的特征(眼睛,鼻子)也位于特征图的左下角。假如人脸特征在图像的左上角,那么卷积后对应的特征也在特征图的左上角。 (如下两幅图所示)
在神经网络中,卷积被定义为不同位置的特征检测器,也就意味着,无论目标出现在图像中的哪个位置,它都会检测到同样的这些特征,输出同样的响应。比如人脸被移动到了图像左下角,卷积核直到移动到左下角的位置才会检测到它的特征。
池化:比如最大池化,它返回感受野中的最大值,如果最大值被移动了,但是仍然在这个感受野中,那么池化层也仍然会输出相同的最大值。这就有点平移不变的意思了。
所以这两种操作共同提供了一些平移不变性,即使图像被平移,卷积保证仍然能检测到它的特征,池化则尽可能地保持一致的表达。
总结:卷积的平移不变性就是通过卷积+池化以后不管某一特征移动了位置,总可以检测出来输入到下一层中,又由于全连接是加权求和计算,被CNN激活的特征又可以传导到下一层中。
目标检测是从原始图像中找到包含目标的子区域,所以对目标的位置变化应该需要敏感一点,也就是平移敏感性。在目前的目标检测模型中,必须要对目标区域进行分类,而分类任务侧重的是平移不变形,不管翻转还是如何,都应该能分类正确,也就是关注区域的类别语义。
因此,目标检测任务中平移敏感性与平移不变性之间存在矛盾。