• AXera-pi使用使用记录(1)


    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 root@192.168.1.110 用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  在此目录下找到推理好的图片,并下载到本地查看
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    (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进入容器
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    //===训练自己的数据集,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集视频)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41

    //==============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
    }
    }

  • 相关阅读:
    数据结构与算法复习:第三十一弹
    C++ 随机数、srand((unsigned)time(NULL)) 详解
    Web前端—CSEO、Favicon、小兔鲜儿电商网站顶部设计
    如何用Jmeter编写脚本压测?
    一些c语言零碎小知识
    电脑数据删除了还能恢复吗?为你推荐三种超实用的电脑数据恢复方法
    vite创建vue3项目页面引用public下js文件失败解决
    springboot项目:加入购物车
    C# —— 方法的参数列表
    算法练习11——买卖股票的最佳时机 II
  • 原文地址:https://blog.csdn.net/weixin_47397155/article/details/128086394