卷积神经网络中的随机裁剪和翻转

chr*_*tic 15 image-processing neural-network conv-neural-network

在很多关于卷积神经网络(CNN)的研究论文中,我看到人们从图像中随机裁剪一个方形区域(例如224x224),然后随机地水平翻转它.为什么这种随机裁剪和翻转完成了?此外,为什么人们总是裁剪一个方形区域.CNN不能在矩形区域上工作吗?

ypx*_*ypx 26

这被称为数据增强.通过将转换应用于训练数据,您可以添加合成数据点.这使模型暴露于其他变体,而无需收集和注释更多数据.这可以减少过度拟合并提高模型的推广能力.

翻转图像背后的直觉是对象应该与其镜像一样可识别.请注意,水平翻转是经常使用的翻转类型.垂直翻转并不总是有意义,但这取决于数据.

裁剪背后的想法是减少背景在CNN决策中的贡献.如果您有用于定位对象所在位置的标签,那么这非常有用.这使您可以使用周围区域作为反面示例并构建更好的检测器.随机裁剪也可以作为一个正则化器,并根据对象部分的存在进行分类,而不是将所有内容都集中在可能并不总是存在的非常独特的特征上.

为什么人们总是裁剪一个方形区域?

这不是CNN的限制.它可能是特定实现的限制.或者通过设计,因为假设方形输入可以导致优化速度的实现.我不会读太多.

具有可变大小输入与固定输入的CNN:

这不是特定于裁剪到正方形,而是更普遍的原因为什么输入有时会在输入到CNN之前调整大小/裁剪/扭曲:

需要记住的是,设计CNN涉及决定是否支持可变大小的输入.卷积运算,汇集和非线性将适用于任何输入维度.但是,当使用CNN解决图像分类时,通常最终会得到一个完全连接的层,例如逻辑回归或MLP.完全连接的层是CNN如何产生固定大小的输出向量.固定大小的输出可以将CNN限制为固定大小的输入.

肯定有变通方法允许可变大小的输入并仍然产生固定大小的输出.最简单的方法是使用卷积层对图像中的常规补丁进行分类.这个想法已经存在了一段时间.其背后的意图是检测图像中多次出现的对象并对每次出现进行分类.我能想到的最早的例子是20世纪90年代Yann LeCun小组的工作,即同时对字符串中的数字进行分类和定位.这被称为将具有完全连接层的CNN转变为完全卷积网络.最近的完全卷积网络的例子用于解决语义分割并对图像中的每个像素进行分类.这里需要产生一个与输入尺寸相匹配的输出.另一种解决方案是在CNN的末尾使用全局池来将可变大小的特征映射转换为固定大小的输出.池化窗口的大小设置为等于从最后一个conv计算的特征映射.层.