简介

这是利用CNN分类模型结构进行图片自动着色的一个深度学习项目。本项目的实现参照Richard Zhang等人的论文Colorful Image Colorization实现。本项目代码包括模型均已开源于Github,部署教程见文末Github地址。

项目流程

整体思路

对一个Gray的图片建立到RGB的映射模型是一个比较复杂的回归问题,且效果难以把控。所以这里提出使用Lab颜色空间作为整个模型的映射机制,由于Lab将色彩信息放置在ab两个通道的特性,而L通道仅保存亮度等信息,这些信息可以从Gray图直接得到。

这就是说模型的输入是Lab中L通道的矩阵,目标是一个ab两通道的二层矩阵,建立的是从L向ab的映射关系。

当得到ab通道的信息再组合上L通道信息即得到彩色的Lab图片,而Lab图片到RGB图片的转换是固定的,也就是说,得到了期待的彩色RGB图片。

前期优化

那么,对训练过程中的一张图片,得到它的L信息很容易,得到ab信息也很容易,但是Lab色彩空间有个很大的问题就是其中包含了很多人类不可见的色彩,这些色彩是干扰模型预测的要素。在此,提出来一种新的思路,选取数据集中常见的色彩,组成ab值对,作为ab通道的信息。

实验证明,这种思路很成功,最后一共得到了313个常用值对信息。这就是说,预测的目标变为了一个值对或者313个值对的概率分布,原来复杂的回归变成了一个简单不少的分类问题

当然,这里有一个问题,那就是训练时对于每个RGB图片(转为Lab图片),如何得到其目标的ab值对?这里使用了5近邻搜索法得到像素点的ab值对。

模型设计

既然是图片分类问题,如何保证分类的准确率呢?事实证明,VGGNet在图片分类上有着不错的效果,再加以近几年常用的BN层保证模型的训练强度,同时利用扩张卷积在两个block获得更大的感受野,就形成了下图的模型。

后续处理

得到了313个ab值对的颜色概率,如何将其映射回ab通道的色彩呢,在尝试了平均法和分立法之后(前者上色过于融合后者过于分界),使用兼有两种要求的模拟退火搜索法得到ab两个通道的矩阵。

损失函数

事实上,优化函数的研究这些年已经有了很大的发展,Adam已经可以满足本项目的需求了,但是在尝试使用分类经典的交叉熵函数时发现训练的模型上色均比较暗淡,这是因为imagenet数据集的图片普遍比较背景暗淡,为了产生比较鲜艳的色彩,提出了加上颜色再平衡系数的交叉熵函数,训练的模型效果得以改善。

模型构建

本项目模型构建基于Keras Function API(TensorFlow后端),训练与Tesla T4 16G GPU。模型提供于Github,可以使用Netron可视化h5模型。修改的交叉熵函数可见于脚本目录下的loss_function.py文件。

上色效果

这里提及一下,这里上色的目的从来不是多么接近原来的彩色图片(事实上需要应用模型的地方也不可能有对照的彩色图片,不然就没有上色的必要了),而是上色的结果能够让人眼看上去不觉得有什么异常即可。

上述所说的特点在图1体现明显。

补充说明

本项目代码和模型开源于我的Github,欢迎star或者fork。其中先验参数参考foamliu的项目。实现过程对论文模型最后两个block进行了稍加修改。博客同步至个人博客网站,欢迎查看。

深度学习项目-图片自动着色相关推荐

  1. 【githubdailyshare】微软最近在 GitHub 上开源了一个 AI 音乐项目,基于深度学习,可自动完成音乐创作

    微软最近在 GitHub 上开源了一个 AI 音乐项目:Muzic,基于深度学习,可自动完成音乐创作. 创作过程主要分为两步,一是音乐理解(符号分类.声音识别),二是音乐合成(歌曲歌词创作.音乐旋律生 ...

  2. 手把手教你从零到一搭建深度学习项目(附PDF下载)

    来源:机器之心 作者:Jonathan Hui 本文约14000字,建议阅读10+分钟. 本文将会从第一步开始,告诉你如何解决深度学习项目开发中会遇到的各类问题. 在学习了有关深度学习的理论之后,很多 ...

  3. 手把手教你从零搭建深度学习项目(附链接)

    简介: 在学习了有关深度学习的理论之后,很多人都会有兴趣尝试构建一个属于自己的项目.本文将会从第一步开始,告诉你如何解决项目开发中会遇到的各类问题. 本文由六大部分组成,涵盖深度学习 ( DL ) 项 ...

  4. 经验之谈 | 如何从零开始构建深度学习项目?

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 在学习了有关深度学习的理论课程之后,很多人都会有兴趣尝试构建一个属 ...

  5. 如何从零开始构建深度学习项目?这里有一份详细的教程

    点击上方"迈微AI研习社",选择"星标★"公众号 重磅干货,第一时间送达 来源丨机器之心 在学习了有关深度学习的理论课程之后,很多人都会有兴趣尝试构建一个属于自 ...

  6. 手把手教你从零搭建深度学习项目(可下载PDF版)

    源 | 机器之心   作者 | Jonathan Hui 点我调转公号推荐 下载方式:后台回复 20180531 在学习了有关深度学习的理论之后,很多人都会有兴趣尝试构建一个属于自己的项目.本文将会从 ...

  7. GitHub 上 57 款最流行的开源深度学习项目【转】

    GitHub 上 57 款最流行的开源深度学习项目[转] 2017-02-19 20:09 334人阅读 评论(0) 收藏 举报 分类: deeplearning(28) from: https:// ...

  8. 【深度学习】Github 最受欢迎的深度学习项目 TOP 20

    必须做好一些是LINUX平台,甚至没有教材根本需要摸索学习的准备,如果有那个变成为在线服务的请第一时间通知我们 截止到 2017年 5月14日,Github 最受欢迎的深度学习项目 TOP 20 是哪 ...

  9. 盘点 | Github上的18个顶级深度学习项目

    选自Github 机器之心编译 hunkim 盘点了 Github 上 18 个深度学习项目,根据收藏数自动排名.最新的一次 update 在几小时前完成. 项目地址:https://github.c ...

  10. 1.搭建深度学习项目树莓派的硬件设备选择

    搭建深度学习项目树莓派的硬件设备选择 文章目录 搭建深度学习项目树莓派的硬件设备选择 1.型号选择 1.1 官网产品 1.2 型号介绍 1.2.1 树莓派 400 1.2.2 树莓派 数字系列 1.2 ...

最新文章

  1. .net 返回datatable显示sql列名_3汇总分析-SQL
  2. python 文件操作 open()与with open() as的区别(打开文件)
  3. java真的是值传递么?
  4. 不能导入android项目备注
  5. oracle 三列数值相加,Oracle SQL/PLSQL:按货币拆分和求和值的分层查询
  6. linux 更改 引导分区,Linux系统引导过程及引导修复
  7. Android 系统(35)---Android 进程间通信的几种实现方式
  8. 特斯拉副总裁回应“质量不合格”报道:离谱 已准备起诉
  9. Nginx在嵌入式系统中的应用
  10. Session共享的解决方案。
  11. 用QT制作一个抽奖器的总结
  12. android 蓝牙读取数据格式,解析Android蓝牙数据包
  13. 正确的座机号码格式_电话号码格式怎么输入才是正确
  14. 30天扣篮训练计划_高强度减脂训练计划,每天练30分钟,坚持一个月,减掉多余的脂肪...
  15. 网络术语---数字签名的简单认识
  16. [转载]MIT人工智能实验室:如何做研究
  17. 写作套路:如何写论文摘要
  18. ICSE (2022). Nessie的阅读记录
  19. Android-Activity生命周期、广播接收者、服务
  20. Redis:redis通用命令;redis常见数据结构;redis客户端;redis的序列化

热门文章

  1. Mac系统如何关闭指定端口号
  2. jira后台统计数据的一些sql(包含reopen计算,时效)
  3. 用C++实现生产者-消费者问题模型
  4. linux桌面图标恢复,修复桌面白图标的教程
  5. html table td 居中显示,table td怎么垂直居中显示 详解table中如何隐藏td?
  6. 快速查询中通速递物流,查看未签收单号的最后站点
  7. Python GUI工具——取色器
  8. 无密码解锁iPhone
  9. 95后,我们一起看过的剧
  10. word2016页码都是一样的这样解决,详细全过程