Tutorial de implementación de YOLOv8 Tensorrt Python/C++

Video didáctico de la estación B

https://www.bilibili.com/video/BV1Pa4y1N7HS

Dirección del almacén de Github

https://github.com/Monday-Leo/YOLOv8_Tensorrt

Introducción

  • Basado en Tensorrt para acelerar Yolov8 , este proyecto adopta la solución ONNX a Tensorrt
  • Admite Windows10 y Linux
  • Compatibilidad con Python/C++

YOLOv8

Ambiente

  • Tensor 8.4.3.
  • Cuda 11.6 Cudnn 8.4.1
  • onx 1.12.0

Inicio rápido

Instale el almacén yolov8 y descargue el modelo oficial.

pip install ultralytics==8.0.5
pip install onnx==1.12.0
# download offical weights(".pt" file)
https://github.com/ultralytics/assets/releases/download/v0.0.0/yolov8n.pt

Use el comando oficial para exportar el modelo ONNX .

yolo mode=export model=yolov8n.pt format=onnx dynamic=False

Use este almacén v8_transform.py para convertir el modelo oficial de ONNX , y yolov8n.transd.onnx se generará automáticamente.

python v8_transform.py yolov8n.onnx

Copie el modelo onnx generado en la carpeta tensorrt/bin y use el trtexec oficial para convertir el modelo onnx. FP32 predice y borra --fp16los parámetros .

trtexec --onnx=yolov8n.transd.onnx --saveEngine=yolov8n_fp16.trt --fp16

C++

Configure el entorno Opencv y Tensorrt ; para obtener más información, consulte https://github.com/Monday-Leo/Yolov5_Tensorrt_Win10

Abra el CMakeLists.txt de este almacén , modifique las rutas Opencv y Tensorrt , y luego cmake.

#change to your own path
##################################################
set(OpenCV_DIR "E:/opencv/build")  
set(TRT_DIR "E:/TensorRT-8.4.3.1")  
##################################################

Coloque la imagen de predicción zidane.jpg y el modelo yolov8n_fp16.trt en la carpeta exe , ejecute el programa directamente, sin predicción de calentamiento, el tiempo de la primera predicción no es preciso , modifique el código para realizar el calentamiento usted mismo si desea una sincronización precisa. Si desea modificar la ruta del modelo y la ruta de la imagen, modifique el programa principal.

int main() {
	std::string img_path = "zidane.jpg";
	std::string model_path = "yolov8n_fp16.trt";
	single_inference(img_path,model_path);
	return 0;
}

Pitón

Haga clic con el botón derecho en yolov8 en el proyecto de C++ justo ahora, haga clic en Propiedades y modifíquelo a una biblioteca de vínculos dinámicos .

Copie el python_trt.py de este almacén en la carpeta dll.

Establezca la ruta del modelo, la ruta dll y la ruta de la imagen que desea predecir, preste especial atención a las necesidades de la ruta del modelo para agregar b ''

det = Detector(model_path=b"./yolov8n_fp16.trt",dll_path="./yolov8.dll")  # b'' is needed
img = cv2.imread("./zidane.jpg")

Referencia

https://github.com/ultralytics/ultralytics

https://github.com/shouxieai/inferir

Supongo que te gusta

Origin blog.csdn.net/weixin_45747759/article/details/130341118
Recomendado
Clasificación