边策 发自 凹非寺

量子位 报道 | 公众号 QbitAI

风格迁移是VGG网络架构的拿手好戏。难道其他架构的CNN,比如ResNet就不可以吗?可以,但是直接用它来做风格迁移,原来的风格仍然非常明显,几乎没有迁移。

就像这样:

有没有一种方法,在经过调整后,可以把非VGG架构用于风格迁移呢?

之前的确有人尝试过。但他们不是直接优化RGB空间中的输出图像,而是在傅立叶空间中对其进行优化,并在将图像传递到神经网络之前通过一系列变换(例如抖动、旋转、缩放)来操作图像。

通过去相关参数化和变换鲁棒性,在非VGG架构上实现风格迁移

为何给图像做一个简单的旋转、抖动处理,就能实现非VGG架构的风格迁移?有位日本的科技博主Reiichiro Nakano受到MIT上个月发表的一篇论文启发,用实验结果解答了这个问题。

这篇论文叫做《对抗样本不是bug而是特征》(Adversarial Examples Are Not Bugs, They Are Features)。下面就让我们来分析分析。

鲁棒与非鲁棒特征

MIT的文章提出,用于训练分类器的图像中存在所谓的“鲁棒”和“非鲁棒”特征。

我们可以将鲁棒的特征视为人类用于分类的特征,例如,大耳朵指向某些品种的狗,而黑白条纹指向斑马。

另一方面,非鲁棒特征是人类对之不敏感的特征,但是它们却与整个训练、测试数据集上的类别相关联。

作者认为,可以通过用另一个类的非鲁棒特征替换图像中的非鲁棒特征来产生对抗样本。

有些图像分类模型的抵抗性较差,给熊猫照片加上一点噪声(非鲁棒特征),它就会把熊猫当成长臂猿:

论文中有一张图表特别值得注意,它显示了对抗样本的可迁移性与学习非鲁棒特征能力之间的相关性。

于是有人推测,由于VGG无法像ResNet那样捕获图像的非鲁棒特征,因此在图像分类准确率上吃亏,却能使VGG更好地进行风格迁移。

之前我们的问题得到了解释:

图像变换会削弱甚至破坏非鲁棒特征。经过优化后,CNN不再能够可靠地利用非鲁棒特征来降低损失,因此不得不利用鲁棒特征,可能会对图像变化产生更大的抵抗力(旋转和抖动的耳朵仍然看起来像一个大耳朵)。

实验

测试这个假设是相当简单的:使用一个抵抗力强大(鲁棒)的分类器进行风格迁移,看看会发生什么。

博主对两个不同条件训练的ResNet-50模型进行比较。一个是MIT作者用鲁棒特征训练的模型(已开源),另一个是博主自己训练的常规ResNet-50模型(对非鲁棒特征敏感)。

此外,还有常规VGG-19风格转换的图片作为对比。

结果成功了!鲁棒ResNet模型相比常规ResNet模型显示出了巨大的改进。请记住,二者网络架构完全相同,执行风格迁移的代码完全相同,只是权重不同!

在VGG-19与鲁棒的ResNet之间进行比较,会得到更有趣的结果。乍一看,鲁棒ResNet模型生成的图片大致与VGG-19相同。然而,仔细观察却发现,ResNet的输出包含更多的噪点,伪造的痕迹更明显一些。

目前还不清楚究竟是什么原因导致这些痕迹。一种理论是它们是由不可分的核尺寸和卷积层中的步长引起的“棋盘伪影”(checkerboard artifacts),也有可能是由最大池化层的存在造成的。

这些伪影虽然存在问题,但似乎与对抗鲁棒性在神经风格迁移中解决的问题大不相同。

结论

虽然这个实验是因为观察到VGG的一个特殊特征而开始的,但它没有对这种现象作出解释。实际上,如果我们要接受这样的理论,即对抗鲁棒性是VGG能直接用于神经风格转移的原因,我们肯定会在现有文献中找到一些迹象表明VGG自然比其他架构更强大。

不幸的是,我们找不到任何支持这个论点的东西。

也许对抗鲁棒性恰好修复或掩盖非VGG架构在风格迁移中失败的真正原因,即对抗鲁棒性是有良好风格迁移能力的充分不必要条件

这位日本博主认为进一步研究VGG是未来工作一个非常有趣的方向。

未来的工作

最后,博主给出了一些未来工作的想法:

1、找出鲁棒ResNet伪造痕迹明显的原因,并尝试修复它们。

2、尝试使用超参数,尤其是用于风格和内容的图层。

3、本文使用的鲁棒ResNet模型来自Engstrom等人的成果。他们是在一组受限制的ImageNet上训练,只有9个分类。在完整的ImageNet数据集上训练分类器是否会产生更好的输出。

传送门

博客地址:

https://reiinakano.com/2019/06/21/robust-neural-style-transfer.html

论文解读地址:

http://gradientscience.org/adv/

鲁棒ResNet-50模型:

https://github.com/MadryLab/robust_representations

Cloab地址:

https://colab.research.google.com/github/reiinakano/adversarially-robust-neural-style-transfer/blob/master/Robust_Neural_Style_Transfer.ipynb

谁说只有VGG才能做风格迁移,ResNet也可以相关推荐

  1. 谁说只有VGG才能做风格迁移,ResNet也可以!答案就在对抗攻击中

    https://www.toutiao.com/a6707818378641293836/ 2019-06-29 13:21:10 边策 发自 凹非寺 量子位 报道 | 公众号 QbitAI 风格迁移 ...

  2. 华人团队用Transformer做风格迁移,速度快、可试玩,网友却不买账

    视学算法报道 编辑:杜伟 利用神经网络进行风格迁移是一项非常常见的任务,方法也很多,比如基于优化和基于 RL 的方法.最近,来自百度 VIS 团队的研究者提出了一种基于 Transformer 的风格 ...

  3. VGG—style-transport(风格迁移)

    文章目录 一.neural_style.py文件 二.stylize.py 三.VGG 权重文件:imagenet-vgg-verydeep-19.mat下载地址: https://pan.baidu ...

  4. TensorFlow实时任意风格迁移,送女朋友的创意礼物有了

    TensorFlow实时任意风格迁移,送女朋友的创意礼物有了 前言 自适应实例规范化 风格迁移网络 编码器结构与实现 通过反射填充(reflection padding)减少块伪影 解码器结构与实现 ...

  5. Neural Style Transfer 风格迁移经典论文讲解与 PyTorch 实现

    今天花半小时看懂了"Image Style Transfer Using Convolutional Neural Networks Leon"这篇论文,又花半小时看懂了其 PyT ...

  6. 毕业设计 - 题目:基于深度学习的图像风格迁移 - [ 卷积神经网络 机器视觉 ]

    文章目录 0 简介 1 VGG网络 2 风格迁移 3 内容损失 4 风格损失 5 主代码实现 6 迁移模型实现 7 效果展示 8 最后 0 简介 今天学长向大家介绍一个机器视觉项目 基于深度学习卷积神 ...

  7. 风格迁移应用_浅谈风格迁移(一)固定风格迁移

    -- 本文来自于VIP Lab的黄宇杰同学撰稿 风格迁移是一个有趣的计算机视觉话题.它被用于我们的日常生活中,比如我们常用的美图工具中的各类滤镜背后就是风格迁移技术.其实包括真人到二次元人物.二次元人 ...

  8. 图像风格迁移【老版】

    深度学习目前为止最有用的东西是图像处理,我们可以用它在极早期判断癌症, 也可以用它在茫茫人海里寻找犯人,但是要我说你能写一个小程序取悦女朋友, 你就不一定能信, 这一招叫艺术风格变换,就是你点击一下, ...

  9. 【毕业设计】深度学习图像风格迁移算法研究与实现 - python 卷积神经网络

    文章目录 0 简介 1 VGG网络 2 风格迁移 3 内容损失 4 风格损失 5 主代码实现 6 迁移模型实现 7 效果展示 8 最后 0 简介

最新文章

  1. 硬盘接口的类型介绍和比较
  2. zend studio设置utf8
  3. 后端:Java中如何更优雅的处理空值,看完你就懂了!
  4. python numpy.random模块中提供啦大量的随机数相关的函数
  5. Flask爱家租房--发布新房源(总结)
  6. 复杂业务下向Mysql导入30万条数据代码优化的踩坑记录
  7. 2.4GHz/5.8GHz WiFi 天线基础知识
  8. python 模拟键盘_用Python模拟键盘输入
  9. 2022 iapp 小易工具箱源码
  10. 数值卡,让数据可视化玩出新花样丨三叠云
  11. srsLTE系统安装教程
  12. 【信息系统项目管理师】第十四章 信息文档管理和配置管理(考点汇总篇)
  13. Outlook中Skype会议按钮丢失
  14. 计算机命令窗口怎么打开,如何打开命令行窗口_教你在win7上直接打开命令行窗口 - 驱动管家...
  15. 大学生云计算期末考试题
  16. Pygame 官方文档 - pygame.key
  17. 小米推行高端化战略,但失去性价比优势或是它不可承受之重
  18. 图片征集网站源码_征集提名:2013年卡尔加里最烂的网站
  19. 计网核心总结(测试开发面试常问题目)
  20. Flex 2.0 软件及文档下载

热门文章

  1. 一条批处理语句ping局域网内的所有机器
  2. C#只能lock 引用类型的值 (转载)
  3. java String format占位符
  4. Mycat1.6之注解多租户
  5. 找出没有相邻的1的二进制数的个数---2013年2月17日
  6. session:的生命周期
  7. 2 通过JNI混合使用Java和C++ ----- 访问数组
  8. SqlServer中存储过程中将Exec的执行结果赋值给变量输出
  9. Silverlight 数据显示和布局控件 示例
  10. ip地址管理与子网的划分二