0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

一个模型可以实现多个图像修改任务

DPVg_AI_era 来源:未知 作者:李倩 2018-11-05 17:02 次阅读

一个模型可以实现多个图像修改任务!本文作者结合自注意力GAN、逐渐增大的训练方式等技术,实现了惊艳的旧照片着色效果。

图像着色、图像增强、恢复旧图像等是计算机视觉领域的热点问题,不过,用一个模型很好地实现多个任务的研究不多。

近日,GitHub用户Janson Antic发布了一个名为DeOldify的项目,这是一个给旧照片着色和修复的神器。

地址:https://github.com/jantic/DeOldify

让我们先看看效果:

Maria Anderson as the Fairy Fleur de farine and Lyubov Rabtsova as her page in the ballet “Sleeping Beauty” at the Imperial Theater, St. Petersburg, Russia, 1890.

Woman relaxing in her livingroom (1920, Sweden)

Medical Students pose with a cadaver around 1890

Surfer in Hawaii, 1890

Whirling Horse, 1898

Interior of Miller and Shoemaker Soda Fountain, 1899

Paris in the 1880s

Edinburgh from the sky in the 1920s

(更多结果图像请点击文末链接查看)

技术细节

这是一个基于深度学习的模型。具体来说,我结合了以下方法:

Self-Attention生成对抗网络(https://arxiv.org/abs/1805.08318)。除了generator是一个预训练的Unet之外,我只做了一点修改,使它具有光谱规范化(spectral normalization)和自注意力(self attention)。一开始我努力想实现一个Wasserstein GAN版本,但没成功,转向这个版本之后就一切都好了。我喜欢Wasserstein GAN的理论,但它在实践中并不成功,因此我喜欢上了Self-Attention GANs。

训练结构的灵感来自Progressive Growing of GANs(https://arxiv.org/abs/1710.10196)。但不是完全一样,差别主要是我的版本层数保持不变——只是逐步改变输入的大小并调整学习率以确保尺寸的转换成功。最终结果基本一致——训练速度更快、更稳定,并且能更好地泛化。

Two Time-Scale Update Rule(https://arxiv.org/abs/1706.08500)。 这也非常简单, 就是一对一的generator/critic迭代和更高的critic学习率。

Generator Loss包括两部分:一部分是基于VGG16的基本Perceptual Loss(或Feature Loss),基本上只是使生成模型偏差以复制输入图像。第二部分是critic的loss score。对于curious来说,Perceptual Loss本身不足以产生良好的结果。它往往只是鼓励一堆棕色/绿色/蓝色 ,基本上这只是在测试中作弊,神经网络很擅长做这些!这里需要意识到的关键问题是,GAN实际上正在学习损失函数,这对于我们在机器学习中所追求的理想来说真正迈出了一大步。当然,当你把以前人工编码的东西交给机器学习,通常能得到更好的结果。这个项目就是这样。

这个模型的惊艳之处在于,它对各种各样的图像修改都很有用,而且应该能做得很好。上面举例的是着色模型的结果,但这只是pipeline的一个部分,用同样的模型可以开发更多任务。

我用这个模型开发的下一个任务是修复旧图像,使它们看起来更好,所以我的下一个项目是“defade”模型。我已经做了最初的努力,在我写这篇文章时已经处于模型训练的早期阶段。基本上,它只是训练相同的模型来重建图像,使用夸张的对比度/亮度调整来增强图像,作为褪色照片和使用旧/坏设备拍摄的照片的模拟。我已经看到了一些有希望的结果:

如何启动这个项目

以上就是这个项目的要点——我希望用GAN让老照片看起来更好,更重要的是,让项目有用。

这个项目是用Fast.AI library建的。不幸的是,用的是旧版本,我还没有升级到新版本。 因此,先决条件是:

旧版本的Fast.AI library:https://github.com/jantic/fastai

Fast.AI已有的dependencies:已有方便的requirements.txt和environment.yml

Pytorch 0.4.1(需要spectral_norm,因此需要最新的稳定版本)。

Jupyter Lab

Tensorboard(即安装Tensorflow)和TensorboardX(https://github.com/lanpa/tensorboardX)。 需要注意的是,默认情况下, progress images将每200次迭代写入Tensorboard,因此可以持续方便地查看模型正在执行的操作。

BEEFY显卡。我的是GeForce 1080TI(11GB),真希望有比11 GB更大的内存。Unet和Critic都非常大,但越大效果越好。

对于想要立即开始转换自己的图像的人:......好吧,你需要等我先上传预先训练好的权重。 一旦可用,就可以在可视化笔记本中引用它们。我将使用ColorizationVisualization.ipynb。你只需要用我上传的生成器(colorizer)的权重文件替换colorizer_path = IMAGENET.parent /('bwc_rc_gen_192.h5')

假设你在内存足够大的GPU(例如11 GB GeForce 1080Ti)上运行这个程序,我将保持大小约为500px。如果内存小于11GB,你可以将图像缩小,或尝试在CPU上运行。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 图像
    +关注

    关注

    2

    文章

    1063

    浏览量

    40040
  • 计算机视觉
    +关注

    关注

    8

    文章

    1599

    浏览量

    45613

原文标题:旧照片着色修复神器!自注意力GAN效果惊艳

文章出处:【微信号:AI_era,微信公众号:新智元】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    基于GAC模型实现交互式图像分割的改进算法

    些,也就是说,不要集中在局部取点,所选点之间应该有定的几何距离。这可以通过简单的删选程序实现。3.3 对
    发表于 09-19 09:19

    LabVIEW状态机模型可以带有多个循环吗?

    请问下,LabVIEW状态机模型可以带有多个循环吗?般的状态机例子都是
    发表于 12-09 23:04

    labview can卡模型次只能发送帧ID,请问怎样修改使它次发送多个不同ID?

    附件是我的模型模型单次发送没有问题,就是不知道怎么修改让他可以发送多个帧ID,
    发表于 07-17 15:45

    请问在图像中画ROI如何实现复制矩阵ROI?

    `在图像上画ROI,怎么实现矩阵复制多个ROI,比如随机画
    发表于 04-22 21:02

    ucos ii多个任务等待信号量

    小弟新学ucos ii,今天遇到点问题,特来请教具体是这样的:1,对于ucos ii多个任务等待信号量,当信号量有效以后,最高优先级任务
    发表于 05-06 06:24

    labview can卡模型次只能发送帧ID,请问怎样修改使它次发送多个不同ID?

    labview can卡模型次只能发送帧ID,请问怎样修改使它次发送
    发表于 05-14 11:33

    使用全卷积网络模型实现图像分割

    OpenCv-C++-深度神经网络(DNN)模块-使用FCN模型实现图像分割
    发表于 05-28 07:33

    请问freertos任务能等待多个信号吗?

    freertos任务能等待多个信号吗,我的按键任务需要读取按键,又要驱动LED,读按键用的xSemaphoreTake( key, po
    发表于 07-31 00:53

    请问是否可以使用x-cube ai将多个模型放入MCU中呢?

    请问是否可以使用x-cube ai将多个模型放入MCU中。第一个
    发表于 01-05 06:33

    freertos怎么在任务修改任务的优先级?

    freertos怎么在任务修改任务的优先级
    发表于 10-11 07:56

    freertos中任务可以支持多个信号量吗?

    freertos中任务可以支持多个信号量吗
    发表于 11-07 06:58

    单片机可以同时处理多个任务

    单片机可以按分时、顺序、中断的方法处理多个任务
    的头像 发表于 04-06 15:43 4388次阅读

    图像分类任务的各种tricks

    计算机视觉主要问题有图像分类、目标检测和图像分割等。针对图像分类任务,提升准确率的方法路线有两条,一个是模型
    的头像 发表于 09-14 16:42 923次阅读

    如何在SpringBoot项目中实现动态定时任务

    之前写过文章记录怎么在SpringBoot项目中简单使用定时任务,不过由于要借助cron表达式且都提前定义好放在配置文件里,不能在项目运行中动态修改任务执行时间,实在不太灵活。
    的头像 发表于 09-30 11:16 1489次阅读

    如何动态修改cron参数呢?

    按正常来讲,修改定时任务的执行周期,把服务停下来,改下任务的cron参数,再重启服务就搞搞定了。这种方式很简单,没有可说的,但是有没有一种可能,在不停服务的情况下,就可以动态的修改任务
    的头像 发表于 04-12 11:04 1541次阅读