文章地址:
- NAS-DIP: Learning Deep Image Prior with Neural Architecture Search
- Neural Architecture Search for Deep Image Prior
参考博客:https://zhuanlan.zhihu.com/p/599390720
文章目录
- [NAS-DIP: Learning Deep Image Prior with Neural Architecture Search](#NAS-DIP: Learning Deep Image Prior with Neural Architecture Search)
-
- [1. 方法原理](#1. 方法原理)
-
- [1.1 动机](#1.1 动机)
- [1.2 相关工作](#1.2 相关工作)
- [1.3 方法简介](#1.3 方法简介)
- [2. 实验结果](#2. 实验结果)
- [3. 总结](#3. 总结)
- [Neural Architecture Search for Deep Image Prior](#Neural Architecture Search for Deep Image Prior)
-
- [1. 方法原理](#1. 方法原理)
-
- [1.1 动机](#1.1 动机)
- [1.2 相关工作](#1.2 相关工作)
- [1.3 方法细节](#1.3 方法细节)
- [2. 实验结果](#2. 实验结果)
- [3. 总结](#3. 总结)
NAS-DIP: Learning Deep Image Prior with Neural Architecture Search
1. 方法原理
1.1 动机
动机
- 基于Deep Image Prior的各种应用都有了很好的效果,但是在当时对于DIP的原理、调优都没有非常好的解释
- 不同的网络结构对于DIP收敛效率和恢复效果有一定的影响,选择合适的网络结构可能会对DIP的发展有参考意义
贡献
- 基于几种常用的上采样算子提出了一种分解方法,使能够为每项任务搜索合适的上采样单元。
- 提出了一种Skip connection构建的搜索方法
1.2 相关工作
上采样:将提取到的高层特征进行放大,此时就需要对feature map进行上采样
常见的方法有:
- 近邻插值(nearest interpolation)
- 双线性插值(bilinear interpolation)
- 双三次插值(Bicubic interpolation)
- 反卷积(Transposed Convolution)
- 反池化(Unpooling)。
每种方法具体的操作参考 https://zhuanlan.zhihu.com/p/337745762, 转置卷积很有意思,后续的工作也会用到(其可以自定义卷积核)
由于不同的任务需要的网络结构不同,所以本文的一个核心点就是利用强化学习循环神经网络提供了一种搜索最优网络结构的方法。
NAS: network architecture search
给定想要搜索的网络结构:这里是upsamping和skip connection的可能结构空间,然后使用强化学习等搜索方法获取一个合适的网络结构。这样设计的最大的一个目的是为了自适应DIP各种不同的任务,因为作者认为DIP用于去噪、超分、去雾等工作需要的网络结构是不同的。换一句话说当时的工作认为网络结构对DIP的影响很大
1.3 方法简介
NAS-DIP就是用了一个RNN controller 强化学习模块搜索最合适的DIP网络架构:
提供的两个网络模块搜索空间是
-
Upsampling方法和大小
-
Upsampling 分解和权重共享
-
Skip connnection
2. 实验结果
消融实验
- 网络结构确实是对DIP有影响,且使用NAS-DIP能够提升效果:
各种应用
-
超分辨率
-
去噪:感觉有些问题,过拟合了,拟合了一些噪声
-
去雾:
3. 总结
总结
- 网络结构对传统DIP的效果有影响,搜索一个合适的网络结构可能对网络效果有很大的影响
- 定性分析 上采样结构、skip connection结构对DIP的影响很大,设置了搜索空间(包括upsampling方法、结构和skip connection结构等)
- 提出了一种基于强化学习的网络结构搜索方法
问题
- 搜索合适网络结构的时间消耗实在是离谱:NVIDIA V100 GPU with 12GB memory
- super-resolution task takes about 3 days
- denoising about 3 days
- inpainting about 5 days.
- 个人感觉效果的提升没有可以消除这么长时间和资源消耗的问题。(trade off)
- 除了upsampling 和 skip connection是否还有其他结构影响更大,很难进行一个全面的分析,也没有提出一个非常优秀的结构出来。
Neural Architecture Search for Deep Image Prior
1. 方法原理
1.1 动机
动机
- DIP的效果依赖于CNN的网络结构(前期定性分析得到的实验结论,后续分析有其他结论)
- 不同的CNN网络结构参数不同,效果不同,如何选择最佳的DIP网络结构
- GANs领域中的见解是:网络结构的Decoder对生成模型的影响非常大
贡献
- 使用遗传算法搜索最佳的网络结构
1.2 相关工作
前一节中叙述,主要是一些关于NAS的发展:强化学习、全局搜索方法
1.3 方法细节
也咩什么细节,就是使用遗传算法搜索最合适的网络结构,需要搜索的包括:
- Encoder的某一层是否用到
- Encoder卷积核大小
- Encoder卷积核数量
- Decoder的某一层是否用到
- Decoder卷积核大小
- Decoder卷积核数量
- skip connection是否打开
2. 实验结果
应用场景
-
破损修复,因为这里搜索了很多不同的网络结构,所以有很多输出结果
-
各种场景:在各种场景中都有一定的提升,也说明了搜索合适的网络结构可能可以提升DIP的效果
3. 总结
小结
- 使用遗传算法搜索最佳的网络结构
问题
- 可以给出可视化的网络结构,但是没有说明到底什么样的结构对DIP有很大的影响,只是对比说了对称网络效果比非对称网络结构好。
- 时间消耗:
- 每个结构搜索20-30次迭代需要 2-3分钟
- 16 Nvidia Titan-X GPUs搜索一次结构需要3-6小时
- 是否真的是最优秀的结构?
- 每个结构只搜索了20-30次迭代,对于DIP而言往往是不够的