.方法1:darknet 2 onnx onnx 2 tensorrt(.engine)
1、获取转换工具:
github地址:
tensorrt_inference/Yolov4 at master · linghu8812/tensorrt_inference · GitHub
2、darknet 转换 onnx
python3 export_onnx.py --cfg_file cfg/yolov3-tiny.cfg --weights_file yolov3-tiny.weights --output_file yolov3-tiny.onnx --strides 32 16 --neck FPN
其中:--cfg_file --weights_file 后面跟自己训练好的配置和模型 --output_file指定生成文件目录。
3、修改config.yam文件。将里面的内容替换为自己的路径和参数。
mkdir build && cd build
cmake ..
make
tip:
pip install --upgrade onnx
pip install --upgrade protobuf
pip install pillow
sudo apt install protobuf-compiler
方法2:darknet 2 wts 2 rensorrt
1、获取转换工具:
git clone https://github.com/wang-xinyu/tensorrtx.git
git clone -b archive https://github.com/ultralytics/yolov3.git
pip install -r requirements.txt
2、进入yolov3路径下,生成wts
python gen_wts.py yolov3-tiny.weights
3、生成.engine (可在jetson设备上执行)
将第二步生成的wts文件放到tensorrtx/yolov3-tiny/
修改yololayer.h line13
CLASS_NUM
INPUT_H
INPUT_W 等几个参数。
mkdir build
cd build
cmake ..
make
sudo ./yolov3-tiny -s
4、验证
./yolov3-tiny -d ../samples
5、部署到deepstream。
对于jetson-nano--jetson-tx2等不支持int8的,到这一步已经完成。可以在deepstream中使用
对于jetson nx jetson xavier 等支持Int8的,将engine文件转换成Int8可以提高效率。