Implementación de YOLOv5 en C++ para Windows (usando LibTorch)

Implementación de YOLOv5 en C++ para Windows (usando LibTorch)

prefacio

Debido a las necesidades del proyecto, queremos implementar YOLOv5 en programas C++ en Windows. Este artículo usa LibTorch para implementar YOLOv5 en Visual Studios 2019.

contenido de preparación

Primero, descargamos y preparamos el contenido requerido:

Entorno de configuración

Configure el entorno OpenCV y LibTorch, el contenido de configuración de los dos es aproximadamente el mismo (la siguiente dirección de ruta se ajusta de acuerdo con la ruta de instalación personal).

  1. Configure las variables de entorno del sistema:
    agregue las rutas de OpenCV y LibTorch respectivamente en las variables de entorno del sistema
    Opencv:
    D:\opencv\build\x64\vc15\bin
    Libtorch:
    D:\libtorch\lib

  2. VS2019 crea un nuevo proyecto vacío de C++;

  3. Propiedades del proyecto -> Directorios VC++ -> Incluir directorios:
    Opencv:
    D:\opencv\build\include
    D:\opencv\build\include\opencv2
    Libtorch:
    D:\libtorch\include
    D:\libtorch\include\torch\csrc\ api\incluye

  4. Propiedades del proyecto -> Directorios de VC++ -> Directorios de biblioteca:
    Opencv:
    D:\opencv\build\x64\vc15\lib
    Libtorch:
    D:\libtorch\lib

  5. Propiedades del proyecto -> Enlazador -> Entrada -> Dependencias adicionales:
    Opencv: Coloque el archivo .lib
    en el archivo D:\opencv\build\x64\vc15\lib en las dependencias adicionales, dos versiones y la versión de su proyecto Consistente: opencv_world452d. lib( Debug ) opencv_world452.lib( Release ) Libtorch: Coloque todos los archivos .lib en D:\libtorch\lib en las dependencias adicionales.



  6. Propiedades del proyecto -> C/C++ -> Directorios de inclusión adicionales:
    D:\opencv\build\include
    D:\libtorch\include
    D:\libtorch\include\torch\csrc\api\include

  7. Propiedades del proyecto -> C/C++ -> Comprobación general de SDL a No

  8. Propiedades del proyecto -> C/C++ -> Idioma -> Conforme al modo Conforme al modo Cambiar a No

  9. Propiedades del proyecto -> Depurar -> Entorno:
    Opencv:
    D:\opencv\build\x64\vc15\lib;
    Libtorch:
    D:\libtorch\lib;

  10. Pruebe OpenCV:
    ejecute el siguiente código para verificar si OpenCV está configurado correctamente:

    #include <opencv2/opencv.hpp>
    int main() {
          
          
    	cv::Mat img = cv::imread("图片路径");
    	cv::imshow("", img);
    	cv::waitKey(0);
    	return 0;
    }
    
  11. Pruebe LibTorch:
    ejecute el siguiente código para verificar que LibTorch esté configurado correctamente:

    #include <torch/torch.h>
    #include <iostream>
    int main() {
          
          
    	std::cout << "cuda::is_available():" << torch::cuda::is_available() << std::endl;
    	torch::Tensor tensor = torch::rand({
          
           3, 4 });
    	std::cout << tensor << std::endl;
    }
    

compilar

  1. Abra CMakeLists.txt en Libtorch-Yolov5, indique la ruta de OpenCV y LibTorch en las siguientes dos líneas:
    set(OpenCV_DIR D:/opencv/build)
    set(Torch_DIR D:/libtorch/share/cmake/Torch/)
  2. abrir cmd
    mkdir build	# 建立build文件夹
    cd build		# 进入build文件夹
    cmake ..		# 编译
    

Detección YOLOv5

  • Cambie el nombre de categoría en coco.names en D:/libtorch-yolov5/weights a su propio nombre de categoría de conjunto de datos, y el archivo de peso entrenado se puede colocar en esta carpeta (el archivo de peso .pt primero usa export.py de yolov5 en un .torchscript archivo .pt);
  • Los archivos en D:/libtorch-yolov5/src son la función de detección detector.cpp y la función principal main.cpp, y el contenido específico se puede cambiar según las necesidades individuales.

Posibles problemas

  • No se puede abrir el archivo fuente opencv2/opencv.hpp o torch/torch.h: el entorno no está bien configurado.
  • Los archivos OpenCV o LibTorch no se pueden encontrar durante la compilación: compruebe si la dirección de la ruta en CMakeLists.txt se completó correctamente, preste atención a la dirección de la barra inclinada, si hay símbolos de comentario y si se agrega a la variable de entorno del sistema.
  • No se encontró CUDA al compilar: CUDA no se instaló correctamente o no se agregó a las variables de entorno del sistema.
  • Velocidad de inferencia lenta o carga de modelo lenta: compruebe si la versión de pytorch y la versión de CUDA son correctas.

Supongo que te gusta

Origin blog.csdn.net/lucifer479/article/details/120743124
Recomendado
Clasificación