aarch64(arm之一)下编译使用Tensorflow的预测程序

假设已有arm系统环境

1、使用anaconda或其它虚拟环境工具安装基础python环境及软件包

(1)部分包可以直接通过conda 或 pip 通过官方源安装

例如:numpy(数值运算) opencv(图像处理) cython(编译) pyinstaller(打包)

conda install cython pyinstaller numpy opencv

(2)部分包没有conda或pip包,可以通过pip安装whl

例如tensorflow

下载:https://pan.baidu.com/s/134lVxY2pmRH21ki5IIMkig  提取码:jb87  (tf 1.13 2.0)

安装:

pip install tensorflow-2.0.0-cp37-none-linux_aarch64.whl

如果报ssl证书认证错误(There was a problem confirming the ssl certificate),添加ssl认证代码安装

pip install tensorflow-2.0.0-cp37-none-linux_aarch64.whl -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com

安装时某些依赖包可能出错,例如h5py,单独用conda或pip安装后,再重新执行以上tensorflow安装

conda install h5py

(3)部分包不具备conda或pip安装条件,从源码编译安装

例如gdal,参考:main__.gdal_config_error: [Errno 2] No such file or directory: ‘gdal-config (gdal源码安装)

2、打包基于tensorflow的预测程序

直接使用pyinstaller code.py发现打包到的程序里的包很少,运行会报缺环境的import错误,例如tensorflow等

需要修改code.spec增加缺的包,例如:hiddenimports=['pkg_resources.py2_warn', 'pyparsing','tensorflow','gdal'],

扫描二维码关注公众号,回复: 12659599 查看本文章

如果还是不行增加hook,例如:hookspath=['hooks'], 参考 tensorflow hook

此时重新打包发现tensorflow等依赖项均出现在程序包中,程序可正常运行

3、代码换环境后报错

同样的代码换到该环境后报错,这种可能是环境差异导致的,经检查当前环境的pyshp为2.1.2,原环境的pyshp为2.1.0,换回原版本测试ok。

4、加载模型时执行报错

源码运行是代码ok,但编译后的程序执行报错:

经检查是读取pb时出错,例如:graph_def.ParseFromString(f.read())

问题很奇怪怀疑是文件读取后异常,大概率是字符集问题,查看并尝试修改系统字符集

通过locale命令看到系统字符集是zh_CN.UTF-8

修改为 en_US.UTF-8后,执行一切正常

LANG=en_US.UTF-8

猜你喜欢

转载自blog.csdn.net/dou3516/article/details/111915771