papipapitanのブログ

新製品開発が得意なエンジニアで、今はAIをやってます。釣りと車が大好き。

YoloV3/YoloV4をWindows10PCで動かす為の設定方法...備忘録

Cmake とVS2017でビルド   

  • Windows10環境への導入準備
    とりあえずgitをインストールしていない場合はインストールしておきましょう。
    https://gitforwindows.org/ からダウンロードできます。詳細は、紹介サイトが沢山あるので割愛します。
    デフォルトのままインストールして問題ないと思いますが、IncreadyBuildという常駐ソフトも一緒にインストールされる様なので、不要な場合はアンインストールした方がいいかも。常駐型なので。
    このソフトはコンパイル時にネット上の他のPCの力も借りる事が可能になるソフトの様ですが、そんな重い物はコンパイルしないので私は不要。
    C:\Program Files(x86)\IncrediBuild\Install.exe を実行するとアンインストールできます。

    ここで私が大はまりしたポイント
    各アプリは相互依存関係にある為、インストールの順番を守る事! これ絶対。
      既に必要なアプリがインストールされている場合は、念のため上書きインストールするのが無難な気がします。

  • インストール
    1. インストール・フォルダの用意
      Yoloをインストールしたいフォルダを作成し(ここではD:¥Yoloで説明)、コマンドプロンプト(管理者として実行)ウィンドウを開いて、カレントを(例)D:\yoloにしておく。
      コマンドプロンプトのウィンドウは開けたまま放置でOK

      Visual Studio Community 2017 のインストール
      まずマイクロソフトのアカウントが必要になるので用意。
      https://docs.microsoft.com/ja-jp/visualstudio/releasenotes/vs2017-relnotes の Visual Studio 2017をダウンロードする を選択してまずはインストーラーをインストールして起動。
      VS2017インストーラーでのC++の次の項目を選択、更に言語パックで「英語」「日本語」の二つを選択してインストールする。
      そこそこ時間がかかります。

      f:id:papipapitan:20210319114531p:plain

      Visual Studio Community 2017 インストーラー 


    2. CUDAのインストール
      https://developer.nvidia.com/cuda-10.2-download-archive からCUDA10.2
      をダウンロードしてデフォルト設定でインストール。
      C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA¥2 にインストールされます。この場所は後で環境変数に設定します。
      それと今のYoloV3/YoloV4にはcuda10.2が良いみたいです。
    3. cuDNNのインストール
      https://developer.nvidia.com/rdp/cudnn-download からcuDNN Library for Windows10をダウンロードして、取得したcuDNN-10.2.windows10-x64-v8.1.1.33.zipを展開し、CUDAがあるC:¥ProgramFiles¥Nvidia GPU Computing Toolkit¥cuda¥2内の次のフォルダ(同じ名前のフォルダ)にコピーする。
      特にインストールとかはありません。
        cuda\10.2   ------- bin     ==>  bin
                      ----- include      ==>  include
                      ----- lib --- x64  ==>  lib\x64

      f:id:papipapitan:20210319114652p:plain

      cuDNN


    4. OpenCVのインストール
      https://opencv.org/releases/page/3/ からOpenCv-2.4.13.6をダウンロードしてインストール。
      インストール先は何処でも良いのですが、これも後で環境変数に入れ込むので場所を把握しておく。
      バージョンはx.xでも動くらしいのですが、私は無難にv2.4を選択しました。
      インストール時に例えばD:\Yoloを指定すると、その下にopenCVフォルダが自動作成されそこにインストールがされます。
    5. Cmakeのインストール
      https://cmake.org/download/ からcmake-3.19.6-win64-x64.msiをダウンロード。
      まだv20.xは安定板ではない様なのでv3.19.6を使用しました。
      デフォルト設定で好みの場所にインストールして構いませんが、インストー時のオプションで
        〇 Add Cmake to the System PATH for All usersを選択する。
      を選択すると面倒がないでしょう。特に何も邪魔しないし。
    6. システム環境変数を追加設定する。
      環境変数の設定方法は、沢山ヒットするサイトがあると思うのでそちらをご参考に。
      CUDA_BIN_PATH :
      C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2
      CUDA_TOOLKIT_ROOT_DIR :
         C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2
      OPENCV_DIR :  インストール先をフルパスで
      VCPKG_DEFAULT_TRIPLET : x64-windows
      VCPKG_ROOT : vcpkgのインストール先\vcpkg <==  7. のvcpkgをインストール予定のフォルダ
      PATHに OpenCVのインストール先\openCV\build\x64\vc14\bin を追加

    7. Vcpkgのインストール
      開けておいたコマンドプロンプト(例)D:\Yolo)から、git clone https://github.com/Microsoft/vcpkg.git を実行すると、D:¥Yolo¥vcpkgにインストールされます。インストール先は任意ですが、設定した環境変数に合わせて。その後順次、次のコマンドを実行する。
      cd vcpkg(vcpkgのインストール先をカレントにして…)
      Bootstarap-vcpkg.bat
      vcpkg integrate install
      vcpkg install curl
      vcpkg install curl:x86-windows
      vcpkg install curl:x64-windows
      vcpkg install curl:x64-windows-stati
      ※ VS2017の言語パックで英語を選択し忘れていると、エラーになります。

      f:id:papipapitan:20210319114752p:plain

      vcpkg


    8. Darknet(YoloV4)のクローニング
      コマンドプロンプトD:¥Yoloに戻りクローニングする。
      git clone https://github.com/AlexeyAB/darknet

    9. Cmakeで環境構築
      WindowsからCmake-guiを実行し、
        Where is the source code : D:¥Yolo¥darknet
        Where to build the binaries : D:\Yolo\darknet\build
      を指定して、[Configure]を実行。VisualStudis2017とx64を選択し[Finish]で実行。
      暫くすると次ページの画面となり、エラー発生がなければ[Generate]する。
      この処理は結構時間がかかります。ゆっくりコーヒーが飲めるくらい。
      特にエラーが無くても画面が赤くなることがあるので、良く吐き出されるコメントを見て騙されない様に。

      ※ PC環境により多少変化がありZED_SDK not Foundとなる場合があります。
      その場合は https://www.stereolabs.com/developers/release/ からCUDAのバージョンに合わせた CUDA 10.2   ZED SDK for Windows10 を選択してダウンロード,実行。
      このインストールには再起動が必要となる。

      f:id:papipapitan:20210319114830p:plain

      ZED SDK

      f:id:papipapitan:20210319115932p:plain

      Cmake


      Cmake後、D:¥Yolo¥darknet¥build¥darknet.slnが出来ていれば成功。

    10. VisualStudio2017でのコンパイル
      構成を[Release],プラットフォームを[x64]に選択。
      メニューからソリューションのビルドを選択して、darknetをビルドする。
      下の例だとE:¥Yolo¥darknet¥build¥Release¥darknet.exeが完成する。

      f:id:papipapitan:20210319114932p:plain



    11. 動作確認(コマンドプロンプトD:Yolo\darknetから実行)
      weightファイルは次から取得できます。
      どちらもコマンドプロンプト(例)D:¥Yolo¥darknetをカレント)にして実行する。
      YoloV3 : wget https://pjreddie.com/media/files/yolov3.weights
      YoloV4 :https://github.com/AlexeyAB/darknet/releases/download/darknet_yolo_v3_optimal/yolov4.weights

      << 実行テスト >>
      build\Release\darknet.exe detector test cfg/coco.data cfg/yolov4.cfg yolov4.weights -thresh 0.25 -ext_output data/dog.jpg
               (2行に見えますが、1行に書き込む。)

      f:id:papipapitan:20210319115002p:plain

      実行テスト


      こちらの環境ではこの予測実行に YoloV3≒17msec YoloV4≒28msec かかりました。          (CPU:i9-9900/GPU:RTX2080Ti)