海思Hi3516DV300---部署yolov5检测+Sort跟踪算法

1. 部署yolov5检测+Sort跟踪算法—统计地铁中人流量(双向计数+tof相机)

先用python—yolov5s训练一个best.pt模型
我们与大家部署的更多一个跟踪Sort算法

2. yolov5s模型转换onnx模型

  1. pip安装onnx和onnx-simplifier
  2. pip install onnx
  3. pip install onnx-simplifier
  4. git clone https://github.com/ultralytics/yolov5.git
  5. 训练自己的模型步骤参考yolov5官方介绍,训练完成后我们得到了一个模型文件
  6. cd yolov5
  7. python models/export.py --weights 训练得到的模型权重路径 --img-size 训练图片输入尺寸
  8. python -m onnxsim onnx模型名称 yolov5s-simple.onnx 得到最终简化后的onnx模型

3. 在虚拟机中安装caffe (caffe模型的转化是在虚拟机中完成的)

有点复杂,拷贝我的虚拟机。在我的笔记本上,我已经装好了。
密码:123

4. onnx模型转换caffe模型

  1. git clone https://github.com/Wulingtian/yolov5_onnx2caffe.git
  2. 解压 yolov5_onnx2caffe
  3. cd yolov5_onnx2caffe
  4. vim convertCaffe.py
  5. 设置onnx_path(上面转换得到的onnx模型),prototxt_path(caffe的prototxt保存路径),caffemodel_path(caffe的caffemodel保存路径)
  6. python convertCaffe.py 得到转换好的caffe模型(可得到一个.prototext文件和一个.caffemodel文件)

5. caffe模型转换wk模型

1.链接: 华为Hi3516DV300 系列芯片平台模型转换,caffe 转NNIE wk注意事项.
2. caffe模型转换wk模型本质:利用.prototext文件和一个.caffemodel文件生成.wk文件
3. 步骤: 按照上述链接新建工程—>双击左边的最下的.cfg文件
在这里插入图片描述
4. cfg配置如下:
在这里插入图片描述
5. 注意将.cfg文件中compile_mode = 0 改成compile_mode = 1
在这里插入图片描述
6. 点击执行 需要一些时间,这取决于你在Ruyi studio 用了多少张图片

6. 在虚拟机中利用RuyiStudio生成的.wk文件转换成model.o文件(最终目标)

  1. mkdir build
  2. cd build
  3. cmake
  4. make
  5. make之后可生成一个可执行文件yolov5_sample
    如图下:
    在这里插入图片描述

7. 可以用MobaXterm(或者Shell)连接上海思Hi3516DV300开发板

  1. mkdir scw
  2. cd scw
  3. 将yolov5_sample 和检测的视频放在同一个文件夹(scw)下
  4. 并对文件夹scw授权,执行命令:chmod -R 777 scw
  5. 执行可执行文件yolov5_sample: ./yolov5_sample

8. 计数平均准确度超过95%。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

9. 参考文献

链接: 基于Caffe格式部署YOLOV5模型.

### 海思3516平台上的YOLO模型部署与优化 #### 下载并准备YOLOv8官方代码 为了在海思3516平台上部署YOLO模型,首先需要获取YOLOv8的官方源码。这一步骤确保了后续开发环境的一致性和稳定性[^1]。 ```bash git clone https://github.com/ultralytics/ultralytics.git cd ultralytics/ pip install -r requirements.txt ``` #### 修改模型结构适应硬件特性 针对海思3516DV300的特点,在转换YOLOv8-obb至该平台的过程中加入了DFL(Distributed Focal Loss)模块。这种修改不仅简化了后期处理逻辑,还提高了整体性能效率[^2]。 #### 图像预处理调整 考虑到PyTorch框架默认采用等比例缩放而不填充灰边的方式进行图像尺寸变换,对于特定分辨率如\(640 \times 640\)的情况,则需按照32像素单位来微调最终大小。此操作有助于保持原始数据的比例关系不变的同时满足网络输入规格的要求[^4]。 ```python import cv2 def preprocess_image(image_path, target_size=(640, 640)): img = cv2.imread(image_path) h, w = img.shape[:2] ratio = min(target_size[0]/w, target_size[1]/h) new_w, new_h = int(w*ratio), int(h*ratio) resized_img = cv2.resize(img, (new_w, new_h)) padded_img = np.zeros((target_size[1], target_size[0], 3), dtype=np.uint8) dw, dh = (target_size[0]-new_w)//2, (target_size[1]-new_h)//2 padded_img[dh:new_h+dh, dw:new_w+dw, :] = resized_img return padded_img / 255. ``` #### 模型量化配置 当涉及到模型量化时,需要注意的是训练阶段使用的RGB通道顺序以及相应的归一化参数应当被正确映射到量化过程之中。这样做可以保证量化后的模型依然能够维持较高的精度水平。 #### 推理引擎适配 最后,在完成上述准备工作后,还需参照具体项目中的后端实现细节来进行必要的接口对接工作。特别是关于`anchor_grid`这一属性的应用场景下,务必确认其定义方式与实际检测层相匹配。
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值