【玄铁杯第三届RISC-V应用创新大赛】LicheePi 4A+建材识别装置+CUG汪汪小分队+问题记录

发布时间 2023-10-08 19:21:30作者: wuboy19

【玄铁杯第三届RISC-V应用创新大赛】LicheePi 4A+建材识别装置+CUG汪汪小分队+opencv问题记录

一、开发板环境搭建

1.1 开发板外观

picture 2

图1 开发板带铝合金外壳外部图

picture 3

图2 开发板带铝合金外壳内部图
在yolox模型部署好后,在虚拟环境中调用opencv的imshow等图形化操作会报下面错误:

1.2 给emmc烧录系统

博主选择的是debian系统-日期为20230920(目前最新版本镜像)
百度网盘链接

  • 1、burn_tools.zip(烧录工具)
  • 2、20230920中为debian镜像
  • 3、博主选择的是在window下进行烧录(烧录安装在实验室win10电脑上),发放的一般是内测版本,所以在上电前需要人为按boot按钮,将burn_lpi4a.bat文件中的路径改为自己下载镜像的路径,然后进行下载,成功下载请看图4
    注明:Windows 下烧录时,需要先进入高级启动模式,禁用数字签名。才能正常安装下面的驱动
    具体教程查看:sipeed文档链接
    picture 4
图3 资料图

picture 5

图4 镜像的烧写过程

1.3 系统的正常启动、ssh连接以及sd卡扩容

系统正常启动如图7、8、9

sudo passwd
修改root用户密码

ssh改为用户root登录就行,系统有mousepad,可以直接mousepad打开就行,不用vim打开

picture 10

图5 修改root用户密码

picture 9

图6 ssh连接赋予权限

picture 6

图7 系统连接网络

picture 7

图8 系统ip地址

picture 8

图9 系统访问百度

sd卡如何扩容:
博主主要强调关键点

  • 1、格式化SD卡(无需关注什么格式),插入licheepi 4a,然后如下
sudo fdisk -l列出所有分区
在fdisk界面输入d依次删除原有分区
在fdisk界面输入w写入数据,至此完成删除
在fdisk界面输入n创建新分区,输入p创建逻辑primary分区,默认创建为primary分区,输入e创建为扩展分区,分区号选择使用默认值即可

再输入n继续创建分区

在fdisk界面输入t更改分区类型,进入更改分区界面后输入c表示创建为fat分区。输入83创建为ext4分区,输入L查看所有分区类型号

输入w完成所有分区保存

退出至控制台输入sudo mkfs.ext4 /dev/mmcblk1p1格式化第一个分区
设置开机挂载
sipeed@lpi4a:~$ cat /etc/fstab
# UNCONFIGURED FSTAB FOR BASE SYSTEM
/dev/mmcblk0p3 /       auto    defaults    1 1
/dev/mmcblk0p2 /boot   auto    defaults    0 0
/dev/mmcblk1p1 自己挂载路径   auto    defaults    0 2
如图11 sd卡扩展分区成功

picture 0

图10 格式化sd卡

picture 11

图11 sd卡扩展分区成功

sipeed扩容链接参考

二、YOLOX环境搭建

2.1 环境搭建与安全帽测试

确保已联网的状态下,更新 apt 源
sudo apt update
安装一些软件,用于下载代码和拉取代码
sudo apt install wget git vim
安装 SHL 库
wget https://github.com/T-head-Semi/csi-nn2/releases/download/v2.4-beta.1/c920.tar.gz
tar xf c920.tar.gz
cp c920/lib/* /usr/lib/riscv64-linux-gnu/ -rf
获取 YOLOX 模型
git clone https://github.com/Megvii-BaseDetection/YOLOX.git
cd YOLOX/demo/ONNXRuntime
wget https://github.com/Megvii-BaseDetection/YOLOX/releases/download/0.1.1rc0/yolox_s.onnx

安装文档里面的whl
pip install numpy-1.25.0-cp311-cp311-linux_riscv64.whl
pip install opencv_python-4.5.4+4cd224d-cp311-cp311-linux_riscv64.whl
pip install kiwisolver-1.4.4-cp311-cp311-linux_riscv64.whl
pip install Pillow-9.5.0-cp311-cp311-linux_riscv64.whl
pip install matplotlib-3.7.2.dev0+gb3bd929cf0.d20230630-cp311-cp311-linux_riscv64.whl
pip install pycocotools-2.0.6-cp311-cp311-linux_riscv64.whl
pip3 install loguru-0.7.0-py3-none-any.whl
pip3 install torch-2.0.0a0+gitc263bd4-cp311-cp311-linux_riscv64.whl
pip3 install MarkupSafe-2.1.3-cp311-cp311-linux_riscv64.whl
pip3 install torchvision-0.15.1a0-cp311-cp311-linux_riscv64.whl
pip3 install psutil-5.9.5-cp311-abi3-linux_riscv64.whl
pip3 install tqdm-4.65.0-py3-none-any.whl
pip3 install tabulate-0.9.0-py3-none-any.whl
安装 HHB-onnxruntime
wget https://github.com/zhangwm-pt/onnxruntime/releases/download/riscv_whl/onnxruntime-1.14.1-cp311-cp311-linux_riscv64.whl
pip install onnxruntime-1.14.1-cp311-cp311-linux_riscv64.whl

博主自己在学校实验室训练的yolox模型测试:
picture 12

图12 博主自己在学校实验室训练的yolox模型测试

测试官方的yolox模型:
picture 13

图13 测试官方的yolox模型

将自己的模型部署到开发板上测试图片和usb摄像头实时测试:
picture 14

图14 开发板上测试图片

picture 15

图15 开发板上摄像头实时测试1

picture 16

图16 开发板上摄像头实时测试2

picture 17

图17 开发板上摄像头实时测试3

licheepi 4a参考文档

2.2 问题记录

licheepi 4a python3.11
这个是错误信息
cv2.error: OpenCV(4.5.4) /mnt/git/github/opencv-python/opencv/modules/highgui/src/window.cpp:1257: error: (-2:Unspecified error) The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Cocoa support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script in function 'cvNamedWindow'

这个问题的原因是:
编译 opencv 的环境中没有 gtk2.0,所以,编译完成的 opencv 不支持图形界面相关的功能

解决办法:安装最新版本加入gtk2.0的opencv whl文件,或者自行编译生成riscv64架构的whl文件,下载opencv的源码进行编译