AI Studio 操桨手记
2021.08.01 15:37浏览量:166简介:介绍了在AI Studio平台上学习使用飞桨的经历,以及这次论文复现活动。
玩耍深度学习有段时间了,借着这次征文活动总结下。
几年前为了教娃学算数,我在小度智能音箱上写了个能在线PK的口算游戏。其实有这写万八千行代码的功夫,算数早就教会了~~ 但这个游戏不但教会了我女儿,还帮助了千千万万的小盆友一边玩游戏一边学算数。我也因此被邀请参加了19年的百度AI开发者大会,我就是在那首次“摸桨”的,接着,我就在AI Studio上参加了一系列的课程,从毕老师的《机器学习思考的故事》开始,“扒上了大数据的战车”~ ~。在这丰富的课程中,有一门《百度架构师手把手带你零基础实践深度学习》,堪称深度学习工程的“从入门到精通”。再后来,我又学了各种CV细分领域(如分类、检测、分割、生成等)的一些工程实践课程,受益匪浅。2020年 AI Studio 又将李宏毅老师的深度学习课程搬到了平台上,这些课程理论讲得多一些,我最喜欢里面的GAN课程了。
在模型的海洋中“操桨划水”一段时间后,我发现生成模型 GAN 能够实现很多酷炫的应用,非常适合玩耍,所以着重关注。在这次的论文复现活动中,我就选择了那篇使用SPADE正则化(Spatially-Adaptive Normalization)加强像素风格迁移网络 Pix2PixHD 效果的论文。大家也有将这个模型叫做 GauGAN 的,因为这个 GAN 模型能够将图片进行各种风格的转换,而且效果超级棒,就像艺术家一样,所以用梵高的名字命名。复现的初版代码我已经放到了 AI Stuido 上与小伙伴们众乐乐(https://aistudio.baidu.com/aistudio/projectdetail/1964617),这个版本的模型前后向输出都是与官方的 pytorch 源码对齐了的。可能由于技能不够熟练,这个精度对齐的过程可真是个“体力活”~ ~。当然,我的“肌肉”也得到了锻炼。对齐精度期间的酸甜苦辣、坑深路远也都被一一记在了项目里,与同路的伙伴们共勉。
但是论文复现是有精度要求的,虽然我已经对齐了模型精度,但训练完论文指定的轮数后输出图片指标老是达不到标准。我想这也许和训练硬件差异有关吧。原模型是在 8卡 V100 上使用 SyncBatchNormal 将多张卡里的模型一起进行归一化来训练的,充分利用了大 BatchSize 的优势,而我能用的硬件最多4卡,所以只能从别处想办法。SPADE正则化要解决的是普通 BN 层导致信息丢失,而导致生成图片失败的问题,如下图:
未使用SPADE层代替普通BN层的模型输出一片纯色,而使用了SPADE的模型则能够输出语义标签代表的图片内容。但是,在复现过程中,我发现即使用了SPADE的模型,一些面积大的语义标签对应的数据集样本又比较少,它们的生成效果还是不够好。比如下图中的床和房屋内墙部分就生成的比较模糊:
为了解决这个问题以提升模型的生成能力,我尝试了使用注意力机制。在加上注意力后,复现的模型生成的图片比原模型生成的还要清晰:
既然,这个模型这么有趣,我何不将其部署成一个能够在小度只能音箱上的的涂鸦游戏给小盆友们玩呢。但这个模型有600多M参数,运行的硬件要求还是挺高的。尤其是要部署在云上,那可真是“费铁”啊~~ 。所以,果断上手给模型瘦身。经过一番调参尝试后结果还不错:
上图中左一是生成的图片,上面那行是 600M 模型的生成结果,下面那行是优化后 90M 模型的生成结果,看上去生成效果的差别不大~~
最后,在这次论文复现以及后来要进行项目落地的过程中,非常感谢飞桨 AI Studio 提供的算力、技术等支持,感谢百度智能云的万有引力计划提供的BML平台资源支持,感谢小度智能音箱 DBP 平台提供的各种支持。有了你们的热切帮助和提供资源,我们开发者就能够更加愉快的进行玩耍与创造了~~
发表评论
登录后可评论,请前往 登录 或 注册