任务目标
- 将训练好的yolov7.pt转换为yolov7.onnx。
- 将yolov7.onnx转换为yolov7.rknn。
实验过程
说明:本次实验仅为模型转换步骤的验证,所以不涉及模型训练部分。
- 首先去官网下载源码和yolov7.pt文件。
源码地址:https://github.com/WongKinYiu/yolov7.git
模型地址:https://github.com/WongKinYiu/yolov7/releases/download/v0.1/yolov7.pt
- 在models/yolo.py中将Detect类中的前向传播过程由:
def forward(self, x):
# x = x.copy() # for profiling
z = [] # inference output
self.training |= self.export
for i in range(self.nl):
x[i] = self.m[i](x[i]) # conv
bs, _, ny, nx = x[i].shape # x(bs,255,20,20) to x(bs,3,20,20,85)
x[i] = x[i].view(bs, self.na, self.no, ny, nx).permute(0, 1, 3, 4, 2).contiguous()
if not self.training: # inference
if self.grid[i].shape[2:4] != x[i].shape[2:4]:

本文介绍了如何将预训练的YOLOv7.pt模型通过rknntoolkit2转换为RK3588平台适用的RKNN模型。首先,从GitHub获取源码和模型文件,然后在yolo.py中修改Detect类的前向传播过程,以避免ONNX转换时出错。接着,运行export.py生成yolov7.onnx模型。最后,在Linux环境下安装rknntoolkit2,将onnx模型复制到例子目录并调整test.py,运行后完成转换。

1万+

被折叠的 条评论
为什么被折叠?



