前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一键去纹身,AI看了直呼......

一键去纹身,AI看了直呼......

作者头像
McGL
发布2021-04-21 10:58:01
7320
发布2021-04-21 10:58:01
举报
文章被收录于专栏:PyVisionPyVision

程序小哥 Vijish Madhavan 刚刚开源了他搞的去纹身模型 SkinDeep,下面是这个 AI 应用到那个 AI 身上的效果,看起来效果杠杠的。

这么屌的项目显然跟 JB 有点渊源,作者 Madhavan 看了贾斯汀·比伯(Justin Bieber)的音乐短片《Anyone》,鹅妹子嘤啊。我们都知道比伯满身纹身,可是短片中是一点纹身痕迹都没有,这是两个化妆师在他身上刷了几个小时来掩盖的效果。作者一想这成本也太高了吧,眉头一皱,计上心头,是时候展示一身真正的深度学习技术了。用深度学习可以很好的去纹身吗?能和 photoshop 相媲美吗?事不宜迟,干就完了,嗯,输出视频看起来比较难呀,那先从图片搞起吧。

为什么不用 photoshop 呢?

Photoshop 可以产生非常好的效果,但它需要专业知识和数小时的工作修饰整个图像。

阿伦艾弗森(美国篮球运动员),使用这个模型清除了纹身

合成数据生成

要做这样一个项目,需要大量的图像对,但是作者找不到任何这样的数据集,所以他选择了合成数据。

(1)叠加 APDrawing 数据集图像对和一些去除了背景的纹身设计,这使用 Python OpenCV 可以很容易地完成。

(2) APDrawing 数据集具有线条艺术(line art)对,可以模拟纹身线条,这有助于模型学习和去除这些线条。

(3) APDrawing 数据集只有肖像头部照片,对于全身照片,运行了以前的 ArtLine 项目(https://github.com/vijishmadhavan/ArtLine),并叠加输出图像到输入图像。

(4) ImageDraw.Draw 和森林绿颜色码一起使用,并随机放置在放大的身体图像上,类似 fast.ai 的 Crappify。

(5)在需要变形和改变角度的物体上也可以使用 Photoshop 来放置纹身。

示例输出

满脸纹身的脸

视觉对比

技术细节

这个项目的亮点在于生成合成数据,这要感谢 pyimagesearch.com 博客。

https://www.pyimagesearch.com/2016/03/07/transparent-overlays-with-opencv/

https://www.pyimagesearch.com/2016/04/25/watermarking-images-with-opencv-and-python/

https://www.pyimagesearch.com/2015/01/26/multi-scale-template-matching-using-python-opencv/

  • 自注意力(https://arxiv.org/abs/1805.08318)。生成器是有光谱归一化和自注意的预训练 UNET。我从 Jason Antic 的 DeOldify (https://github.com/jantic/DeOldify)中学到了一些东西,这发挥了很大的作用,突然之间面部特征有了正确的细节。
  • 渐进式大小调整(https://arxiv.org/abs/1710.10196) ,(https://arxiv.org/pdf/1707.02921.pdf)。渐进调整大小(Progressive resizing)采用了逐渐增加图像大小的思想,在这个项目中,图像大小逐渐增加,学习率被调整。fast.ai 集成了渐进式大小调整,这有助于模型更好地泛化,因为它可以看到更多不同的图像。
  • 生成器损失: 基于 VGG16 的感知(Perceptual)损失/特征损失. (https://arxiv.org/pdf/1603.08155.pdf)。

所需的库

这个项目是基于 Fast.AI 库创建的。

  • fastai==1.0.61(及其依赖项)。请不要安装更高版本。
  • PyTorch 1.6.0。请不要安装更高版本

开始上手

这个项目还在改进中,不过作者想把它拿出来,这样可以得到一些好的建议。我们也可以尝尝鲜。

最简单的开始方法就是试一下 Colab:

https://colab.research.google.com/github/vijishmadhavan/SkinDeep/blob/master/SkinDeep.ipynb

输出被限制在500px,并且要想效果好需要输入高质量的图像。

局限性

  • 合成数据与真实纹身不匹配,因此在一些图像上模型有些吃力。
  • 作者自己构建一个巨大的数据集是不可能的,所以只能使用有限数量的图像对。
  • 纹身设计是独特的,每个人不一样,在某些情况下模型性能可能会下降。
  • 彩色纹身不起作用,因为数据集里没有。
  • 作者说自己是个蹩脚的程序员。(这个作者就谦虚了)

展望未来

作者表示模型还需要改进,如果感兴趣一起改进它。

好的,让我们马上 clone 一下看看:

GitHub地址: https://github.com/vijishmadhavan/SkinDeep

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-04-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 PyVision 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 为什么不用 photoshop 呢?
  • 合成数据生成
  • 示例输出
  • 视觉对比
  • 技术细节
  • 所需的库
  • 开始上手
  • 局限性
  • 展望未来
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档