chmod +x ax_hrnet
./ax_hrnet -m hrnet_256x192.joint -i image.jpg
fbon
fbv pose_out.png
后处理参考model zoo 里面的 onnx hrnet 处理下就好
对应HRNet仓库==============
https://github.com/open-mmlab/mmpose/blob/master/configs/body/2d_kpt_sview_rgb_img/topdown_heatmap/mpii/litehrnet_18_mpii_256x256.py
https://github.com/HRNet/HRNet-Image-Classification
https://github.com/HRNet/Lite-HRNet
=======================================================模型支持列表
分类:
MobileNetv1 、MobileNetv2、SqueezeNetv1_1、ResNet18、ResNet50、VGG16
检测:
YOLOv3、PP-YOLOv3、YOLOv3-Tiny、YOLOv4、YOLOv4-Tiny
YOLOv5-S、 YOLOX-S、YOLO-Fastest、YOLO-Fastest-Body、NanoDet-m
识别:
MobileFaceNets
关键点:
HRNet
=======================================================Pulsar工具链
Pulsar 由 爱芯元智 自主研发 的 all-in-one 神经网络编译器, (转换-》量化-》编译-》异构)四合一
Pulsar工具链核心功能是将.onnx模型编译成芯片可以识别的运行的 .joint模型
//===============ubuntu连接串口
ls /dev/ttyUSB*
sudo screen /dev/ttyUSB0 115200
nutui-connect 进行图形化界面连接
ip addr 查看本地ip地址
ssh [email protected] 用ubuntu终端直接连接开发板
//=============AXerapi的开发环境
c/c++语言开发 本地编译与交叉编译
(1)本地编译:
打开工具 Remmina (界面形式连接ssh、sftp)
ax-samples 是爱心派官方提供的例程
git pull 更新源码(在开发板目录/home/ax-samples下)-》一系列操作就行编译
推理一张图片 ./install/bin/ax_yolov5s(编译好的可执行程序) -m /home//models/yolov5s.joint(模型文件) -i /home/images/dog.jpg (图片)
/home/ax-samples/build 在此目录下找到推理好的图片,并下载到本地查看
(2)使用CLion开发推理图片(本地编译)
(3)交叉编译速度快
//===本地转换模型文件
sudo docker run -it --net host --shm-size 8g -v SPWD:/data sipeed/pulsar 创建容器并运行容器
sudo docker kill ffc1792471da 停止正在运行的容器进程
docker rm 1a18447e378b 删除docker容器
docker使用,ctrl+D 退出容器
sudo docker ps -a 看看正在运行的容器,需要知道容器的ID
docker start xxx && docker attach xxx进入容器
//===训练自己的数据集,ax-samples样例
1)直接再pycharm下进行训练 训练yolov5 得到xxx.pt
python train.py --weights yolov5s.pt --cfg models/yolov5s.yaml --data data/VisDrone.yaml --batch-size -1 --epoch
2)安装onnx,导出onnx模型(自己的训练集进行训练得到的onnx)
python export.py --weights runs/train/exp/weights/best.pt --include onnx
3)与官方自带的onnx模型进行对比修改(因为官方修改后的网络结构式式刚好适配这个joint的格式的一些底层算子)===后处理步骤
可以使用脚本编辑
可以使用图像化编辑 在onnx-modifier目录下, python app.py 进行图形化修改(删除部分节点、修改节点输入输出名、编辑节点属性、增加新节点)
yolov5s_visdrone.prototxt 中的数据集路径换成自己的数据集,2处地方,
一个具有 1000 张图片的 tar 包
tar -cvf visdrone_1000.tar 0000*.jpg
4)修改完成后的自训练模型,进行转换模型,之后会得到xxx.joint模型文件(ModelZoo目录下)
pulsar build --input onnx/yolov5s_visdrone.onnx --output yolov5s_visdrone.joint --config config/yolov5s_visdrone.prototxt --output_config yolov5s_visdrone.prototxt
5)在docker下用一下命令进行仿真半分
pulsar run onnx/yolov5s_visdrone.onnx yolov5s_visdrone .joint --config yolov5s_visdrone.prototxt --output_gt gt
如果结果的cosine-sim:value 值小于0.99,需要检查onnx模型和量化(转换)图片
6)直接把转换后的模型复制到ax-samples/models下,即上传到开发板开干!!!!
7)构建自己的测试程序,在ax-samples/examples下面
复制ax_yolov5s_steps.cc 这个源码,重命名为ax_yolov5s_visdrone_test.cc 然后进入此文件
修改 CLASS_NAMES类别 为自己的类别
修改 ANCHORS 为自己的锚点
在examples/base/detection.hpp ,复制函数,再修改函数名;
修改 cls_num 按照自己的数据集;
再继续修改复制的这个文件的后处理;
在example/CMakeLists.txt文件
添加自己的程序 ax_yolov5s_visdrone_test.cc
点击下方的CMake按钮刷新,然后构建自己的程序
上传测试图片(单张图片推理结果,参照第2集视频)
//==============ax-pipeline样例
-m /home/models/yolov5s.joint -p /home/ax-pipeline/examples/sample_run_joint/config/yolov5s.json
ffplay rtsp://192.168.1.122:8554/axstream0
-m /home/models/hrnet_256x192.joint -p /home/ax-pipeline/examples/sample_run_joint/config/hrnet_pose_rgd.json
挂载U盘 mount /dev/sda1 /mnt/usb
显示logo sipeedlogo
fbon
fbv /home/res/logo.png
fboff
显示图片
fbv /home/examples/480x360.jpg
//================json文件
yolov5s.json
{
“MODEL_TYPE”: “MT_DET_YOLOV5”,
“MODEL_PATH”: “/home/models/yolov5s.joint”,
“ANCHORS”: [
373.0,
326.0
。。。。。。
],
“CLASS_NAMES”: [
“hair drier”,
“toothbrush”
。。。。。。
],
“CLASS_NUM”: 80,
“NMS_THRESHOLD”: 0.44999998807907104,
“PROB_THRESHOLD”: 0.4000000059604645
}
hrnet_pose.json=====
{
“MODEL_TYPE”: “MT_MLM_HUMAN_POSE_HRNET”,
“SAMPLE_IVPS_ALGO_WIDTH”: 960,
“SAMPLE_IVPS_ALGO_HEIGHT”: 540,
“MODEL_PATH”: “./models/yolov5s_sub_rgb_11.joint”,
“MODEL_MINOR”: {
“MODEL_PATH”: “./models/hrnet_256x192.joint”
},
“MODEL_MAJOR”: {
“MODEL_TYPE”: “MT_DET_YOLOV5”,
“MODEL_PATH”: “./models/yolov5s_sub_rgb_11.joint”,
“ANCHORS”: [
10.0,
13.0,
。。。。。。。
],
“CLASS_NAMES”: [
“person”,
“bicycle”,
。。。。。。
],
“CLASS_NUM”: 80,
“NMS_THRESHOLD”: 0.44999998807907104,
“PROB_THRESHOLD”: 0.4000000059604645
}
}