cnn输入层_一个小改动,CNN输入固定尺寸图像改为任意尺寸图像

点击上方“小白学视觉”,选择“星标”公众号

重磅干货,第一时间送达
394777555a0c186708b72e4818f94c85.png
本文小白将和大家一起学习如何在不使用计算量很大的滑动窗口的情况下对任意尺寸的图像进行图像分类。通过修改,将ResNet-18CNN框架需要224×224尺寸的图像输入改为任意尺寸的图像输入。 首先,我们澄清一个对卷积神经网络(CNN)的误解。 卷积神经网络不需要固定大小的输入 如果用过CNN对图像进行分类,我们需要对输入图像进行裁剪或调整大小使其满足CNN网络所需的输入大小。虽然这种做法非常普遍,但是使用此方法存在一些局限。 1. 分 辨率下降:如果在一幅大图中有一只小狗但其只占据图像中的一小部分,则调整图像的大小会使照片中的狗变得更小,以致无法正确分类图像。 2. 非正方形长宽比 :通常,图像分类网络是在正方形图像上训练的。如果输入图像不是正方形,一般来说我们会从中心取出正方形区域,或者使用不同的比例调整宽度和高度以使图像变为正方形。第一种情况下,我们可能把不在中心的重要特征忽略了。而在第二种情况下,图像信息会因缩放比例不均匀而失真。 3. 计算量大 :为了解决该问题,我们可以重叠裁剪图像,并在每个窗口上执行图像分类。这样计算量很大,而且完全没有必要。 有趣的是,许多人没有意识到如果我们对网络进行较小的修改,CNN便可以接受任何大小的图像作为输入,而且不需要再次训练!本文我们将通过修改一个标准网络的示例来向各位小伙伴介绍如何实现输入任意大小的图像。 修改图像分类体系结构以处理任意大小的图 几乎所有分类结构的末尾都有一个全连接层(FC)。(注意:FC层在PyTorch中称为“线性”层)FC层的问题在于它们需要输入固定尺寸的数据。如果我们更改输入图像的大小,就无法进行计算。因此,我们需要用其他东西替换FC层,但是在此之前,我们需要了解为什么 在图像分类体系结构中需要使用全连接层 。 现代的CNN架构由几个卷积层块和最后的几个FC层组成。这种结构可以追溯到神经网络的早期研究。卷积层作为“智能”过滤器从图像中提取语义信息,它们在某种程度上保留了图像对象之间的空间关系。但是,为了对图像中的对象进行分类,我们并不需要此空间信息,因此通常将最后一个卷积层的输出展平为一个长向量。该长向量是FC层的输入,它不考虑空间信息。FC层仅对图像中所有空间位置的深层特征进行加权求和。 实际上这种结构的效果很好,并且通过了大量实践的证明。但是,由于存在FC层,因此网络只能接受固定大小的输入。因此,我们需要将FC层替换为不需要固定大小输入的一种网络层。这就是不限于其输入尺寸的卷积层! 接下来我们要做的就是使用等效的卷积层去替代FC层。 全连接层到卷积层的转换 FC和卷积层在目标输入上有所不同–卷积层侧重于局部输入区域,而FC层则将全局特征组合在一起。但是,FC层和卷积层都计算点积,因此在本质上是相似的。所以满足两者之间互相转换的条件。 我们通过一个例子来解释这一点。 假设有一个FC层以卷积层的输出作为输入,卷积层输出5x5x16张量。我们还假设FC层的输出大小为120。如果使用FC层,则首先将5x5x1
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值