摘要:属于“你”那边的麦田 天空 河水 骏马 树木……会是什么颜色呢?

黑白与色彩

似乎把时代分割了两半~

我在这头看见了错乱繁华,琳琅满目,看见快速消长的色彩缤纷。

翻开一张黑白照片

我能看到世代流传的印记,一种历久弥新的美

我能看到但我却又看不到“你”能看到的景色

这看似不经意的一眼却在我心里犹如惊鸿一瞥

令人望而生畏

却又不住的悄然幻想

属于“你”那边的麦田 天空 河水 骏马 树木……

会是什么颜色呢?

就在此刻的定格

我愿把万千色彩赋予给“你”,

带你共同体验这万千繁华盛景~

黑白图像上色模型原理

本应用基于昇腾AI异构计算架构CANN,使用黑白图像上色模型搭建,适用于Atlas 200 DK及Atlas 300I等相关推理产品。

对物件(包括背景色)(L通道代表的灰度图)使用卷积运算提取特征,然后同样用卷积进行分类,从而尝试给出对灰度图片每个像素点的色彩预期(ab通道)。然后,将ab通道的值resize到原始图片宽高并与L通道叠加后,转为RGB图片即可得到彩色图像。其中模型的输入为L通道的数据(224,224,1),输出为ab通道的数据(56,56,2)。

我们也可以通过开源模型的测试脚本来理解原始模型的输入和输出,以及输入前的计算过程(也叫前处理)和输出后的处理过程(也叫后处理)。

预处理过程:RGB格式读入转Lab,resize到224224,提取L通道,减均值(-50)
后处理过程:推理的结果ab通道,resize到224224,与输入L合并为Lab,转RGB,保存为jpeg图片

模型原始链接:https://github.com/richzhang/colorization

准备模型

昇腾张量编译器ATC(Ascend Tensor Compiler)可以将开源框架的网络模型(如Caffe、TensorFlow等)以及Ascend IR定义的单算子描述文件换成昇腾AI处理器支持的离线模型,模型转换过程中可以实现算子调度的优化、权重数据重排、内存使用优化等,可以脱离设备完成模型的预处理。

使用ATC将黑白图像上色模型转换为昇腾AI处理器支持的离线模型命令如下:

atc --input_shape="data_l:1,1,224,224" --weight="./colorization.caffemodel" --input_format=NCHW --output="./colorization" --soc_version=Ascend310 --framework=0 --model="./colorization.prototxt"

应用开发

本应用采用了下图所示的模块化设计,通过各模块之间的协调配合完成一张图片的推理输出;对视频的推理也是一样的,可以直接参考开源仓中的源码实现。在这里就不再赘述了。

其中各个模块的主要功能点如下所示:

  • 运行管理资源申请

用于初始化系统内部资源,固定的调用流程。

  • 加载模型文件并构建输出内存

从文件加载离线模型数据,需要由用户自行管理模型运行的内存,根据内存中加载的模型获取模型的基本信息包含模型输入、输出数据的数据buffer大小;由模型的基本信息构建模型输出内存,为接下来的模型推理做好准备。

  • 数据预处理

接收外界传递的图像数据,对读入的图像数据进行预处理,然后构建模型的输入数据。

  • 模型推理

根据构建好的模型输入数据进行模型推理。

  • 解析推理结果

根据模型输出,解析模型的推理结果。使用opencv将转换后的彩色图像数据保存成图片文件。

预处理图像

图像预处理部分,使用opencv的imread接口读取图片,读取出来的是BGR格式。

模型输入为224×224,因此需要把读取到的图像resize到224×224。Resize后对数据做归一化处理。

如算法设计部分所言,该模型采用Lab色彩空间,因此需要把BGR格式转为Lab格式数据。该模型用L通道数据预测出可能的ab空间数据,所以要从Lab数据中分离出L通道数据。再对所得的数据减均值,即可得到模型需要的输入数据。

模型推理

模型推理部分,关键流程说明如下:

1. 调用aclmdlCreateDesc接口创建描述模型基本信息的数据类型;

modelDesc_ = aclmdlCreateDesc();

2. 调用aclmdlGetDesc接口根据模型加载中返回的模型ID获取模型基本信息。aclError ret = aclmdlGetDesc(modelDesc_, modelId_);

3. 准备模型推理的输入、输出数据;

4. 执行模型推理,调用aclmdlExecute接口;aclError ret = aclmdlExecute(modelId_, input_, output_);

5. 获取模型推理的结果,用于后续处理。

6. 释放内存。调用aclrtFree接口释放Device上的内存。释放相关数据类型的数据。在模型推理结束后,需及时调用aclDestroyDataBuffer接口和aclmdlDestroyDataset接口释放描述模型输入的数据,且先调用aclDestroyDataBuffer接口,再调用aclmdlDestroyDataset接口。如果存在多个输入、输出,需调用多次aclDestroyDataBuffer接口。

后处理部分

图像后处理部分,使用opencv。对于模型推理得到预测出的ab空间数据。

首先把得到的数据resize回原图像大小,然后和原图像L通道数据合并,即得到完整Lab图像。

把Lab图像转回BGR格式即可保存为jpeg图片,得到上色后的图像。

黑白图像上色是一种艺术,也是一门技术~

昇腾AI“黑白图像上色” 应用已经上线,只需一点,即可上色!

本案例地址:https://www.hiascend.com/zh/developer/mindx-sdk/cartoon/990674866img?fromPage=1

在这个时代,一种新的颜色,就可以代表一种新的情绪,一个新的视角。

单调的黑白色似乎已经不足以满足我们的需求~

让AI科技带你诠释不一样的美~

同时,点击在线实验,还可以体验该应用是如何用CANN开发出来的;

该应用的源码在gitee和github都有开源,点击上面的github、gitee直达源码仓,大家可以基于源码进行二次开发。

更多应用案例和源码:

应用案例地址https://www.hiascend.com/developer/case-studies

源码地址:https://gitee.com/ascend/samples/

黑白图像上色示例图

打开网站不仅可以体验一秒上色的快乐~~

还可以直接获取到公开的源码,边体验边学习,还能在自己的Ascend的设备上直接玩转!

对科技的坚持正在改变世界,而我们不能改变这个世界也要好好体验所有的美好~

这款网页应用既简单又有趣,非常适合给老照片、黑白照以及各种单色调照片上色!

点击关注,第一时间了解华为云新鲜技术~

宝藏昇腾AI应用推荐!CANN带你体验黑白图像自动上色的快乐~的更多相关文章

  1. 昇腾AI新技能,还能预防猪生病?

    摘要:日前,由华为与武汉伯生科技基于昇腾AI合作研发的"思符(SiFold)蛋白质结构预测平台"正式推出,并成功应用于国药集团动物保健股份有限公司的猪圆环病毒疫苗研发中. 本文分享 ...

  2. 一键抠除路人甲,昇腾CANN带你识破神秘的“AI消除术”

    摘要:都说人工智能改变了生活,你感觉到了么?AI的魔力就在你抠去路人甲的一瞬间来到了你身边.今天就跟大家聊聊--神秘的"AI消除术". 引语 旅途归来,重温美好却被秀丽河山前的路人 ...

  3. 【华为昇腾】 序言:从昇腾AI软硬件平台聊起

    2021年是很值得纪念的一年,从上半年开始跟随导师编写有关华为昇腾软件栈CANN的教材,一年的时间反复迭代 终于快要出版了. 这一系列博客可以视作我从编者的角度,重新梳理的全书思路.明年入职商汤之后要 ...

  4. 用昇腾AI护航“井下安全”

    摘要:基于CANN(异构计算架构)打造的"智能矿山安全生产管理平台",能够更便捷和更高效地服务于更多矿山安全生产建设. 本文分享自华为云社区<华为携手云话科技助力矿山智能化, ...

  5. 又一重要进展发布!OpenMMLab算法仓支持昇腾AI训练加速

    摘要:上海人工智能实验室的浦视开源算法体系(OpenMMLab)团队基于昇腾AI发布了MMDeploy 0.10.0版本,该版本已支持OpenMMLab算法仓库在昇腾异构计算架构CANN上的推理部署. ...

  6. 【读一本书】《昇腾AI处理器架构与编程》--神经网络基础知识(2)

    1 卷积神经网络:输入层 之前提到多层感知机的参数太多,导致训练耗时长并且对图像处理也不具有优势,因此大神们 就提出了多层神经网络,其中最经典的是卷积神经网络(Convolution Neural N ...

  7. 昇腾AI计算,618冲动消费也不怕

    摘要:近期大热的图像识别处理核赔技术,可应对剁手党们冲动购物之后汹涌而至的退货场景.那么,这背后运用的技术原理是怎样? AI计算平台又能否重构企业业务引擎呢? 随着AI技术的挖掘与应用落地,也为每一年 ...

  8. 昇腾AI 软硬件全栈平台

    昇腾AI 软硬件全栈平台

  9. 手把手带你体验鸿蒙 harmonyOS

    wNlRGd.png 前言 本文已经收录到我的 Github 个人博客,欢迎大佬们光临寒舍: 我的 GIthub 博客 学习导图 image.png 一.为什么要尝鲜 harmonyos? wNlfx ...

  10. 带左右箭头切换的自动滚动图片JS特效

    效果图 按钮 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www. ...

随机推荐

  1. 浅谈斜率优化DP

    前言 考试 T2 出题人放了个树上斜率优化 DP,直接被同校 OIER 吊起来锤. 离 NOIP 还有不到一周,赶紧学一点. 引入 斜率 斜率,数学.几何学名词,是表示一条直线(或曲线的切线)关于(横 ...

  2. null 不好,我真的推荐你使用 Optional

    "Null 很糟糕." - Doug Lea. Doug Lea 是一位美国的计算机科学家,他是 Java 平台的并发和集合框架的主要设计者之一.他在 2014 年的一篇文章中说过 ...

  3. 神经网络入门篇:神经网络的梯度下降(Gradient descent for neural networks)

    神经网络的梯度下降 在这篇博客中,讲的是实现反向传播或者说梯度下降算法的方程组 单隐层神经网络会有\(W^{[1]}\),\(b^{[1]}\),\(W^{[2]}\),\(b^{[2]}\)这些参数 ...

  4. 写代码不用"if"行不行,曾经的反 if 运动

    如果在IT行业的时间够长的话,可能还记得大约10几年前,设计模式风靡一时的时候,有过一段反 "if" 的运动. 所谓的反"if"运动,其实是夸大了"i ...

  5. 请查收,本周刷屏的两大热点「GitHub 热点速览」

    如果你逛 HackerNews 或者是推特,你一定会被 multipleWindow3dScene 这个跨窗口渲染项目的成果刷屏,毕竟国内的技术平台上也出现了不少的模仿项目.另外一个热点,便是你在白板 ...

  6. React 中事件处理

    不要问自己需要什么样的人生,而要问自己想要成为什么样的人. 我们从前面的学习知道一个 React 组件不仅仅只包含 DOM 结构的,还应该样式和 Javascript 逻辑的.这里我们认识逻辑构造之事 ...

  7. 🔥🔥Java开发者的Python快速进修指南:实战之跳表pro版本

    之前我们讲解了简易版的跳表,我希望你能亲自动手实现一个更完善的跳表,同时也可以尝试实现其他数据结构,例如动态数组或哈希表等.通过实践,我们能够发现自己在哪些方面还有所欠缺.这些方法只有在熟练掌握之后才 ...

  8. 洛谷5789 [TJOI2017]可乐(矩阵快速幂,Floyd思想)

    题意:可乐机器人有三种行为: 停在原地,去下一个相邻的城市,自爆.它每一秒都会随机触发一种行为.现在给加里敦星球城市图,在第 0秒时可乐机器人在 1号城市,问经过了 t秒,可乐机器人的行为方案数是多少 ...

  9. 一次elasticsearch 查询瞬间超时案例分析

    大家好,我是蓝胖子,有段时间没有做性能分析案例讲解了,正好前两天碰到一个性能问题,今天就来对它探讨探讨. 问题背景 在晚上9点左右,刚从外面逛街回到家,就接到了电话报警(幸好前不久刚好把电话报警机制加 ...

  10. MyBatis-Plus雪花算法实现源码解析

    1. 雪花算法(Snowflake Algorithm) 雪花算法(Snowflake Algorithm)是一种用于生成唯一标识符(ID)的分布式算法.最初由 Twitter 公司开发,用于生成其内 ...