ECCV 2022 | 谷歌提出Data-free NAS,网络搜索仅需一个预训练模型

简介: ECCV 2022 | 谷歌提出Data-free NAS,网络搜索仅需一个预训练模型

神经网络架构搜索(NAS) 自 2016 年提出以来就广受关注,很多工作通过设计搜索空间,提升搜索算法等提升 NAS 的精度。今天这篇文章主要研究如何将 NAS 用于数据缺失的情况,文中提出 data-free NAS,该架构仅需要一个预训练模型,就可以自动进行网络搜索。目前该方法主要研究图片领域。


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

代码地址: https://github.com/liuzechun/Data-Free-NAS


Data-free NAS 的架构非常简单,分为两步,第一步用预训练网络模型生成数据,第二步用生成的数据和预测的标签(label)来训练 NAS。


而挑战在于 NAS 需要利用生成的数据训练和评估搜索空间中数以百万计的网络架构的优劣,对他们进行排序。如果生成的数据不够多样,网络就很容易过拟合,所有网络都表现很好,就很难从中筛选出最优网络结构。因此,如何提高生成数据的多样性,使其能支持网络搜索的重任,就取决于生成算法的优劣了。


1. 图片生成算法


这篇文章不仅利用了损失函数计算导数来指导图片生成,还提出了循环生成语义更丰富的标签(recursive label calibration)和区域更新方法(regional update)来提升生成数据的丰富度。


1.1 Loss function


最基础的数据生成方式通过输入一张全是白噪声的图片到预训练网络中,通过计算输出的 logits 和目标标签的损失函数来计算导数,更新图片,并且添加正则化约束。


但这种方式生成的图片容易模式近似,多样性不足以支撑 NAS。


1.2 recursivelabel calibration

因此作者提出循环标签生成(recursive label calibration),主要基于的一个观察:自然图像作为预训练模型的输入时,模型输出的预测是一个分布,最大值是目标类,并且有其他几个峰值落在与之近似的类上。如下图所示,一张自然图像 “咖啡杯” 的预测包含 “咖啡杯” 和相关类“杯子”。


然而针对某一个标签生成的图片往往容易过拟合,从而有极大的预测值在该标签上,但无法发掘语义近似的标签之间的联系,比如下图的 (b) 中,针对“咖啡杯” 类合成的图像,预训练模型仅预测该图像为“咖啡杯”,使得图片过分强化咖啡杯的特征,且不像真实图片。


人们希望生成图片与真实图片尽可能接近,为了做到这点,可以先让生成图片和真实图片经过预训练网络后的预测(logits)尽可能相近。但是真实的训练数据与其 logits 无法获得,因此,作者提出 Recursive Label Calibration,利用循环放大预训练模型对生成图像在语义近似类上的预测值,生成 soft label,再用 soft label 来指导图片生成。


从图(c)中可以看出,使用 Recursive Label Calibration 合成的图像。它会自动将 “杯子” 标识为针对 “咖啡杯” 合成的图像的相关类,并且生成图像看起来也更自然。


1.3 regional update


此外,作者提出的区域更新(regional update),即在生成图片过程中,每次仅用导数更新图片的一个区域,比如针对于 ImageNet 数据集的生成数据仅更新 256×256 的图片范围中大小为 224×224 的随机范围。这样保证每一个 224×224 的范围都可以独立成为一幅生成图片,从而配合后续网络训练中用到的随机裁剪(random crop)数据增强算法。


整体的生成算法如上图所示:输入一张白噪声图片,在生成过程的每次迭代中,一个 224×224 区域是从 256×256 输入中随机裁剪的,利用通过 loss 计算的导数更新所选区域,直到白噪声收敛成合成图片。然后使用预训练模型对合成图像的预测作为软标签(soft label)来指导下一批从白噪声到图片的生成,从而循环生成 soft-label 和与之对应的图片。


2. 可视化和对照实验


这样,生成的图片相比于仅仅用损失函数生成的图片来得更佳多样化,也更接近真实图片:


同时,作者做了多组对比实验,来分析生成图片对于 NAS 标定不同网络结构好坏的准确性的影响。通过计算用生成图片训练网络的精度和用真实数据训练的网络精度之间的一致性,作者分析得出,使用所提出的 recursive label calibration 和 regional update 可以大大提高一致性,使得 NAS 更容易搜索得到最优网络:


3. Data-free NAS 实验结果


最后,作者用生成图片和生成图片对应的预训练网络预测值来指导 NAS 训练,结合三种常见的 NAS 方法,得到 data-free NAS,包括用基于导数的搜索算法 DSRTS [1],基于遗传算法的 SPOS[2],和基于强化学习算法的 ProxylessNAS[3]。


实验结果表明,结合不同的搜索算法,data-free NAS 都能搜索出和用真实图片搜索得到的结构效果相近甚至更好的网络结构,表明了 data-free NAS 的可行性。


Data-free DARTS :


Data-free SPOS :


Data-free ProxylessNAS :


更多结果和方法细节可以参考原论文。


参考文献:

[1] Liu, H., Simonyan, K., Yang, Y., et al.: Darts: Differentiable architecture search. In: International Conference on Learning Representations (2019)

[2] Guo, Z., Zhang, X., Mu, H., Heng, W., Liu, Z., Wei, Y., Sun, J.: Single path one-shot neural architecture search with uniform sampling. arXiv preprint arXiv:1904.00420 (2019)

[3] Cai, H., Zhu, L., Han, S., et al.: Proxylessnas: Direct neural architecture search on target task and hardware. arXiv preprint arXiv:1812.00332 (2018) 

相关实践学习
函数计算部署PuLID for FLUX人像写真实现智能换颜效果
只需一张图片,生成程序员专属写真!本次实验在函数计算中内置PuLID for FLUX,您可以通过函数计算+Serverless应用中心一键部署Flux模型,快速体验超写实图像生成的魅力。
相关文章
|
5月前
|
C++
基于Reactor模型的高性能网络库之地址篇
这段代码定义了一个 InetAddress 类,是 C++ 网络编程中用于封装 IPv4 地址和端口的常见做法。该类的主要作用是方便地表示和操作一个网络地址(IP + 端口)
317 58
|
5月前
|
网络协议 算法 Java
基于Reactor模型的高性能网络库之Tcpserver组件-上层调度器
TcpServer 是一个用于管理 TCP 连接的类,包含成员变量如事件循环(EventLoop)、连接池(ConnectionMap)和回调函数等。其主要功能包括监听新连接、设置线程池、启动服务器及处理连接事件。通过 Acceptor 接收新连接,并使用轮询算法将连接分配给子事件循环(subloop)进行读写操作。调用链从 start() 开始,经由线程池启动和 Acceptor 监听,最终由 TcpConnection 管理具体连接的事件处理。
225 2
|
5月前
基于Reactor模型的高性能网络库之Tcpconnection组件
TcpConnection 由 subLoop 管理 connfd,负责处理具体连接。它封装了连接套接字,通过 Channel 监听可读、可写、关闭、错误等
174 1
|
5月前
|
JSON 监控 网络协议
干货分享“对接的 API 总是不稳定,网络分层模型” 看电商 API 故障的本质
本文从 OSI 七层网络模型出发,深入剖析电商 API 不稳定的根本原因,涵盖物理层到应用层的典型故障与解决方案,结合阿里、京东等大厂架构,详解如何构建高稳定性的电商 API 通信体系。
|
7月前
|
域名解析 网络协议 安全
计算机网络TCP/IP四层模型
本文介绍了TCP/IP模型的四层结构及其与OSI模型的对比。网络接口层负责物理网络接口,处理MAC地址和帧传输;网络层管理IP地址和路由选择,确保数据包准确送达;传输层提供端到端通信,支持可靠(TCP)或不可靠(UDP)传输;应用层直接面向用户,提供如HTTP、FTP等服务。此外,还详细描述了数据封装与解封装过程,以及两模型在层次划分上的差异。
1390 13
|
7月前
|
网络协议 中间件 网络安全
计算机网络OSI七层模型
OSI模型分为七层,各层功能明确:物理层传输比特流,数据链路层负责帧传输,网络层处理数据包路由,传输层确保端到端可靠传输,会话层管理会话,表示层负责数据格式转换与加密,应用层提供网络服务。数据在传输中经过封装与解封装过程。OSI模型优点包括标准化、模块化和互操作性,但也存在复杂性高、效率较低及实用性不足的问题,在实际中TCP/IP模型更常用。
999 10
|
2月前
|
机器学习/深度学习 数据采集 人工智能
深度学习实战指南:从神经网络基础到模型优化的完整攻略
🌟 蒋星熠Jaxonic,AI探索者。深耕深度学习,从神经网络到Transformer,用代码践行智能革命。分享实战经验,助你构建CV、NLP模型,共赴二进制星辰大海。
|
3月前
|
机器学习/深度学习 传感器 算法
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
244 2
|
3月前
|
机器学习/深度学习 并行计算 算法
【CPOBP-NSWOA】基于豪冠猪优化BP神经网络模型的多目标鲸鱼寻优算法研究(Matlab代码实现)
【CPOBP-NSWOA】基于豪冠猪优化BP神经网络模型的多目标鲸鱼寻优算法研究(Matlab代码实现)
|
5月前
基于Reactor模型的高性能网络库之Poller(EpollPoller)组件
封装底层 I/O 多路复用机制(如 epoll)的抽象类 Poller,提供统一接口支持多种实现。Poller 是一个抽象基类,定义了 Channel 管理、事件收集等核心功能,并与 EventLoop 绑定。其子类 EPollPoller 实现了基于 epoll 的具体操作,包括事件等待、Channel 更新和删除等。通过工厂方法可创建默认的 Poller 实例,实现多态调用。
323 60