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 --fp16
los 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")