1.fatal error: acl/acl.h: No such file or directory
该问题是因为在设置的DDK环境变量下找不到头文件。
解决方法:
1)输入echo $DDK,查看当前DDK地址
2)在src文件夹下找到CMakeLists.txt文件,发现该文件有一个变量名称叫INC_PATH,查找该变量名,发现有如下用到的地方:
# Header path
include_directories(
../inc/
common/inc/
yolo/inc/
deepsort/inc/
retina/inc/
dimp/inc/
$ENV{HOME}/ascend_ddk/${ARCH}/include/
$ENV{HOME}/ascend_ddk/${ARCH}/include/ascenddk
${INC_PATH}/acllib/include/
$ENV{HOME}/Ascend/driver
$ENV{HOME}/ascend_ddk/${ARCH}/include/opencv4/opencv2
)
对INC_PATH继续进行查找,可以看到如下代码段:
# add host lib path
link_directories(
/usr/local/lib/
${LIB_PATH}
$ENV{HOME}/ascend_ddk/${ARCH}/lib/
${INC_PATH}/atc/lib64
${INC_PATH}/aclib/lib64/stub/
${INC_PATH}/include/
${INC_PATH}/
$ENV{HOME}/Ascend/
$ENV{HOME}/Ascend/driver/
)
在其中加入${INC_PATH}/include/(结合DDK_PATH进行确认),也就是在查找acl.h时从该目录下查找,这样便可确定acl.h位置,问题解决。
2.fatal error: opencv2/opencv.hpp: No such file or directory
该问题性质和问题一类似,网上的解决方法有说重新安装编译libopencv-dev或者是修改安装包路径并重新编译、还有直接apt-get install 的,这些方法均试过,没有实质作用。
最简单的解决方法,确定DDK_PATH后直接软链接到DDK_PATH,无需编译即可通过。
3.Atlas 200I DK上网问题总结
①如果只用一根网线连接PC和开发板,需保证二者在同一网段下(通过修改网络适配里的以太网Ipv4设置来实现),虽然官方推荐这个方法,但是本人在尝试时发现并不是很好用,因此并不推荐。
②通过路由器桥接,该方法很好用,需要两根网线,登录tplogin.cn进入桥接页面,然后开启wifi即可使得板子联网。
4.Atlas 200I DK在推理时经常断网转换不成功问题
由于本人是在个人热点下进行模型转换的,在转换deepsort的om模型时,采用了下述命令:
atc --model=deep.onnx --framework=5 --output=deep_dims --input_format=ND --input_shape="actual_input_1:-1,3,128,64" --dynamic_dims="1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19;20;21;22;23;24;25;26;27;28;29;30;31;32;33;34;35;36;37;38;39;40;41;42;43;44;45;46;47;48;49;50" --log=error --soc_version=Ascend310B4
但是转换的很慢,或者直接报出如下问题:
同时还会出现爆内存的问题:
针对该问题,可以在自己的PC上进行模型转换,采用WSL的方式创建Ubuntu系统,然后安装配置文件进行转换,参考链接如下:
https://www.hiascend.com/document/detail/zh/Atlas200IDKA2DeveloperKit/23.0.RC1/Application%20Development%20Guide/ttmutat/tmuacop_0011.html
5.代码运行时出现:
OpenBLAS Warning : Detect OpenMP Loop and this application may hang. Please rebuild the library with USE_OPENMP=1 option.
解决方法:export OMP_NUM_THREADS=1
6.SSH服务重启失败,提示:ssh.serviceJob for ssh.service failed
经常报如下错误:
/etc/init.d/ssh restartRestarting ssh (via systemctl): ssh.serviceJob for ssh.service failed because the control process exited with error code. See "systemctl status ssh.service" and "journalctl -xeu ssh.service" for details. failed!
解决思路:
①查看权限
/usr/sbin/sshd -T
# /usr/sbin/sshd -T
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0755 for '/etc/ssh/ssh_host_rsa_key' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0755 for '/etc/ssh/ssh_host_ecdsa_key' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0755 for '/etc/ssh/ssh_host_ed25519_key' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
sshd: no hostkeys available -- exiting.
②修改权限
chmod -R 600 /etc/ssh/*
③重启SSH服务
/etc/init.d/ssh restart
显示成功:
Restarting ssh (via systemctl): ssh.service.
7.设置DNS配置网络
无法联网问题如下:
(base) root@davinci-mini-devkit-1:~# ping baidu.com
ping: baidu.com: Temporary failure in name resolution
解决思路:
添加DNS
echo"nameserver 8.8.8.8" >> /etc/resolv.conf
8.执行Python脚本报错,提示:No module named _bz2
编译问题:
执行Python脚本报错,提示:No module named _bz2,该依赖库不是Python库,而是C语言的系统动态库,属于Python的底层库,需要在编译Python阶段一起编译才能使用。
解决思路:
①使用sudo或root用户执行安装bz2。
sudo apt-get update
sudo apt-get install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev libffi-dev zlib1g-dev
②下载Python安装包,并使用本地域用户执行重新编译并安装Python,Python版本可自行决定。
cd <python安装包路径>
./configure --prefix=/usr/local/python3.9.7 --enable-loadable-sqlite-extensions --enable-shared --enable-optimizations
make -j4
sudo make install
9.Python导入opencv模块报错,提示:ImportError: libGL.so.1: cannot open shared object file: No such file or directory
出现以下错误:
---------------------------------------------------------------------------
ImportError Traceback (most recent call last)
Cell In[1], line 1
----> 1 import cv2
2 import numpy as np
3 import ipywidgets as widgets
File ~/miniconda3/lib/python3.9/site-packages/cv2/__init__.py:181
176 if DEBUG: print("Extra Python code for", submodule, "is loaded")
178 if DEBUG: print('OpenCV loader: DONE')
--> 181 bootstrap()
File ~/miniconda3/lib/python3.9/site-packages/cv2/__init__.py:153, in bootstrap()
149 if DEBUG: print("Relink everything from native cv2 module to cv2 package")
151 py_module = sys.modules.pop("cv2")
--> 153 native_module = importlib.import_module("cv2")
155 sys.modules["cv2"] = py_module
156 setattr(py_module, "_native", native_module)
File ~/miniconda3/lib/python3.9/importlib/__init__.py:127, in import_module(name, package)
125 break
126 level += 1
--> 127 return _bootstrap._gcd_import(name[level:], package, level)
ImportError: libGL.so.1: cannot open shared object file: No such file or directory
解决思路:
安装GL库
# 更新apt-get
apt-get update
# 安装GL库
apt install libgl1-mesa-glx
10.atc转化om时容易挂掉
在用atc转换deepsort的om模型时,一直长时间无反应,问题如下:
解决思路:
①键盘输入“Win+R”,打开命令行窗口,输入cmd即可查看系统版本信息(在命令行输入VER也能达到相同效果),回显如下所示:
C:\Users\xxx>cmd
Microsoft Windows [版本 10.0.19045.2486]
(c) Microsoft Corporation。保留所有权利。
②搜索并找到Windows PowerShell/命令提示符,右键单击图标并选择“以管理员身份运行”后,先更新wsl内核,再通过运行以下命令查看在线商店可以下载并且可用的Linux发行版本列表:
wsl --update
wsl --list --online
③确认需下载的Ubuntu 22.04版本,输入以下命令,安装完成后重启计算机。
wsl --install --distribution Ubuntu-22.04
④启动Linux Ubuntu22.04子系统。
单击“Windows”菜单栏,所用应用下面找到并单击“Ubuntu 22.04.2 LTS”图标,启动Ubuntu 22.04.2 LTS
⑤在Ubuntu 22.04 LTS系统命令行界面配置apt-get源
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
sudo sed -i "s@http://.*archive.ubuntu.com@http://repo.huaweicloud.com@g" /etc/apt/sources.list
sudo sed -i "s@http://.*security.ubuntu.com@http://repo.huaweicloud.com@g" /etc/apt/sources.list
sudo apt-get update
sudo apt upgrade