Why do deep convolutional networks generalize so poorly to small image transformations?

CVPR2018

论文地址:https://arxiv.org/abs/1805.12177

论文主要内容:研究为什么现代流行的深度学习模型(如VGG16,ResNet50,InceptionResNetV2)对微小的图像变换(包括尺度,平移, 几个像素改变)不具有不变性,即网络的泛化能力不好。

作者结论:这种不变性与深度网络中的subsampling操作及数据集存在的bias有关

                文章中的实验图 (不过看了给出的utube上的video,otter这个不太好说明吧,脸几乎看不到,人也很难分辨吧。)

相关视频:

https://v.qq.com/x/page/t1352k6ojgw.html (ice bear)

https://youtu.be/MpUdRacvkWk (otter)

 

第一行,图像之间有很小的平移;第二行是小的尺度缩放;第三行是一个视频,Otter小范围活动

实验部分:作者从ImageNet随机选出1000张图片,每张图片随机放入一个固定尺寸大的canvas中,周围填充采用inpating和black两种方式(如果图片比canvas大,会先将图片按照长宽比例不变进行缩放)。然后看对图片进行1像素的平移或者尺度缩放对网络输出产生的影响。

结果:

对输入图片进行1像素的平移或者尺度缩放变换,都会影响网络最后的输出,对网络预测结果产生很大的突变影响

embedding a random image from the validation set into a full size image and then shifting the embedded image by a single pixel, can cause modern networks to change their output 30% of the time. Similar numbers are obtained with rescaling: in the modern networks rescaling the width of an image from 100 pixels to 101 pixels can changes the network’s output almost 40% of the time.

原因解释:

(1)网络结构的设计忽略了Sampling Theorem--有点难懂

卷积层:对于存在stride的卷积,当对输入图像进行为stride整数倍的平移时,网络才具有严格意义上的不变性(想象一下,stride操作会导致一部分像素不参与运算)(个人观点:当输出输入的图像本身比较均匀应该也具有一定的不变性,如训练图背景全一样,只有全景不一样)

池化层:相当于卷积层(固定卷积核);不过,最大池化(max pooling)能起到一定的平移不变性

不过这两个只是针对平移不变性

(2)为什么网络没从大规模的数据本身中学习到这种不变性--dataset bias

作者发现ImageNet这个数据集在目标在图像中出现的位置及尺寸存在着很大的bias:

对每个类,取boundingbox的中心和高度作为目标的位置及大小,通过Chi-squared test发现大部分类别(900 out of 1000)目标的位置和大小都不是均匀分布的。

为了使得网络具有不变性,现在大部分网络结构(如VGG16,ResNet50,InceptionResNetV2)在训练前都会使用data augmentation。但是这也没有极大的增加网络的不变性,作者给出的原因是:

考虑到subsampling的影响,因为大部分网络的下采样因子是60,那么需要对训练数据进行60*60=3600种增广的方式,才有可能保证网络具有完全的一种不变性,如平移不变性。若再考虑到其他不变性如尺度,旋转,那需要增广的方式会更多。

这里补充几篇关于样本增光的文章:

[1] A Rotation and a Translation Suffice: Fooling CNNs with Simple Transformations (arXiv 2017)

[2] AutoAugment: Learning Augmentation Policies from Data(CVPR 2018)

[3] Augmentation for small object detection (CVPR 2019)

 

另外,本文作者也发现现在流行的CNN网络在自己的训练数据集和测试数据集上的变现非常好(因为训练数据集和测试数据集具有相同的分布特性),但是一般化能力不如人类。如 将ImageNet种的图像放入一个大的canvas再进行resize到原来训练的尺寸进行预测的结果不如原来的好。

参加文章corruption(small changes: snow, blur, pixelation, and novel combinations of these)对网络性能的影响

 

Benchmarking neural network robustness to common corruptions and perturbations
 

个人观点:网络还是没有真正学出一个好的feature。如果把训练数据种的background都设为一样,结果怎样?

接下来:对论文实现

未完待续

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值