PCIE_基于YOLO3D的目标检测算法移植与测试
Posted 算能开发者社区
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PCIE_基于YOLO3D的目标检测算法移植与测试相关的知识,希望对你有一定的参考价值。
本文档适用于SOPHGO(算能)BM1684-PCIE及对应通用云开发空间,主要内容:
- SOPHGO(算能)云平台环境搭建
- YOLO3D目标检测算法
- Demo文件准备
- 部署和测试
- 相关链接
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 安装驱
cd /home/sophgo/bmnnsdk2-bm1684_v2.7.0/scripts
./install_driver_pcie.sh
ls /dev/bm*
如果可以看到以下设备节点,表示驱动安装成功:
1.2.4 加载Docker,并初始化环境
cd /home/sophgo/
apt install unzip
unzip bmnnsdk2-bm1684-ubuntu-docker-py37.zip
cd bmnnsdk2-bm1684-ubuntu-docker-py37/
docker load -i bmnnsdk2-bm1684-ubuntu.docker
1.2.5 通过脚本创建Docker容器
cd /home/sophgo/bmnnsdk2-bm1684_v2.7.0/
# 执行脚本创建Docker容器
./docker_run_bmnnsdk.sh
# 自动进入Docker容器
# 进行环境初始化
cd scripts/
# 更新 pip
/usr/local/bin/python3 -m pip install --upgrade pip
# 安装 nntc
./install_lib.sh nntc
# 安装sophon包
pip3 install /workspace/lib/sail/python3/pcie/py37/sophon-2.7.0-py3-none-any.whl
# 执行脚本 envsetup_pcie.sh 配置环境变量,这一步会安装一些依赖库,并导出环境变量到当前终端
source ./envsetup_pcie.sh
导出的环境变量只对当前终端有效,每次进入容器都需要重新执行一遍,或者可以将这些环境变量写入~/.bashrc,这样每次登录将会自动设置环境变量
1.2.6 Docker 常用命令
# 启动 Docker容器
docker start <CONTAINER ID>
# 查看正在运行的 Docker容器
docker ps
# 进入 Docker 容器 docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
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及相关文件准备
# 下载Demo及所需BModel
git clone xxx(待补充)
cd YOLO3D/data/models
pip3 install dfn
python3 -m dfn --url http://219.142.246.77:65000/sharing/2jQr4iVEx
python3 -m dfn --url http://219.142.246.77:65000/sharing/ljUxPxCeB
# 执行脚本 envsetup_pcie.sh 配置环境变量,这一步会安装一些依赖库,并导出环境变量到当前终端
cd scripts/
source ./envsetup_pcie.sh
3.1.2 查看FP32 BModel的信息
命令:bm_model.bin --info xxxx.bmodel
cd YOLO3D/data/models/
# 查看模型信息
bm_model.bin --info resnet18.bmodel
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测试
测试步骤如下:
cd $YOLO3D/python
python3 yolo3d.py
部分输出:
4.2.3 测试结果
# 退出容器
exit
# 将输出图片复制到云空间文件系统
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
以上是关于PCIE_基于YOLO3D的目标检测算法移植与测试的主要内容,如果未能解决你的问题,请参考以下文章