Github | 线稿自动上色

点击上方“算法猿的成长“,关注公众号,选择加“星标“或“置顶”

总第 140 篇文章,本文大约 1500 字,阅读大约需要 5 分钟

今天要介绍的是一个 Github 项目,项目地址如下,它实现了对线稿的自动上色功能,效果还是很不错的,一起来看看吧。

https://github.com/SerialLain3170/Colorization

简介

本项目主要实现了自动将线稿转成彩色图片的功能。当然,我们可以只训练处理线稿的神经网络,但实际应用中我们需要提前用指定颜色给线稿上色的功能。实现上色的方法有很多,包括给定提示(hint)。

  • 不带提示

    • 没有提示的上色方法

    • 输入:仅线稿

  • Atari

    • 带有提示的上色方法,提示一般是在特定区域所需颜色的线条(比如 PaintsChainer)

    • 输入:线稿和 atari

  • 标签

    • 提示是标签的上色方法

    • 输入:线稿和标签

  • 参照物

    • 采用参照图片作为提示的上色方法(比如 style2paints V1)

    • 输入:线稿和参考图片


线提取方法

在线提取方法有很多改进版方法,比如 **XDoG **或者 SketchKeras。但是如果仅仅在一种类型的线稿上训练模型,模型会对这种类型的线稿过拟合,从而无法对其他类型的线稿实现自动上色功能。因此,和 Tag2Pix 一样,这里使用多种不同的线稿作为训练数据进行网络的训练。

使用的是下面三种类型的线:

  • XDoG:使用两个高斯分布的差异到标准差进行线提取;

  • SketchKeras:采用 UNet 进行线提取。通过这种方法提取得到的线会类似铅笔素描;

  • Sketch简化版:通过全卷积网络继续线提取。这种方法得到的类似数字素描。

下面展示了上述三种方法的提取结果:

此外,我还考虑三种对于线稿的数据增强方法,防止出现过拟合。

  • 增加强度;

  • 随机形态学变换处理不同宽度的线条;

  • 随机选择 RGB 数值来处理不同深度的线条;


不带提示的实验

动机

首先,我需要确认基于神经网络的方法可以在没有提示的情况下精确且多样化的进行上色。困难点主要是从线条到彩色图像的映射,因为颜色存在变化。因此,没有提示的情况下,我认为神经网络最终只学会在任意一个区域都只会上单一的一种颜色。为了避免陷入局部最小值,除了内容损失,我还加入了对抗损失,因为对抗学习训练神经网络进行上色可以更精确匹配数据的分布。

方法

  • pix2pix

  • pix2pix-gp(pix2pix 加上中心对称的梯度惩罚)

  • pix2pixHD

结果

  • pix2pix

  • pix2pix-gp

  • pix2pixHD


采用 atari 的实验

动机

观察上述结果发现,即便加入了对抗损失,神经网络似乎还是陷入了局部最小值。虽然存在不同程度的颜色变化,但是神经网络还是只学会了在任意区域对单一字符上单一的颜色。没有提示的情况下很难训练将线条映射到彩色图片,因此,我决定加入提示,即 atari,一起作为网络的输入(ps. 如下图所示,就是在原来线稿基础上,对特定区域加上指定颜色的线条,提示网络这部分区域需要上的颜色)。

方法

加入了提示

结果


采用参考图片的实验

动机

我还考虑过用参考图片作为提示输入神经网络中。首先,我尝试实现了 style2paints V1. 但由于训练会出现崩塌的情况,我很难复现原始的实验结果。因此,我决定要寻找一个  style2paints V1 的替代方法。

方法

  • style2paints

结果


视频上色实验

结果



最后再次给出项目的地址:

https://github.com/SerialLain3170/Colorization

或者点击文章底部的“阅读原文”直接跳转到 github 


精选AI文章

1.  2020年计算机视觉学习指南

2. 是选择Keras还是PyTorch开始你的深度学习之旅呢?

3. 编写高效的PyTorch代码技巧(上)

4. 编写高效的PyTorch代码技巧(下)

5. 深度学习算法简要综述(上)

6. 深度学习算法简要综述(下)

7. 10个实用的机器学习建议

8. 实战|手把手教你训练一个基于Keras的多标签图像分类器

精选python文章

1.  python数据模型

2. python版代码整洁之道

3. 快速入门 Jupyter notebook

4. Jupyter 进阶教程

5. 10个高效的pandas技巧

精选教程资源文章

1. [资源分享] TensorFlow 官方中文版教程来了

2. [资源]推荐一些Python书籍和教程,入门和进阶的都有!

3. [Github项目推荐] 推荐三个助你更好利用Github的工具

4. Github上的各大高校资料以及国外公开课视频

5. GitHub上有哪些比较好的计算机视觉/机器视觉的项目?

欢迎关注我的微信公众号--算法猿的成长,或者扫描下方的二维码,大家一起交流,学习和进步!

 

如果觉得不错,在看、转发就是对小编的一个支持!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/408353.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

react学习(46)----react渲染组件

const element <div />; 不过&#xff0c;React 元素也可以是用户自定义的组件&#xff1a; const element <Welcome name"Sara" />; 当 React 元素为用户自定义组件时&#xff0c;它会将 JSX 所接收的属性&#xff08;attributes&#xff09;以及子…

Microsoft好员工的十个标准

1、对自己所在公司或部门的产品具有起码的好奇心是极为重要的一点。你必须亲自使用该产品。对于身处计算机行业的人来说,这一点怎么强调都不为过。当然&#xff0c;这一点同样适用于其他知识密集型领域&#xff0c;因为在这些领域内技术与应用发展更新极快&#xff0c;对其技术…

如何在图片上添加文本信息

点击上方“算法猿的成长“&#xff0c;关注公众号&#xff0c;选择加“星标“或“置顶”总第 141 篇文章&#xff0c;本文大约 1500 字&#xff0c;阅读大约需要 5 分钟前言给图片添加文本信息是非常常见的需求&#xff0c;通常需要添加的文本信息分为中文文字或者是非中文的文…

react学习(47)----react中initialValue和value不能一起定义

<Row gutter{12}><Col span{12}><Form.Item label"活动开始时间">{getFieldDecorator(startTimeLong, {initialValue: popupByIdDetail.startTimeLong,rules: [{ required: true, message: 活动开始时间不能为空 }],})(<DatePickervalue{popupB…

Github|基于 Jittor 的 GAN 模型库

点击上方“算法猿的成长“&#xff0c;关注公众号&#xff0c;选择加“星标“或“置顶”总第 142 篇文章&#xff0c;本文大约 1300 字&#xff0c;阅读大约需要 5 分钟前言今天介绍一个 Github 项目---集成了 27 种 GAN 模型的 Jittor-GAN&#xff0c;项目地址&#xff1a;htt…

mongoDB分页的两种方法

mongoDB的分页查询是通过limit(),skip(),sort()这三个函数组合进行分页查询的 下面这个是我的测试数据 db.test.find().sort({"age":1}); 第一种方法 查询第一页的数据&#xff1a;db.test.find().sort({"age":1}).limit(2); 查询第二页的数据&#xff1a;…

react学习(48)--编辑回显用moment处理

<Row gutter{12}><Col span{12}><Form.Item label"活动结束时间">{getFieldDecorator(endTimeLong, {initialValue: [moment(popupByIdDetail.endTimeLong)],rules: [{ required: true, message: 活动结束时间不能为空 }],})(<DatePicker forma…

SPS用户管理的问题

当你在SPS中添加Active Diretory中的一个用户并给他授权后, 在Active Diretory中将该用户改名, 然后, 在SPS中就无法对刚才添加的用户进行操作, 删除、修改权限时&#xff0c;出现错误提示“Could not find user with corresponding SID in the domain. Check the spelling of…

22 款设计和可视化神经网络的工具

点击上方“算法猿的成长“&#xff0c;关注公众号&#xff0c;选择加“星标“或“置顶”总第 143 篇文章&#xff0c;本文大约 3000 字&#xff0c;阅读大约需要 10 分钟前言深度学习领域&#xff0c;最常见的就是各种网络模型&#xff0c;那么在写论文或者文章&#xff0c;介绍…

vim tutor summary

在终端输入vim tutor是最好的。。以下是我学习里边的课程的小总结&#xff1a; 经典的不多说&#xff1a; q! 退出      wq 退出并保存 <Esc> i A 编辑模式等的转换 (非编辑模式。编辑模式的话不就输入字符了~~囧~~&#xff09; 移动光标(move) 上下左右&#…

react学习(49)--参数判定

<div style{{ textAlign: center }}><Button type"primary" onClick{this.handleSubmit(false)} style{{ marginRight: 10px }}>保存</Button><Button oncllck{this.handleCancel} style{{ marginRight: 10px }}>取消</Button><But…

最近关注的一些东西

我现任职质量经理&#xff0c;负责一些质量和测试工作。下面是我关心的一些内容&#xff1a;工作相关软件质量 开发过程(RUP,XP)软件测试配置管理需求管理报表开发 个人兴趣SpringFramework设计模式PHPAsp.netwiki学习方法软件设计行进中的互联网赚钱的机会 2005.2.28

计算机视觉研究生文献和复现哪个更重要?

点击上方“算法猿的成长“&#xff0c;关注公众号&#xff0c;选择加“星标“或“置顶”总第 144 篇文章&#xff0c;本文大约 6000 字&#xff0c;阅读大约需要 15 分钟前言这是来自知乎上的一个问题&#xff0c;但我觉得应该是对很多初入深度学习领域&#xff0c;不只是计算机…

Flex4 初始化过慢解决方法

昨天找了个免费.net空间&#xff0c;想测试一下做的一个简单Flex4 上传项目的效果。上传所有文件到网站之后&#xff0c;访问项目页面&#xff0c;进度条一点一点艰难的向前移动&#xff0c;到了100%后却不出现程序界面&#xff0c;等待一会儿还是没有出现&#xff0c;于是我去…

吉他谱——单身情歌

Am Am F C F 抓不住 爱情的 我&#xff0c; 总是 眼睁睁 看它溜 走&#xff0c; 世界上 幸福的 为了爱 孤军奋 斗&#xff0c; 早就 吃够了 爱情的 苦&#xff0c; 在爱中 失落的 Em F G Am F Em Am 人到处 有&#xff0c;为 何不能 算我一 个。&#x…

react学习(50)--解决异步执行顺序问题

this.props.dispatch({type: activity/addActivityPopup,payload: params,callback: (res) > {if (res.returnCode 0) {message.success(新增成功);if (flag true) {this.props.dispatch({type: activity/publishActivityPopup,payload: { codeList: [res.data] },callbac…

SRZoo--深度学习图像超分辨率工具

点击上方“算法猿的成长“&#xff0c;关注公众号&#xff0c;选择加“星标“或“置顶”总第 145 篇文章&#xff0c;本文大约 2100 字&#xff0c;阅读大约需要 7 分钟前言今天要介绍的是 Github 上一个基于深度学习的超分辨率工具--SRZoo&#xff0c;并且它还提供了多个预训练…

Scapy:局域网MAC地址扫描脚本

转载自&#xff1a;http://blog.sina.com.cn/s/blog_4b5039210100gn6k.html 未测试&#xff0c;回头研究研究。 用pythonscapy写的&#xff0c;只要双击.py文件即可&#xff0c;扫描当地局域网的主机MAC地址&#xff0c;并把结果写入文档保存。 代码如下&#xff1a;用到注册表…