10

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

 3 years ago
source link: https://my.oschina.net/u/4526289/blog/5220029
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

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

黑白与色彩

似乎把时代分割了两半~

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

翻开一张黑白照片

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

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

v2-d0497fd60b3f08afad6ba1eb41cd153d_720w.jpg

v2-43e3a6eca3dee6708fbd31be56c3ef9e_720w.jpg

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

令人望而生畏

却又不住的悄然幻想

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

会是什么颜色呢?

v2-7f3a973c03ddd7f88b18ab8db6b18098_720w.jpg

就在此刻的定格

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

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

v2-75bff6cb673efb3ccbb2f8c6d6b12ae1_720w.jpg

黑白图像上色模型原理

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

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

v2-307d919e4b10f45d442e86f0e4e6ceed_720w.jpg

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

预处理过程: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处理器支持的离线模型,模型转换过程中可以实现算子调度的优化、权重数据重排、内存使用优化等,可以脱离设备完成模型的预处理。

v2-3b20ba6ba45191feb98a5c56341070d5_720w.jpg

使用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"

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

v2-fe04a3b7e9ebac0a3a51fd4df4c0a41f_720w.jpg

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

  • 运行管理资源申请

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

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

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

  • 数据预处理

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

  • 模型推理

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

  • 解析推理结果

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

预处理图像

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

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

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

v2-4f719f479097c09eac9e702f80a36a12_720w.jpg

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

  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图片,得到上色后的图像。

v2-98d851dad600242421230c3cd1646632_720w.jpg

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

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

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

v2-2b1ab791340fb47b9183683f67ca58df_720w.jpg

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

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

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

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

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

更多应用案例和源码:

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

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

黑白图像上色示例图

v2-b51904095ec22856b2e9441668db9630_720w.jpg

v2-966180e429acefd3b0dd05677635c540_720w.jpg

v2-e95d0226913fda46943f862c155c5972_720w.jpg

v2-e160790bfef34dc4d1dcf30886d5ea98_720w.jpg

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

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

v2-95834cd92cc0cd710d0188cd1d2855db_720w.jpg

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

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

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK