当前位置:   article > 正文

[笔记]darknet(.weights)—>onnx—>.engine_your onnx model has been generated with int64 weig

your onnx model has been generated with int64 weights, while tensorrt does n

利用darknet训练YOLOv4,利用TensorRT部署到Jetson平台(用的是Xavier,Jetpack4.5)。第0,1,2步是在Station上完成的,第3步是在Xavier上完成的。

0.利用darknet训练YOLOv4,生成.weights权重。
1.先在pytorch的虚拟环境中安装onnxruntime。利用https://github.com/Tianxiaomo/pytorch-YOLOv4中的demo_darknet2onnx.py脚本(根据实际情况做修改,参考README.md),将在上一步训练好的权重和.cfg文件复制到该项目中,再找一张测试用图,然后执行

在这里插入图片描述

python demo_darknet2onnx.py cfg/yolov4.cfg YOLOv4_darknet_weights/yolov4.weights 000000002149.jpg -1
  • 1

2.因为现在将生成好的.onnx复制到Xavier上,执行trtexec会报错:
[TRT] onnx2trt_utils.cpp:198: Your ONNX model has been generated with INT64 weights, while TensorRT does not natively support INT64. Attempting to cast down to INT32.
所以需要先简化.onnx,参考https://blog.csdn.net/weixin_41010198/article/details/107712487
安装onnx-simplifier

pip3 install onnx-simplifier
  • 1

然后执行

python3 -m onnxsim yolov4_-1_3_608_608_dynamic.onnx yolov4_-1_3_608_608_dynamic_sim.onnx --dynamic-input-shape --input-shape 1,3,608,608
  • 1

这样就是成功了,将yolov4_-1_3_608_608_dynamic_sim.onnx拷贝到Xavier上。
在这里插入图片描述
3.将yolov4_-1_3_608_608_dynamic_sim.onnx拷到Xavier中,执行trtexec看一下报不报错
(Jetpack4.5带有TensorRT7.1.3,如果这里找不到trtex命令,是因为没有添加环境变量)

trtexec --onnx=yolov4_-1_3_608_608_dynamic_sim.onnx --minShapes=input:1x3x608x608 --optShapes=input:4x3x608x608 --maxShapes=input:8x3x608x608 --saveEngine=YOLOv4.engine --workspace=2048 --fp16
  • 1

在这里插入图片描述依然会出现 warning [W]
在这里插入图片描述然后在这要等好久
在这里插入图片描述等呀等,没白等,PASSED!
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/423891
推荐阅读
相关标签
  

闽ICP备14008679号