小言_互联网的博客

PCIE_基于YOLO3D的目标检测算法移植与测试

381人阅读  评论(0)

本文档适用于SOPHGO(算能)BM1684-PCIE及对应通用云开发空间,主要内容:

  1. SOPHGO(算能)云平台环境搭建
  2. YOLO3D目标检测算法
  3. Demo文件准备
  4. 部署和测试
  5. 相关链接

1. SOPHGO(算能)云平台环境搭建

1.1. 开通云平台账号

注意:申请开通BM1684-PCIE通用云开发空间

参考: https://cloud.sophgo.com/tpu.pdf

1.2. 开发环境初始化

1.2.1 进入命令行模式,进去默认在/home/sophgo目录

1.2.2 切换成 root 权限

sudo -i

1.2.3 安装驱


  
  1. cd /home/sophgo/bmnnsdk2-bm1684_v2.7.0/scripts
  2. ./install_driver_pcie.sh
  3. ls /dev/bm*

如果可以看到以下设备节点,表示驱动安装成功:

1.2.4 加载Docker,并初始化环境


  
  1. cd /home/sophgo/
  2. apt install unzip
  3. unzip bmnnsdk2-bm1684-ubuntu-docker-py37.zip
  4. cd bmnnsdk2-bm1684-ubuntu-docker-py37/
  5. docker load -i bmnnsdk2-bm1684-ubuntu.docker

1.2.5 通过脚本创建Docker容器


  
  1. cd /home/sophgo/bmnnsdk2-bm1684_v2.7.0/
  2. # 执行脚本创建Docker容器
  3. ./docker_run_bmnnsdk.sh
  4. # 自动进入Docker容器
  5. # 进行环境初始化
  6. cd scripts/
  7. # 更新 pip
  8. /usr/local/bin/python3 -m pip install --upgrade pip
  9. # 安装 nntc
  10. ./install_lib.sh nntc
  11. # 安装sophon包
  12. pip3 install /workspace/lib/sail/python3/pcie/py37/sophon-2.7.0-py3-none-any.whl

  
  1. # 执行脚本 envsetup_pcie.sh 配置环境变量,这一步会安装一些依赖库,并导出环境变量到当前终端
  2. source ./envsetup_pcie.sh

导出的环境变量只对当前终端有效,每次进入容器都需要重新执行一遍,或者可以将这些环境变量写入~/.bashrc,这样每次登录将会自动设置环境变量

1.2.6 Docker 常用命令


  
  1. # 启动 Docker容器
  2. docker start <CONTAINER ID>
  3. # 查看正在运行的 Docker容器
  4. docker ps
  5. # 进入 Docker 容器 docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
  6. docker exec -it <CONTAINER ID> bash

1.2.7 通过云空间文件系统拷贝代码到Docker容器中

打开云空间文件系统:

上传文件:文件会被存储在服务器的 /tmp 目录下

拷贝文件到Docker容器中:

Docker容器的workspace目录被映射到 /home/sophgo/bmnnsdk2-bm1684_v2.7.0/

cp /tmp/<待拷贝文件> /home/sophgo/bmnnsdk2-bm1684_v2.7.0/

注意:本教程后续步骤均在Docker容器中进行

2. YOLO3D目标检测算法

文档:https://ruhyadi.github.io/project/computer-vision/yolo3d/

代码仓库链接:https://github.com/ruhyadi/YOLO3D

2.1 功能介绍

  • 3D目标检测:给定图片和相机参数,检测图片中车辆、行人3D检测框,并将检测框显示在图片上返回。

2.2 应用场景

  • 自动驾驶:车辆、行人的3D目标检测是自动驾驶感知算法的重要模块。自动驾驶系统依靠检测出的目标实现自主躲避障碍物、路径规划等功能。

2.3 特色优势

  • 只需输入单张图片和对应的相机参数就能完成车辆、行人的3D检测,无需输入点云等其他模态数据。
  • YOLO3D基于YOLOV5检测网络和ResNet网络回归,目前算能芯片对以上模型推理效果均有优化,推理速度快;另外工具链对以上模型都有完整支持,部署简单快捷。

3. Demo文件准备

3.1 准备模型与数据

3.1.1 Demo及相关文件准备


  
  1. # 下载Demo及所需BModel
  2. git clone xxx(待补充)
  3. cd YOLO3D/data/models
  4. pip3 install dfn
  5. python3 -m dfn --url http://219.142.246.77:65000/sharing/2jQr4iVEx
  6. python3 -m dfn --url http://219.142.246.77:65000/sharing/ljUxPxCeB
  7. # 执行脚本 envsetup_pcie.sh 配置环境变量,这一步会安装一些依赖库,并导出环境变量到当前终端
  8. cd scripts/
  9. source ./envsetup_pcie.sh

3.1.2 查看FP32 BModel的信息

命令:bm_model.bin --info xxxx.bmodel


  
  1. cd YOLO3D/ data/models/
  2. # 查看模型信息
  3. bm_model.bin --info resnet18.bmodel
  4. bm_model.bin --info yolov5s.bmodel

resnet18.bmodel输出:

 yolov5s.bmodel输出:

 

4. 部署测试

测试样例图片为YOLO3D源码中的测试图片,可自行选用测试图片

4.1 环境配置

对于x86 PCIe平台,程序执行所需的环境变量执行source envsetup_pcie.sh时已经配置完成

4.2 Python例程部署测试(x86平台PCIe模式)

Python代码无需编译,无论是x86 PCIe平台还是arm SoC平台配置好环境之后就可直接运行。

4.2.1 FP32 BModel测试

测试步骤如下:


  
  1. cd ${YOLO3D}/python
  2. python3 yolo3d.py

部分输出:

4.2.3 测试结果


  
  1. # 退出容器
  2. exit
  3. # 将输出图片复制到云空间文件系统
  4. cp /home/sophgo/bmnnsdk2-bm1684_v2.7.0/YOLO3D/python/result/output_demo1.jpg /tmp/

在1.2.7云空间文件系统处将图片下载至本地查看:

 

5. 相关链接

样例开源仓库:https://github.com/sophon-ai-algo/examples

BM1684 BMNNSDK文档:https://developer.sophgo.com/site/index/document/6/all.html

编译工具用户开发手册: https://doc.sophgo.com/docs/2.7.0/docs_latest_release/nntc/html/index.html

量化工具用户开发手册: https://doc.sophgo.com/docs/2.7.0/docs_latest_release/calibration-tools/html/index.html

算能量化工具介绍及使用说明:https://www.bilibili.com/video/BV1DA4y1S75p?spm_id_from=333.999.0

官网视频教程:https://developer.sophgo.com/site/index/course/all/all.html

官网文档中心:https://developer.sophgo.com/site/index/document/all/all.html

官网下载中心:https://developer.sophgo.com/site/index/material/all/all.html

官网论坛:https://developer.sophgo.com/forum/view/43.html


转载:https://blog.csdn.net/lily_19861986/article/details/127487824
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场