1.1 准备开发环境
开发环境是指用于模型转换或验证以及程序编译等开发过程的环境,目前只支持x86,需要使用我们提
供的基于Ubuntu18.04的docker镜像。
1.1.1 开发主机准备:
开发主机:一台安装了Ubuntu16.04/18.04/20.04的x86主机
# 安装docker
sudo apt-get install docker.io
# docker命令免root权限执行
# 创建docker用户组,若已有docker组会报错,没关系可忽略
sudo groupadd docker
# 将当前用户加入docker组
sudo gpasswd -a ${USER} docker
# 重启docker服务
sudo service docker restart
# 切换当前会话到新group或重新登录重启X会话
newgrp docker
初始化开发环境
# 确保安装环境
unzip x86_sophonsdk3_ubuntu18.04_py37_dev_22.06_docker.zip
# 进入文件夹并加载Docker镜像
cd x86_sophonsdk3_ubuntu18.04_py37_dev_22.06_docker
sudo docker load -i x86_sophonsdk3_ubuntu18.04_py37_dev_22.06.docker
# Sophon SDK3.0.0
unzip sophonsdk_v3.0.0_20220716.zip
cd sophonsdk_v3.0.0_20220716
解压sophonsdk_v3.0.0.tar.gz
cd sophonsdk_v3.0.0
# 通过脚本文件创建并进入Docker容器
# 若您没有执行前述关于docker命令免root执行的配置操作,需在命令前添加sudo
./docker_run_sophonsdk.sh
配置Docker容器开发环境
以下步骤均在Docker容器中进行:
1.安装nntc以及配置环境变量
cd /workspace/scripts
./install_lib.sh nntc
# 设置环境变量-[无PCIe加速卡]
source envsetup_cmodel.sh
# 设置环境变量,注意此命令只对当前终端有效,重新进入需要
开发环境移植例程:Docker下载案例
1、登录到docker,从Github下载所需案例,下载案例所需的代码等到“家目录 ~“
cd
git clone https://github.com/VACUUMSONG/sophpi-shaolin
#第一次会出现fatal: unable to access 'https://github.com/VACUUMSONG/sophpi-shaolin/': gnutls_handshake() failed: Error in the pull function. 解决方法:再输一次指令
下载数据集:docker下准备yolov5测试数据集
【下载测试数据集】
1、从下载好的案例集文件夹sophpi-shaolin中,拷贝yolov5文件夹到“家目录 ~” 下。
# cd
# cp -r sophpi-shaolin/yolov5/ ~
2、切换到yolov5文件夹下载test数据集
# cd yolov5/scripts
# chmod +777 *.sh
# ./01_prepare_test_data.sh
下载完成,数据(图片和视频)将保存在 data 目录
3、安装tree,用于查询目录结构
# apt install tree
下载数据集:docker下准备yolov5量化数据集
【下载量化数据集】
MS COCO是微软构建的一个包含分类、检测、分割等任务的大型的数据集。使用yolov5基于COCO Detection 2017预训练好的80类通用目标检测模型。
MS COCO提供了一些API,方便对数据集的使用和模型评估。
使用pip3 install pycocotools安装 ,并使用COCO提供的API进行下载。
模型准备:下载yolov5s.pt模型文件
yolov5下
第一步:下载yolov5s.pt模型
#wget https://github.com/ultralytics/yolov5/releases/download/v6.1/yolov5s.pt
第二步:下载yolov5 v6.1源码#wget https://github.com/ultralytics/yolov5/archive/refs/tags/v6.1.zip
第三步:解压源码
# unzip v6.1.zip
第四步:修改models/yolo.py
Detect类的forward函数最后的return语句,可实现不同的输出。
# cd yolov5-6.1
# vi models/yolo.py
下载yolov5s.pt失败
vi /etc/resolv.conf
添加nameserver 8.8.8.8
nameserver 8.8.4.4
模型准备:虚拟环境中导出JIT模型
第一步:创建并切换到python虚拟环境
# pip3 install virtualenv
# virtualenv -p python3 --system-site-packages env_yolov5
# source env_yolov5/bin/activate
第二步:安装依赖
# pip3 install tensorboard==1.13.0
# pip3 install -r requirements.txt
第三步:导出jit模型
# chmod +777 *.py
# cp ../yolov5s.pt .
# python3 export.py --weights yolov5s.pt --include torchscript
第四步:退出虚拟环境
# deactivate
模型准备
yolov5/yolov5-6.1下
1、将生成好的jit模型yolov5s.torchscript拷贝到${YOLOv5}/build文件夹下
# mkdir ../build
# cp yolov5s.torchscript ../build/yolov5s_coco_v6.1_3output.trace.pt
2、拷贝一份到${YOLOv5}/data/models文件夹下
# mkdir ../data/models
# cp yolov5s.torchscript ../data/models/yolov5s_coco_v6.1_3output.trace.pt
模型转换:生成FP32和INT8的bmodel
第一步:生成F32 Bmodel
1、在yolov5/scripts/目录下生成FP32 Bmodel
# cd scripts
# ./1_gen_fp32bmodel.sh
2、在yolov5目录查询model结构,确认是否完成
# tree -L 2 ../data/models/
第二步:生成INT8 Bmodel
1、在yolov5/scripts/目录下生成INT8 Bmodel
# ./00_prepare.sh
# ./2_gen_int8bmodel.sh
2、在yolov5目录查询model结构,确认是否完成
# tree -L 2 ../data/models/
C++执行文件生成:使用C++运行推理时需要执行此操作
第四步:完成
1、切换到cpp路径
# cd ../cpp
# chmod +777 *.*
2、编译可执行文件,生成yolov5_cv_cv_bmrt.arm
# make -f Makefile.arm
3、查询model目录结构,确认是否完成
# tree -L 2
数据集和模型转移到少林派
第四步:把开发完成的数据集、模型等文件转移到少林派
# cd
# scp -r yolov5/ linaro@192.168.150.1:/data
推理测试
第一步:少林派环境准备
1、登录到少林派
> ssh linaro@192.168.150.1
第二步:Python运行环境准备
1、切换到yolov5的python路径下
# cd /data/yolov5/python
2、运行Python需要增加运行权限
# chmod +777 *.py
cd
推理测试(以yolov5_bmcv_3output.py为例)
fp32模型
# python3 yolov5_bmcv_3output.py --bmodel ../data/models/yolov5s_640_coco_v6.1_3output_fp32_1b.bmodel --input /home/linaro/Pictures/w.png
int8模型
#python3 yolov5_bmcv_3output.py --bmodel ../data/models/yolov5s_640_coco_v6.1_3output_int8_1b.bmodel --input ../data/images/dog.jpg
tree -L 2 output/yolov5_bmcv_3output/
视频推理测试
第一步: C++运行环境准备
1、切换到yolov5 C++路径
# cd ../cpp
2、运行推理测试
# ./yolov5_demo.arm --input=../data/videos/dance.mp4 –bmodel=../data/models/yolov5s_640_coco_v6.1_3output_fp32_1b.bmodel --is_video=true
3、更多信息
#./yolov5_demo.arm --help