题主在做的本科生科研项目中用到了这款盒子,而题主很苦逼地既没有linux系统使用经验,也没有这类盒子的使用经验,所以本贴完完全全是记录题主的踩坑之路,如果题主能坚持写下去的话,大概会从环境安装开始一直到写到程序跑通并且熟练应用这款盒子为止。
题主使用vmware虚拟机unbutu18.04系统作为主机,配置过程网上教程众多,题主看的是公众号:AI不错呦的教程,十分详细捏,由于题主没遇到啥问题,这一步就不细说了。
$apt update #更新apt源
$apr install vim #使用apt进行软件包安装
$df -h #查看文件系统磁盘使用情况
$htop #显示系统中进程实时状态
$ls #显示文件,加-lh显示详细信息
$pwd #显示目录路径
$mkdir -p #创建多级文件夹
$cp -rp#递归复制目录下所有东西,保留文件属性不变
$mv [原文件或目录] [目标文件或目录] #移动文件及目录
$rm -rf [文件] #删除文件
$git clone [github网址] #将网站文件克隆到本地
$scp [本地文件路径] 服务器名@服务器ip:[服务器文件路径]
$scp 服务器名@服务器ip:[服务器文件路径] [本地文件路径]
#利用ssh进行文件远程传输,相当好用捏
$vim [文件]
#打开并且修改文件需要配合:i(插入):q(退出):wq(保存退出)使用
#安装docker
sudo apt-get install docker.io
#创建docker用户组,将当前用户加入docker组,重启docker服务
sudo groupadd docker
sudo gpasswd -a ${USER} docker
sudo service docker restart
newgrp docekr
然后去盒子官网下他们的docker镜像和sdk,直接解压就好,到这一步主机环境就配置好了
这一步参考官方b站最近发的se5与电脑连接的视频,第一次的话还要参考官网的se5数据手册题主未遇到问题,不多说了,实现下图就算完成
注:可以是ssd,yolov5等等,此处以yolov5为例,其他的大同小异
以上两步可以参考这个教程:examples/simple/yolov5 at 3.0.0 · sophon-ai-algo/examples · GitHubexamples/simple/yolov5 at 3.0.0 · sophon-ai-algo/examples · GitHubexamples/simple/yolov5 at 3.0.0 · sophon-ai-algo/examples · GitHub
运行完之后可以得到下图:
进入虚拟环境后,我们首先要搞清楚这个环境的文件结构,实际上该环境的根目录如下:
我们需要知道workspace就是我们进入虚拟环境的根文件夹sophonsdk_v3.0.0,那么为了方便借来下的操作,在该文件夹下运行指令$git clone https://github.com/sophon-ai-algo/examples,将例程文件夹直接克隆到workspace之下,之后我们要用到examples/simple/yolov5文件下的数据和脚本。
# 在容器里, 以python3.7的docker为例
cd ${YOLOv5}
# 下载yolov5源码
git clone https://github.com/ultralytics/yolov5.git yolov5_github
# 切换到yolov5工程目录
cd yolov5_github
# 使用tag从远程创建本地v6.1 分支
git branch v6.1 v6.1
# 下载yolov5s v6.1版本
wget https://github.com/ultralytics/yolov5/releases/download/v6.1/yolov5s.pt
执行上段代码,创建一个YOLOv5文件夹,并将yolov5的源码克隆到这
修改是比较关键的一步,容易出错卡壳,我们需要参考examples/simple/yolov5/doc下的说明文档进行修改,我们下载的是v6.1,所以基本无需修改,直接在python虚拟环境进行导出即可。
# 创建python虚拟环境virtualenv
pip3 install virtualenv
# 切换到虚拟环境
virtualenv -p python3 --system-site-packages env_yolov5
source env_yolov5/bin/activate
# 安装依赖
pip3 install -r requirements.txt
# 此过程遇到依赖冲突或者错误属正常现象
# 导出jit模型
python3 export.py --weights yolov5s.pt --include torchscript
# 退出虚拟环境
deactivate
# 将生成好的jit模型yolov5s.torchscript拷贝到${YOLOv5}/build文件夹下
mkdir ../build
mkdir ../data
cp yolov5s.torchscript ../build/yolov5s_coco_v6.1_3output.trace.pt
# 拷贝一份到${YOLOv5}/data/models文件夹下
mkdir ../data/models
cp yolov5s.torchscript ../data/models/yolov5s_coco_v6.1_3output.trace.pt
cd ..
这里我们要明确导出的位置,导出完后的YOLOv5文件夹如上图,我们将pt文件存在了build和data/model中,接下来用cp指令将exampls/simple/yolov5/scripts下的两个脚本(1_gen_fp32bmodel.sh和model_info.sh)拷贝到yolov5-github文件夹下,一定要拷贝到这个文件夹,或者你可以修改model_info脚本,相对较麻烦。运行1_gen_fp32bmodel.sh,在data/models文件夹下得到我们想要的bmodel,可以看到,这个模型是单输出
到了这一步我们主机上的步骤基本完成啦,接下来就是把模型和需要识别的图片或视频以及arm格式的可执行文件拷贝到盒子中,这一步要用前文提到的scp指令,可以自行搜索或者参考我的指令进行修改
scp yolov5s_640_coco_v6.1_3output_fp32_1b.bmodel [email protected]:/data/yolov5_object_demo
#将bmodel文件拷贝到用户名为linaro,ip为192.168.150.1服务器下的/data/yolov5_object_demo文件夹
scp dog.jpg [email protected]:/data/yolov5_object_demo
scp yolov5_demo.arm [email protected]:/data/yolov5_object_demo
#服务器默认密码为linaro
我们进入之前配置好的盒子,找到我们上文将模型,图片和可执行文件拷贝到的文件夹执行如下代码可得到下图结果,最后再将得到的结果图片用scp传输回主机,就能看到结果啦。
$ ./yolov5_demo.arm --input=dog.jpg --bmodel=yolov5s_640_coco_v6.1_3output_fp32_1b.bmodel
#此处dog.jpg是要识别的图片,bmodel是我们转换的模型,可以自己改名字,路径是相对于可执行文件的,我这里全放在一个文件夹里,所以直接打名字就好
下图是盒子跑通的样子:
下面是识别的结果图片:
完成啦!