基于昇腾CANN的推理应用开发体验报告--高清图像修复(Python)
【摘要】 1、开篇首先是ECS的环境的申请,参考之前有人写的总结:https://zhuanlan.zhihu.com/p/432673114前人栽树后人乘凉,这篇博客里面写的很清楚,按照步骤一步一步走就不会踩坑。 2、环境的配置安装驱动下载地址:昇腾社区-官网丨昇腾万里 让智能无所不及,具体配置:下载完成之后,传到申请的ECS环境上安装完成。 2.1 python依赖的第三方库参考:root@in...
1、开篇
首先是ECS的环境的申请,参考之前有人写的总结:
https://zhuanlan.zhihu.com/p/432673114
前人栽树后人乘凉,这篇博客里面写的很清楚,按照步骤一步一步走就不会踩坑。
2、环境的配置
安装驱动下载地址:昇腾社区-官网丨昇腾万里 让智能无所不及,具体配置:
下载完成之后,传到申请的ECS环境上安装完成。
2.1 python依赖的第三方库参考
:
root@inference-test:~# pip3 list
Package Version
--------------------- ----------
absl-py 0.11.0
anyconfig 0.9.11
astor 0.8.1
astroid 2.5.1
attrs 20.2.0
auto-tune 0.1.0
cached-property 1.5.2
certifi 2020.6.20
cffi 1.14.3
chardet 3.0.4
coverage 5.5
cycler 0.10.0
Cython 0.29.22
decorator 4.4.2
easydict 1.9
enum34 1.1.10
gast 0.2.2
gnureadline 8.0.0
google-pasta 0.2.0
grpcio 1.33.2
grpcio-tools 1.33.2
h5py 3.1.0
hccl 0.1.0
hccl-parser 0.1
idna 2.10
imageio 2.9.0
imgaug 0.4.0
importlib-metadata 2.0.0
isort 5.8.0
Keras 2.3.1
Keras-Applications 1.0.8
Keras-Preprocessing 1.1.2
kiwisolver 1.3.1
lazy-object-proxy 1.6.0
Markdown 3.3.3
matplotlib 3.3.3
mccabe 0.6.1
mpmath 1.1.0
munch 2.5.0
networkx 2.5
numpy 1.19.4
op-gen 0.1
op-test-frame 0.1
opencv-contrib-python 4.4.0.46
opencv-python 4.4.0.46
opencv-python3 1.0
opt-einsum 3.3.0
packaging 21.3
pandas 1.2.3
Pillow 8.0.1
pip 21.0.1
protobuf 3.14.0
psutil 5.7.3
pyclipper 1.2.0
pycparser 2.20
pylint 2.7.2
pyparsing 2.4.7
python-dateutil 2.8.1
pytz 2021.1
PyWavelets 1.1.1
PyYAML 5.3.1
requests 2.24.0
schedule-search 0.0.1
scikit-image 0.17.2
scipy 1.5.4
setuptools 41.2.0
Shapely 1.7.1
six 1.15.0
sympy 1.6.2
te 0.4.0
tensorboard 1.15.0
tensorflow 1.15.0
tensorflow-estimator 1.15.1
termcolor 1.1.0
tifffile 2020.11.26
toml 0.10.2
topi 0.4.0
tornado 5.1
tqdm 4.54.0
typed-ast 1.4.2
urllib3 1.25.11
utils 1.0.1
Werkzeug 1.0.1
wheel 0.35.1
wrapt 1.12.1
xlrd 2.0.1
xlwt 1.3.0
zipp 3.4.0
最主要的就是TensorFlow、numpy、opencv、Pillow等库。
2.2 环境变量设置
主要是python path和lib库的路径设置
export driver_home=/usr/local/Ascend
export install_path=${driver_home}/ascend-toolkit/latest
export DDK_PATH=${install_path}
export PATH=/usr/local/python3.7.5/bin:${install_path}/toolkit/bin:${install_path}/atc/ccec_compiler/bin:${install_path}/atc/bin:${install_path}/fwkacllib/ccec_compiler/bin:${install_path}/fwkacllib/bin:${PATH}
export LD_LIBRARY_PATH=/usr/local/lib/:/usr/lib/:${install_path}/acllib/lib64:${install_path}/atc/lib64:${install_path}/fwkacllib/lib64:${driver_home}/driver/lib64:${driver_home}/add-ons:${LD_LIBRARY_PATH}
export PYTHONPATH=${install_path}/pyACL/python/site-packages:${install_path}/fwkacllib/python/site-packages:${install_path}/fwkacllib/python/site-packages/auto_tune.egg:${install_path}/fwkacllib/python/site-packages/schedule_search.egg:${install_path}/toolkit/python/site-packages:${install_path}/atc/python/site-packages:${install_path}/atc/python/site-packages/auto_tune.egg/auto_tune:${install_path}/atc/python/site-packages/schedule_search.egg:${install_path}/opp/op_impl/built-in/ai_core/tbe:${install_path}/toolkit/latest/acllib/lib64:/data/samples/samples/python/common/atlas_utils:${PYTHONPATH}
export ASCEND_OPP_PATH=${install_path}/opp
export NPU_HOST_LIB=${install_path}/acllib/lib64/stub
export SOC_VERSION=Ascend310
export PATH=/usr/local/python3.7.5/bin:${PATH}
export LD_LIBRARY_PATH=/usr/local/python3.7.5/lib/:${LD_LIBRARY_PATH}
3、案例的运行
3.1 下载代码
git clone https://gitee.com/ascend/samples.git
# 进入到本案例文件夹
cd samples/python/level2_simple_inference/6_other/imageinpainting_hifill
3.2 模型转换
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
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"
有一点需要说的是,这里面是两条atc命令,但是sample里面的readme写到一起了,容易引起误解。
3.3 下载样例图片和运行
按照指导下载图片和mask之后,运行报错了:
samples/python/level2_simple_inference/6_other/imageinpainting_hifill/src# python3 main.py
Traceback (most recent call last):
File "main.py", line 19, in <module>
from utils import display_time
ImportError: cannot import name 'display_time' from 'utils' (/usr/local/python3.7.5/lib/python3.7/site-packages/utils/__init__.py)
提交issue:
https://gitee.com/ascend/samples/issues/I4O0R5?from=project-issue
应该是和python自带的utils库重名冲突了,所以重命名了本地文件夹的utils.py,案例终于运行成功:
原图:
修复效果图:
效果非常Nice!!!
总结:
优点:
芯片运行速度非常快,推理一瞬间就完成了,很好很强大!最后生成的效果图也很棒
不足之处:
1、ECS环境配置有点麻烦,如果提供类似于Docker镜像,可以大大提高效率,避免很多踩坑
2、最好能够提供工具或者代码,告诉我们mask图是怎么制作的,来体验一下更多的其他图片,一张图片不过瘾
3、代码里面有些小Bug,最终不影响运行,优化一下更好
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)