这篇论文是CVPR2020的oral,在神经网络可解释性方面做了一定工作。为了对神经网络的基础原理有更深入的理解,我决定学习此文。论文内容的介绍网上有不少,请各位自行搜索,本着深入学习论文的目的,这里对论文的部分内容进行复现试验,下面把我的试验数据忠实记录下来。

论文:https://arxiv.org/pdf/1905.13545.pdf

文章目录

  • 一、高频分量在图像识别中的作用
    • 1.论文观点
    • 2.复现条件
    • 3.试验结果
    • 4.结论
  • 二、高低频图像的shuffle label试验
    • 1.论文观点
    • 2.复现条件
    • 3.试验结果
    • 4.结论
  • 三、高低频图像的训练/测试精度试验
    • 1.论文观点
    • 2.复现条件
    • 3.试验结果
    • 4.结论
  • 四、训练超参数对高低频图像的作用
    • 1.论文观点
    • 2.复现条件
    • 3.试验结果
    • 4.结论
  • 总结

一、高频分量在图像识别中的作用

1.论文观点

论文首先提出了一个有趣的现象,就是:把一张图像经过傅里叶变换分成高频和低频部分,把两部分分别重建,然后对两幅图像分别用已训练好的模型识别会发现,肉眼看起来和原图相似的低频图像反而会被识别错误,而肉眼几乎看不出什么的高频图像反而会被正确识别。作者认为这说明人眼难以的观察的高频信息也可能与标签相互关联,这些高频信息会降低模型的泛化性能,正是从这个现象的观察出发,作者引出对整篇文章的讨论。下图是原文进行的示例:

我们先来复现对这个现象的观察:

2.复现条件

(1)和原文一样,使用ResNet18和cifar10。我用的ResNet18代码见:https://github.com/kuangliu/pytorch-cifar,在cifar10上训练200epoch后,在验证集上最高精度达到95.33%。
(2)cifar10的验证集共10000张图片32×32×3的彩色图片,共10类,每类1000张。对这些图片按照高频和低频分离并分别重建。由于论文中没有说明高频和低频分界时使用的半径是多少,所以我将半径从0~16都进行了试验。
说明:对图像进行傅里叶变换再移频后,低频分量集中在图像中心区域,高频分量在边缘区域,因此如果以频域图像中心为圆点,半径r制作圆形掩膜,就可以把低频和高频分量分离出来,然后再分别重建即可得到低频分量图片和高频分量图片。半径0时高频分量和原图一样,低频分量为纯黑;由于图片中心到角点的长度为16216\sqrt{2}162​,因此半径16时低频分量仍比原图少一点信息。操作代码可参见我之前的csdn博客。

3.试验结果

下表给出低频和高频图像识别正确的个数(总数10000),以及各种交叉情况的个数:

半径r 低频正确高频错误 低频错误高频正确 都正确 都错误 低频正确 高频正确
0 118 8651 882 349 1000 9533
2 486 4785 1072 3657 1558 5887
4 1113 2543 796 5548 1909 3339
5 1469 1502 689 6340 2158 2191
6 1961 728 611 6700 2572 1339
8 3909 384 620 5087 4529 1004
12 7547 229 774 1450 8321 1003
16 8437 150 850 563 9287 1000

4.结论

  从试验结果可以看出,是有一些低频图片识别错误而高频图片识别正确的情况,论文中说这种情况大约有600张,也许对应的是半径6,但是我们可以看到此时有更多的低频正确而高频错误的情况。我觉得似乎作者为了证明他的观点只提了支撑证据成立,而没有提及反对证据是否不成立。如果据此认为高频信息和标签也有关联,那么也可以认为低频信息和标签反而有更多的关联,这更可能只是一种随机性现象,不应据此说明高频分量也蕴含了和标签有关的信息。此外我还试验了DenseNet121等其他网络,情况差不多。
  当然,这个引子可能有点问题,但也不影响作者后续的试验分析。

二、高低频图像的shuffle label试验

1.论文观点

  论文又在cifar10上使用resnet18进行了不同低频分量的shuffle label试验。shuffle label试验由Bengio在《A Closer Look at Memorization in Deep Networks》中提到,我的另一篇博客https://blog.csdn.net/Brikie/article/details/113237509也有介绍。所谓shuffle label试验就是把训练集的标签完全打乱,由于完全没有了规律性,这时网络训练就是完全靠死记每个样本和标签的对应关系。
论文试验结果如下图,从图中可以看出,训练初期低频和高频精度基本一样,但随着训练的增加,高频的作用逐渐体现,作者认为可以得出结论:CNN会优先学习低频信息。

2.复现条件

(1)使用和第一部分一样的ResNet18和cifar10。
(2)和论文说明的参数一样:Adam, lr=0.0001, batch size=100。

3.试验结果

对figure3的复现试验结果如下图:

4.结论

  曲线形态和原文不同,这可能是模型某些参数细节不同造成的,但反映出来的规律和结论和原文一致。
  注:这部分试验我开始理解成不同半径的低频图像分别训练观察精度变化,结果和论文曲线完全不同。后来仔细观察Figure3曲线的毛刺抖动都是一致的,细想才理解这个试验是用原始的Train数据训练,然后分别对不同半径的Train低频图像进行推理,观察同一个训练模型下各种频率分量的精度。

三、高低频图像的训练/测试精度试验

1.论文观点

  作者然后又分别在低频(LFC)和高频(HFC)分量图上进行了真实标签的训练和测试,得到数据如下表,作者的结论是低频信息有更好的泛化能力。

2.复现条件

(1)使用和第一部分一样的ResNet18和cifar10。
(2)Adam, lr=0.0001, batch size=100。

3.试验结果

对Table1的复现如下表:

LFC HFC
r train acc test acc train acc test acc
4 0.99 0.64 0.99 0.35
8 0.99 0.79 0.96 0.14
12 0.99 0.84 0.99 0.10
16 0.99 0.86 0.98 0.11

4.结论

  经验证,考虑到可能是模型某些参数细节不同造成了一些数值差异,但反映出的规律和原文Table1是基本一致的。

四、训练超参数对高低频图像的作用

1.论文观点

  作者又分别分析了模型其他一些超参变化时高、低频域图像上训练精度的变化,如BatchSize 、Vanilla、Dropout、Mix-up、BatchNorm、Adervisal Trainning等。结果如下,作者认为可以得出的结论是:小的batch size可以提高训练和测试准确率,而高的batch size可以缩小泛化差距。还有一点就是BatchNorm能够显著提升高频分量的捕捉能力。

2.复现条件

(1)使用和第一部分一样的ResNet18和cifar10。
(2)只使用cifar10中5000张图片,Adam, lr=0.01, batch size=100。使用图片较少是为了加快速度。对Figure5只试验了BatchNorm的情况。

3.试验结果


4.结论

  由于显存不够,batch size最大只能试到100,能够看出batch size大时训练会慢一些。BatchNorm的试验没有成功复现原文高频分量精度较高的现象,原因不明。

总结

  作者在论文中还继续进行了对抗训练的分析等等,我对这些部分不熟悉,暂不进行复现了。
总的来说,
(1)本文通过频域分量的拆解,分析了CNN在图像高低频域分量上的表现,低频泛化能力强,高频更接近噪声。
(2)通过复现此文学习了图像频域分析的相关技术,理解了高低频分量的意义和作用。
  本文不是为了严格复现,只是为了自己学习练手,仅忠实列出我试验的结果,文中理解不对,试验不对的地方,还请各位批评指正

【论文学习】高频分量有助解释卷积神经网络泛化 High-frequency Component Helps Explain the Generalization of CNN相关推荐

  1. (论文解读)High-frequency Component Helps Explain the Generalization of Convolutional Neural Networks

    目录 论文解读之: High-frequency Component Helps Explain the Generalization of Convolutional Neural Networks ...

  2. 深度学习笔记其六:现代卷积神经网络和PYTORCH

    深度学习笔记其六:现代卷积神经网络和PYTORCH 1. 深度卷积神经网络(AlexNet) 1.1 学习表征 1.1 缺少的成分:数据 1.2 缺少的成分:硬件 1.2 AlexNet 1.2.1 ...

  3. 花书+吴恩达深度学习(十四)卷积神经网络 CNN 之经典案例(LetNet-5, AlexNet, VGG-16, ResNet, Inception Network)

    目录 0. 前言 1. LeNet-5 2. AlexNet 3. VGG-16 4. ResNet 残差网络 5. Inception Network 如果这篇文章对你有一点小小的帮助,请给个关注, ...

  4. 深度学习多变量时间序列预测:卷积神经网络(CNN)算法构建时间序列多变量模型预测交通流量+代码实战

    深度学习多变量时间序列预测:卷积神经网络(CNN)算法构建时间序列多变量模型预测交通流量+代码实战 卷积神经网络,听起来像是计算机科学.生物学和数学的诡异组合,但它们已经成为计算机视觉领域中最具影响力 ...

  5. 【深度学习】基于Pytorch的卷积神经网络概念解析和API妙用(一)

    [深度学习]基于Pytorch的卷积神经网络API妙用(一) 文章目录 1 不变性 2 卷积的数学分析 3 通道 4 互相关运算 5 图像中目标的边缘检测 6 基于Pytorch的卷积核 7 特征映射 ...

  6. 【深度学习】基于Pytorch的卷积神经网络概念解析和API妙用(二)

    [深度学习]基于Pytorch的卷积神经网络API妙用(二) 文章目录1 Padding和Stride 2 多输入多输出Channel 3 1*1 Conv(笔者在看教程时,理解为降维和升维) 4 池 ...

  7. keras构建卷积神经网络_通过此简单教程学习在网络上构建卷积神经网络

    keras构建卷积神经网络 by John David Chibuk 约翰·大卫·奇布克(John David Chibuk) 通过此简单教程学习在网络上构建卷积神经网络 (Learn to buil ...

  8. 深度学习笔记(26) 卷积神经网络

    深度学习笔记(26) 卷积神经网络 1. CONV 2. POOL 3. Layer 4. FC 5. 卷积的优势 1. CONV 假设,有一张大小为32×32×3的输入图片,这是一张RGB模式的图片 ...

  9. 花书+吴恩达深度学习(十二)卷积神经网络 CNN 之全连接层

    目录 0. 前言 1. 全连接层(fully connected layer) 如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔~我会非常开心的~ 花书+吴恩达深度学习(十)卷积神经网络 CNN ...

最新文章

  1. 两个点 定位_深圳Mark点定位的一般原理与步骤
  2. python输入两个数用逗号隔开如不是两个数报错_Python数据类型
  3. NYOJ 71 独木舟上的旅行 贪心算法 之 乘船问题
  4. 网易云信直播sdk的整体传输优化
  5. 重磅发布|新一代云原生数据仓库AnalyticDB「SQL智能诊断」功能详解
  6. [ubuntu]deb软件源
  7. 资源放送丨《Oracle中为什么没有Double Write?Oracle支持原子写吗?》PPT视频
  8. [Go] 函数/方法 的 变参
  9. 跨语言调用模块.TXT
  10. 汉王考勤系统服务器IP,汉王人脸识别考勤客户端使用说明
  11. location属性和prototype属性介绍
  12. Ubuntu和Windows相互共享文件夹
  13. 考研高数常遇到奇函数偶函数,怎么去判定(定积分/二重积分中奇偶性判断)?
  14. 10.2.0.1到12.2.0.1数据库迁移expdp+dblink导入失败
  15. 2022出海中东:沙特阿拉伯电商市场现状及发展前景
  16. OSPF高级特性 —— 管理距离(优先级)修改 + 外部路由的metric值的修改
  17. OpenGL等矩形贴图到立方体环境贴图变换技巧记录
  18. 什么是IOC容器——简单明了
  19. android 手机数据备份,如何备份和恢复Android应用数据
  20. 结对编程作业二——必应缤纷桌面软件测试报告——10061191洪虹10061162刘俊伟

热门文章

  1. c++中的new、operator new、placement new
  2. Async await 异步编程说明
  3. DP_字串匹配(HDU_1501)
  4. 使用log4net记录日志到MySQL中 (转)
  5. vivado2017.4安装教程
  6. SQL Server 2019安装教程
  7. C语言 | 结构体详解(C结构体)
  8. 人工智能 | 人脸识别研究报告(概念篇)
  9. Python练习 | Python 可迭代对象 迭代器
  10. sleep: invalid time interval ‘1s\r’