摘要:借助人工智能技术,可以一定程度上帮助老照片还原原来色彩。还记得之前火热的“老北京视频上色”吗?就是采用类似的技术。

本文分享自华为云社区《基于MindX SDK在Ascend 310上的黑白图像上色初体验随笔》,作者:Tianyi_Li 。

前言

在智能手机越来越普及的今天,拍摄一张色彩鲜艳、清晰的照片轻而易举。但是老照片没有如此“幸运”,大多为黑白。借助人工智能技术,可以一定程度上帮助老照片还原原来色彩。还记得之前火热的“老北京视频上色”吗?就是采用类似的技术啊。

这次介绍的是黑白图像上色应用,旨在华为自研的Ascend 310推理芯片上实现输入黑白图像,自动对黑白图像进行上色,还原彩色图像。

该应用案例整体流程如下图所示:

简单来说分为以下部分:

  1. 图像前处理:将输入的黑白图像通过opencv转换为Lab图,并抽取其中的L通道进行前处理;
  2. Colorization模型推理:将处理后的L通道传入模型进行推理,获得预测结果的a,b通道;
  3. 模型后处理:拼接原始L通道和预测得的a,b通道获得新的Lab图。

环境

AI加速型 | ai1s.large.4 | 2vCPUs | 8GiB
MindStudio5.0.RC1_CANN5.1.RC1
Ubuntu 18.04 server 64bit

操作流程

假设我们已经收到代金券,并通过官方共享的镜像购买了ECS。

1. 登录环境

我使用的是MobaXterm,登陆界面如图所示:

2. 获取代码

2.1 切换到普通用户

默认登录是root用户,权限太大了,开发不太安全,我们先切换到普通用户,命令如下:

su - HwHiAiUser

切换成功后,终端的提示符会变成$,我的当前目录如下图所示:

2.2 获取代码

我使用的是官方案例,执行如下命令下载:

git clone https://gitee.com/ascend/mindxsdk-referenceapps.git

运行成功截图如下:

注意,这里是下载的完整仓库,下面选择具体案例,我先选择Colorization来试试吧,先将这里案例拷贝出来一份到我的工作目录,我们下载的就当备份,开发切记要常备份,有备无患。详细信息截图如下。

2.3 运行

2.3.1 模型转换

本工程原模型是caffee模型,需要使用atc工具转换为om模型,模型和所需权重文件已上传,请使用以下命令下载并解压:

mkdir model
cd model
wget https://mindx.sdk.obs.myhuaweicloud.com/mindxsdk-referenceapps%20/contrib/Colorization/model.zip --no-check-certificate
unzip model.zip

下载完成并成功解压的截图:

下载并解压完毕后,进入scripts目录执行模型转换脚本

cd ../scripts
bash atc_run.sh

运行报错了,如下所示:

回头看看该案例之前的环境要求,如下所示,考虑到该案例最早的更新也是6个月前了,推测是CANN版本不匹配或其他软件驱动问题或者是我们目前登录的用户与安装的用户不一致,也就是说我们登陆的用户没有安装CANN和配套软件,这里就不深究了。直接来实际操作验证一下。

下面我们切换到root用户下试试,执行如下命令:

su root
bash atc_run.sh

模型转换成功了,如下图所示,看来是使用的用户不对,还得使用root用户。

2.3.2 获取测试图片

将待上色图片移动至data目录。本样例使用图片方式获取如下

cd ../
mkdir data
cd data
wget https://c7xcode.obs.cn-north-4.myhuaweicloud.com/models/colorization_picture-python/dog.png --no-check-certificate

上述命令运行成功的截图如下:

2.3.3 运行推理工程

进入scripts目录,修改run.sh文件中INPUT_PIC变量为输入图片的路径,本示例为"…/data/dog.png",这个可以保持默认,暂时不做修改。

此外,还要修改MX_SDK_HOME环境变量为SDK实际安装路径。如果你不知道或不确定的话,我们下来查看一下,执行如下命令,即可查看当前的环境变量:

export

执行后得到的结果截图如下,我们可以找到MX_SDK_HOME了,那么直接用来修改run.sh就好了。

修改后的run.sh截图:

修改完成后,按照如下命令执行脚本:

cd ..  # 回到Colorization目录下
mkdir out
cd ../scripts
bash run.sh

这时,可能会报错,如下图所示,这是没安装OpenCV,其实前面的环境约束已经说了要安装OpenCV依赖的,我们来安装一下,执行如下命令:

pip3 install opencv-python --user  -i https://pypi.tuna.tsinghua.edu.cn/simple

之后再执行脚本,启动程序,就能运行成功了,部分运行截图如下所示:

输出结果保存在out目录下,下载至本地查看图片上色是否合理,下面给大家展示一下前后效果:

总的来说,除了狗的左侧耳朵的颜色有点问题外,效果还是很不错的,颜色比较自然,符合人类认知,感觉和拍摄得到的自然图片没什么区别哈。

好了,到此这个案例基本就体验完成了,还是很不错的。感兴趣的同学,可以将图片换成自己想要的图片来试试上色效果哦,注意修改图片名称和可能要修改的尺寸参数哦。

2.4 基于MindStudio的运行

2.4.1 启动MindStudio

官方提供的镜像中有MindStudio的安装包,但是ECS默认是root用户登录,而在root用户下启动失败,应该是要HwHiAiUser才可以,但是HwHiAiUser用户在/root目录下无权限,无法启动存放在此的MindStudio,有点尴尬。

所以,我要将MindStudio拷贝到HwHiAiUser的目录下,授予权限来使用,具体命令如下,注意以下命令是在root用户下操作:

cp /root/MindStudio_5.0.RC1_linux.tar.gz /home/HwHiAiUser/
cd /home/HwHiAiUser/
chown HwHiAiUser:HwHiAiUser MindStudio_5.0.RC1_linux.tar.gz

切换到HwHiAiUser用户,再来执行:

tar -zxvf MindStudio_5.0.RC1_linux.tar.gz

解压完成的截图如下所示:

下面来启动MindStudio了,执行如下命令:

cd MindStudio/bin
./MindStudio.sh

初次启动可能有点慢,这也与当时网络状况有关,稍作等待即可,启动成功截图如下:

还记得我们之前成功运行的黑白图像上色的工程吗?现在来打开看看。

注意,MindStudio的图形界面和我们的操作都是通过ssh来连接和传输的,因此网络质量还是有较大影响的,如果网络状况好那就事半功倍了。

在开发或运行前,先来熟悉下操作,那就先看看输入图像,双击打开,如下图所示:

很不错,和我们平时在PyCharm或IDEA上看的界面基本一致,如上图右上角所示,还显示了该图像的具体大小,尺寸和格式等,很详细。

2.4.2 配置环境变量

如果使用的是官方提供的镜像,则可按照下图说明配置:

配置好后会提示自动重启MindStudio,在整个MindStudio运行期间,CPU利用率在50%-70%波动,有时达到100%,可见还是很耗CPU资源的,也可能是我的ECS的双核有点拉跨了。不过我觉得ssh远程连接还要用图形界面来开发,这有点相悖,图形界面本身就消耗较大资源,这就失去了ssh远程连接小巧轻便的优势。

之后按照下图转为基于mxVision的Ascend APP即可:

建议

1.关于色域转换的问题

我观察到目前一些应用案例涉及的色域转换,比如将 YUV 格式图像转换为 RGB(具体链接链接见下方),调用的是OpenCV,我的理解是这使用 CPU(ARM或x86)通过软件的方式来实现,但根据我之前的经验,即使用C++也是比较慢的,特别是在处理的图像尺寸较大(1080P,甚至4K,现在人们对分辨率的要求越来越高)的时候,可能很难满足实时(指30FPS)的要求(因时间关系,并未对这里提到的应用案例做测试,抱歉)。如果是这样,那么应用性就不是很大了,可能更多是趣味性,但这可能不符合Ascend 310和配套软件的定位了。

应用案例链接:https://www.hiascend.com/zh/developer/mindx-sdk/case-studies/60172271

2. 关于后处理的问题

这里问题之前在论坛看到有人提过,这里简单说一下:在目标检测或目标跟踪的后处理阶段,我们可能需要根据解析得到的坐标框在输入图像上绘制出来以达到较好的可视化效果,目前看到的更多是调用OpenCV的API来实现,但这是纯软件的实现,消耗的是CPU资源,如果目标框很多的情况下,耗时很大,以致于成为整个流程中的性能瓶颈,暂时未看到昇腾给出的相关硬件方案,期待能够加速的解决方法。

3. 对网络质量要求高

我在仅仅ssh连接操作时,还是很流畅的,也能够满足开发和调试需要。但是使用MindStudio后,在MindStudio中操作延迟很高,每次操作都要等一会才行,可能是我本地网络不太好或者ECS的CPU负载太高,但是用户网络不好或ECS规格较低这都是可能的情况,从这个角度来说,还不如不用MindStudio的图形界面,直接在终端开发,可能更熟悉,更方便。

感觉MindStudio还是适合在本地配置较高的电脑端使用,在ECS上远程连接使用还是不太行。

我这里使用实在是太卡了,就先这样吧。

4. 配置复杂

安装了MindStudio后,还需要进行繁琐的配置,配置CANN、mindx_sdk等等,而且这些需要用户自行去做,MindStudio自身不会有任何提示和帮助,这和我用其他IDE,比如IDEA之类的不同,IDEA会根据当前电脑的情况,提供选择给用户,仿佛是扫描了一遍电脑,找到了用户安装的JDK之类的,并根据版本的不同,呈现给用户以供选择。而MindStudio却没有类似的帮助和支持。

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

带你体验给黑白照片上色相关推荐

  1. 还在纠结手机怎么给黑白照片上色?这几个实用的技巧你不能不知道

    我们都知道有很多经典的老照片,受限于那个时代的技术,只能黑白相传.虽然黑白照片别有一番风味,但彩色照片有时能给人更好的代入体验.那你们知道黑白照片上色软件有哪些吗?想知道的朋友,快来看看以下这篇文章吧 ...

  2. 一键照片转换动漫卡通风,一键给黑白照片上色

    曾经,为了给女神把照片转成手绘卡通画,安装了PS,买了数位板,奈何绘画功底太差,PS水平太菜,最终--唉--. 后来我勤奋努力,终于完成了这个任务 上图就是我的效果图,而且根据当前的具体环境,还体贴的 ...

  3. 怎样给黑白照片上色?这篇文章来教你

    随着现代科技的不断发展,各种拍照科技也是越来越多.生活在21世纪的我们,随时随地都可以记录自己的美好生活,但是在我们的父辈时代,他们的青年时期,由于摄像技术还不是很发达,尤其是爷爷奶奶的那一代人,他们 ...

  4. AI黑白照片上色系列-藏在英国伦敦图书馆黑白上色,从未发表的100多年前的中国影像

    藏在英国伦敦图书馆,从未发表的100多年前的中国影像-AI黑白照片上色重现历史时刻 约翰•汤姆逊(1837-1921),英国人,十九世纪后期,用照相机记录中国社会的外国摄影师之一.约翰•汤姆逊来到中国 ...

  5. 如何在Mac上使用Movavi Picverse给黑白照片上色?

    如今,几乎每个人都有手机摄像头,可以拍出很棒的彩色照片.尽管如此,很多人也有旧的黑白照片,如婚礼照片.家庭照片.借助现代技术,您可以轻松地为这些照片添加色彩,并对过去有更深入的了解.使用 Movavi ...

  6. ​黑白照片怎么还原彩色?教你给黑白照片上色的方法

    怎么把黑白色的照片还原成彩色呢?老照片是我们珍贵的回忆,但由于年代久远,往往会出现褪色.模糊等问题,影响了我们的欣赏体验.如果能够将黑白照片变成彩色的,那么就可以让我们更加真实地感受过去的时光.很多小 ...

  7. 免费直播:1小时带你体验Python车牌识别实战

    Python基础学会了,实战又是爬虫?太枯燥? 别无聊,CSDN学院邀请章秀淞老师开设技术直播课:1小时带你体验车牌识别实战.让你从众多车中,能用Python技术找到夏树上的那辆叔叔的奔驰车牌(玩笑) ...

  8. 明晚8点公开课 | 用AI给旧时光上色!详解GAN在黑白照片上色中的应用

    在改革开放40周年之际,百度联合新华社推出了一个刷屏级的H5应用--用AI技术为黑白老照片上色,浓浓的怀旧风勾起了心底快被遗忘的时光. 想了解如何给老照片上色?本次公开课中,我们邀请到了百度高级研发工 ...

  9. Photoshop简单另类方法给黑白照片上色

    本文中我们介绍用Photoshop给黑白照片上色的一种方法,比较另类,但是步骤简单,效果又好. 1. Photoshop中载入需要上色的黑白图片. 2. 在黑白图层之上新建图层,在新建图层中按照你需要 ...

最新文章

  1. ImageNet图像数据集介绍
  2. Android 中查看内存的使用情况集经常使用adb命令
  3. 上海首次正式试用人脸识别系统抓医药代表:频繁出入的非就医可疑人员
  4. DCMTK:DcmDecimalString类的测试程序
  5. python 列表比较不同_python实现比较两段文本不同之处的方法
  6. 华为ipd产品开发流程_亲历华为IPD变革是怎样一种体验|附完整版培训教材
  7. P4756-Added Sequence【斜率优化】
  8. 探索未知种族之osg类生物---呼吸分解之更新循环一
  9. [VSCode] Ubuntu 自动添加了 vscode 源
  10. Java--基础命名空间
  11. 典型相关分析(cca)原理_微生物多样研究—关联分析及系统发生进化关系
  12. 文献速递 | 通过m6A RNA甲基化修饰调节癌症中的端粒稳态和基因组稳定性
  13. 签名档php,如何让签名档图片连接到自己空间
  14. 在uni-app中使用腾讯视频插件播放视频
  15. poi XWPFDocument文档转换成io流
  16. Python实现猜词游戏 Hangman Game(不带提示和带提示版本)
  17. SQLServer视图:视图简介
  18. Qt5:输入控件 QPushButton/ QToolButton/ QRadioButton/ QCheckBox/ QTextEdit/ QComboBox/ QSpinBox/ QLabel
  19. 中国科技大学网络视频课程软件设计模式(自主模式)
  20. 2018年陕西文科生可以报计算机专业am,2018年高考志愿:文科生,可以报考哪些专业!...

热门文章

  1. 软件工程 - 3、项目开发
  2. 精心筹备半年 :appium2.0+ 单点触控和多点触控新的解决方案
  3. 物联网感知-脉冲式电子围栏技术及解决方案
  4. java飞机场模拟程序_java 飞机大战 小游戏源码
  5. 使用Python对PDF文件进行词频统计分析并保存到CSV文件中
  6. DWR(2):DWR配置详情
  7. C++ 之 nlohmann::json 一个不错的json库
  8. linux 虚拟机 ping: www.baidu.com: 未知的名称或服务 报错处理
  9. 人工智能编程语言c,最适合人工智能开发的5种编程语言
  10. 关于高速中对一阶线性微分方程中的线性的理解,希望关注加点赞哦。