Windows 用 C++ への YOLOv5 のデプロイメント (LibTorch を使用)

Windows 用 C++ への YOLOv5 のデプロイメント (LibTorch を使用)

序文

プロジェクトのニーズにより、Windows 上の C++ プログラムに YOLOv5 を展開したいと考えています。この記事では、LibTorch を使用して YOLOv5 を Visual Studios 2019 に展開します。

準備内容

まず、必要なコンテンツをダウンロードして準備します。

構成環境

OpenCVとLibTorchの環境を設定します。両者の設定内容はほぼ同じです(以下のパスアドレスは個人のインストールパスに合わせて調整します)。

  1. システム環境変数の設定:
    システム環境変数に OpenCV と LibTorch のパスをそれぞれ追加します。
    Opencv:
    D:\opencv\build\x64\vc15\bin
    Libtorch:
    D:\libtorch\lib

  2. VS2019 は新しい C++ 空のプロジェクトを作成します。

  3. プロジェクトのプロパティ -> VC++ ディレクトリ -> インクルード ディレクトリ:
    Opencv:
    D:\opencv\build\include
    D:\opencv\build\include\opencv2
    Libtorch:
    D:\libtorch\include
    D:\libtorch\include\torch\csrc\ API\含める

  4. プロジェクトのプロパティ -> VC++ ディレクトリ -> ライブラリ ディレクトリ:
    Opencv:
    D:\opencv\build\x64\vc15\lib
    Libtorch:
    D:\libtorch\lib

  5. プロジェクトのプロパティ -> リンカー -> 入力 -> 追加の依存関係:
    Opencv
    : D:\opencv\build\x64\vc15\lib ファイル内の.libファイルを追加の依存関係 (2 つのバージョンとプロジェクト バージョンの一貫性:
    opencv_world452d) に置きます。 lib( Debug )
    opencv_world452.lib( Release )
    Libtorch:
    D:\libtorch\lib 内のすべての.libファイルを追加の依存関係に置きます。

  6. プロジェクト プロパティ -> C/C++ -> 追加のインクルード ディレクトリ:
    D:\opencv\build\include
    D:\libtorch\include
    D:\libtorch\include\torch\csrc\api\include

  7. プロジェクトのプロパティ -> C/C++ -> 一般 SDL チェックを「いいえ」に設定

  8. プロジェクトのプロパティ -> C/C++ -> 言語 -> モードに準拠する モードに準拠する をいいえに変更します。

  9. プロジェクトのプロパティ -> デバッグ -> 環境:
    Opencv:
    D:\opencv\build\x64\vc15\lib;
    Libtorch:
    D:\libtorch\lib;

  10. OpenCV をテストする:
    次のコードを実行して、OpenCV が正しく構成されているかどうかを確認します。

    #include <opencv2/opencv.hpp>
    int main() {
          
          
    	cv::Mat img = cv::imread("图片路径");
    	cv::imshow("", img);
    	cv::waitKey(0);
    	return 0;
    }
    
  11. LibTorch のテスト:
    次のコードを実行して、LibTorch が正しく構成されていることを確認します。

    #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;
    }
    

コンパイル

  1. Libtorch-Yolov5 で CMakeLists.txt を開き、次の 2 行に OpenCV と LibTorch のパスを指定します:
    set(OpenCV_DIR D:/opencv/build)
    set(Torch_DIR D:/libtorch/share/cmake/Torch/)
  2. コマンドを開く
    mkdir build	# 建立build文件夹
    cd build		# 进入build文件夹
    cmake ..		# 编译
    

YOLOv5 の検出

  • D:/libtorch-yolov5/weights の coco.names のカテゴリ名を独自のデータセット カテゴリ名に変更すると、トレーニングされた重みファイルをこのフォルダーに配置できます (.pt 重みファイルは、最初に yolov5 の export.py を .torchscript に使用します) .pt ファイル);
  • D:/libtorch-yolov5/src 内のファイルは検出関数 detecter.cpp とメイン関数 main.cpp であり、具体的な内容は個々のニーズに応じて変更できます。

考えられる問題

  • ソース ファイル opencv2/opencv.hpp または torch/torch.h を開けません:環境が適切に構成されていません。
  • コンパイル中に OpenCV または LibTorch ファイルが見つからない: CMakeLists.txt 内のパス アドレスが正しく入力されているかどうかを確認し、スラッシュの方向、コメント記号があるかどうか、およびシステム環境変数に追加されているかどうかに注意してください。
  • コンパイル時に CUDA が見つかりません: CUDA が正しくインストールされていないか、システム環境変数に追加されていません。
  • 推論速度が遅い、またはモデルの読み込みが遅い: pytorch のバージョンと CUDA のバージョンが対応して正しいかどうかを確認します。

おすすめ

転載: blog.csdn.net/lucifer479/article/details/120743124