昇腾CANN-体验工程师手中的PS
注意,本文中所有出现的图片上携带的水印均为博主自己的账号!不是盗图哦!
背景引入,黑科技的出现
昇腾CANN是华为公司开发的的能最大化昇腾AI处理器的异构计算框架,借助CANN的能力可以屏蔽硬件的差异使工程师可以全身心投入模型以及应用的开发,大多数情况下不需特别优化,便可以达到最大化性能。
深度学习的出现,为计算机视觉领域带来了新的活力,将常规算法50%都不能达到的准确率提高到70%-80%甚至更高,经过深度学习训练的模型能应用在各个领域,极大的降低了人们的工作量。可以这么理解只要是我们人的眼睛可以看到的,计算机视觉都能大显身手。比如各位靓男美女经常用的PS中的消除功能,可以帮我们消除掉图像中我们不想要的部分,得到一个我们满意的图片。
代码以及模型的准备
# 克隆项目代码仓(HwHiAiUser用户)
cd $HOME
git clone https://gitee.com/ascend/samples.git
# 获取本项目需要的模型(.pb文件)和单算子描述文件(.json文件)
wget -P ~/imageinpainting_hifill https://c7xcode.obs.myhuaweicloud.com/models/imageinpainting_hifill/matmul_27648.json
wget -P ~/imageinpainting_hifill https://c7xcode.obs.myhuaweicloud.com/models/imageinpainting_hifill/hifill.pb
将TensorFlow的模型文件(.pb文件)转化为可以运行在昇腾AI处理器上的离线模型文件(.om文件)
参数介绍
单算子模型转换
--singleop(单算子描述文件路径)
--output(将转换好的模型输出的路径(不填就是当前路径))
--soc_version (转换模型适配的芯片类型(可能针对不同芯片有特别的优化))
模型转换
--output_type(模型输出的数据类型一般用FP16进行推理用FP32进行输出保持精度)
--input_shape(输入数据的形状一般CV模型都要求4D或者5D)
--input_format(输入数据的排布格式NCHW或者NHWC)
--output(输出的模型名字)
--soc_version(转换模型适配的芯片类型(可能针对不同芯片有特别的优化))
--framework=3(原模型的框架类型3代表TensorFlow)
--model(原模型(.pb)的路径)
# 进入刚才下载模型的文件夹
cd ~/imageinpainting_hifill
# 转化大矩阵乘模型
atc --singleop=./matmul_27648.json --output=./0_BatchMatMul_0_0_1_1_1024_1024_0_0_1_1_1024_27648_0_0_1_1_1024_27648 --soc_version=Ascend310
# 转化基于GAN的图像修复网络模型
atc --output_type=FP32 --input_shape="img:1,512,512,3;mask:1,512,512,1" --input_format=NHWC --output="./hifill" --soc_version=Ascend310 --framework=3 --save_original_model=false --model="./hifill.pb"
# 将转化好的模型复制到模型的文件夹中(model)
cp ./hifill.om $HOME/samples/python/level2_simple_inference/6_other/imageinpainting_hifill/model/
cp ./0_BatchMatMul_0_0_1_1_1024_1024_0_0_1_1_1024_27648_0_0_1_1_1024_27648/*.om $HOME/samples/python/level2_simple_inference/6_other/imageinpainting_hifill/model/
数据准备
# 进入存放数据的文件夹(data)
cd $HOME/samples/python/level2_simple_inference/6_other/imageinpainting_hifill/data
# 下载数据
cd $HOME/samples/python/level2_simple_inference/6_other/imageinpainting_hifill/data
wget https://c7xcode.obs.myhuaweicloud.com/models/imageinpainting_hifill/data/test.jpg
cd $HOME/samples/python/level2_simple_inference/6_other/imageinpainting_hifill/mask
wget https://c7xcode.obs.myhuaweicloud.com/models/imageinpainting_hifill/mask/test.jpg
编译运行
python3 main.py
效果展示(效果非常完美毫无违和感)
总结和感悟
1.学习收获:我了解到GAN不只可以完成一些换脸的操作,也可以用来修复图像。了解到图像锐利的方法,学会使用华为云服务器,安装CANN相关的软件,配置环境变量,使用atc工具转换模型,运行推理程序。
2.体验感受:通过这次CANN体验官的活动我体会到开发AI应用的乐趣,在华为的产品没有出来之前AI领域的一些技术对新手十分不友好,各种文章大多数表达不完整,或者没有验证可行性,使新手即使按部就班的操作也无法完成体验,非常劝退新人。但是得益于华为工程师们的努力。一个没有多少经验的小白也可以完成这一套完整应用开发。可以很好保持学习者的积极性。感谢所有奋斗在一线的华为工程师们,你们的付出将成为一座灯塔指引者众多AI开发者前行。
3.体验过程:见上文
4.对CANN平台的小小建议:关于CANN配置环境变量能不能在每一版本都有一个官方说明,由于CANN从最初的版本到3.0再到现在的5.0好多地方都变了,各种教程说法不一,配置变量让人十分头大。
5.对CANN未来的展望:CANN的出现我们不必一提到AI领域的硬件和框架和算法就只会想到TensorFlow,Pytorch,NVIDIA,我们也有属于自己的AI芯片(昇腾),自己的深度学习框架(昇思),我们有了自己的生态。但是目前的状况是,在各大高校中华为相关的AI计算产品应用还不太广,由于先入为主的观念,很多高校老师选择维持现状,不去探索使用,导致学生也听从老师的建议,这样十分不利于AI生态的发展。因此昇腾应该进一步加强与高校的合作,让所有老师和同学感受到国货的强大。
- 点赞
- 收藏
- 关注作者
评论(0)