yolov10在地平线旭日X3派上的部署和测试(Python版本和C++版本)

0、搭建开发环境

当前的测试根据一下的步骤并修改源码是可以实现yolov8的板端运行,如果不想再搭建环境和测试代码bug上浪费更多的时间可以直接获取本人的测试虚拟机,所有的测试代码、虚拟环境和板端测试工程以全部打包到了虚拟机,需要的可以通过网盘获取:链接:https://pan.baidu.com/s/1rg5EopPmctB-0kQAG7fm0Q 提取码:98k9 

yolov10的环境搭建和测试

获取yolov10的工程:GitHub - THU-MIG/yolov10: YOLOv10: Real-Time End-to-End Object Detection

搭建环境:

cd /home/kkx3/wyj/yolov10/
git clone https://github.com/THU-MIG/yolov10.git
conda create -n yolov10 python=3.9
conda activate yolov10
cd yolov10
pip install -r requirements.txt
pip install -e . -i https://pypi.tuna.tsinghua.edu.cn/simple

测试

#测试
yolo predict model=model/yolov10s.pt

1、模型转换(onnx)

#转onnx模型
yolo export model=model/yolov10s.pt format=onnx opset=11 simplify

由于原模型的后处理部分存在在X3板端运行报错的问题需要修改源码,修改如下

#修改文件路径
/home/kkx3/wyj/yolov10/yolov10-main/ultralytics/nn/modules/head.py

修改如下(使用一下代码替换原forward函数)

    def forward(self, x):
        one2one = self.forward_feat([xi.detach() for xi in x], self.one2one_cv2, self.one2one_cv3)
        if not self.export:
            one2many = super().forward(x)

        if not self.training:
            one2one = self.inference(one2one)            
            if not self.export:
                return {"one2many": one2many, "one2one": one2one}
            else:
            	return one2one.permute(0, 2, 1)
                #assert(self.max_det != -1)
                #boxes, scores, labels = ops.v10postprocess(one2one.permute(0, 2, 1), self.max_det, self.nc)
                #return boxes, scores, labels
                #return torch.cat([boxes, scores.unsqueeze(-1), labels.unsqueeze(-1).to(boxes.dtype)], dim=-1)
        else:
            return {"one2many": one2many, "one2one": one2one}    

2、x3板端模型转换和搭建环境

将上述转换出来的onnx模型复制到X3的模型转换路径下

#模型复制的秒路径
/home/kkx3/wyj/x3/TransModel/horizon_model_convert_sample/01_common/model_zoo/mapper/detection/yolov10_onnx_optimized/yolov10s.onnx

搭建模型转换的环境和修改配置文件完成模型转换

cd /home/kkx3/wyj/x3/TransModel/horizon_model_convert_sample/04_detection/08_yolov10s/mapper
conda activate x3model

模型转换运行脚本01_check.sh

修改文件、配置模型路径

运行脚本

bash 01_check.sh

模型转换运行脚本02_preprocess.sh

修改文件、配置模型路径(当前无需修改)

运行脚本

bash 02_preprocess.sh

模型转换运行脚本03_build.sh

修改文件、配置模型路径

运行脚本

bash 03_build.sh

模型输出路径

/home/kkx3/wyj/x3/TransModel/horizon_model_convert_sample/04_detection/08_yolov10s/mapper/model_output/yolov10s_640x640_nv12.bin

将模型复制到板端就可以测试了

3、python版本测试

测试工程复制到板端

开始测试

cd /app/pydev_demo/09_yolov10_sample
./test_yolov10.py

测试结果

4、c++版本测试

测试工程复制到板端

开始测试

cd /app/cdev_demo/bpu_yolov10/src
make clean && make
cd /app/cdev_demo/bpu_yolov10/src/bin
 ./sample -f ./yolov10s_640x640_nv12.bin -m 0

测试效果

yolov10在地平线旭日X3派上的测试视频

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值