17
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

WindowsでYOLOのデモ

Posted at

YOLO

YOLOとはリアルタイム物体検出アルゴリズムで、「You only look once」の頭文字を取って「YOLO」と呼ばれています。
YOLOはDarknetというフレームワークで開発されています。
アルゴリズムの詳細は論文を検索してみてください。

ビルド環境構築

Visual Studio 2017

C++によるデスクトップ開発 をインストールします。

darknet_vs2017_cpp_develop.png

CUDA Toolkit/cuDNN

下記バージョンの CUDA Toolkit、cuDNNをインストールします。
インストール方法につていは「CUDA Toolkit」あたりで検索すると解説サイトがヒットすると思います。
【参考】NVIDIA CUDA toolkit on Windows

  • CUDA Toolkit 10.1
  • cuDNN 7.4

OpenCV

OpenCV からビルド済みの OpenCV をダウンロードします。
2020年7月現在、最新版は 4.x.x ですが 3.4.x を入手します。
Windows版は自己解凍型の実行ファイルで配布されていますので、入手後、とりあえず下記のフォルダに展開します。

C:\tools\opencv

で、下記フォルダパスを環境変数 Path に登録しておきます。

C:\tools\opencv\build\x64\vc14\bin

Darknetのビルド

  1. ソースコードの入手
    AlexeyAB/darknet から Darknet のソースコード一式を入手します。
    下記の手順は C:\work にGitリポジトリを clone したことを前提としています。

    > cd C:\work
    > git clone https://github.com/AlexeyAB/darknet.git
    
  2. Visual Studio 2017の起動
    darknet.sln(c:\work\darknet\build\darknet\darknet.sln)をVS2017 プロジェクトを開きます。

  3. プロジェクトの設定

  • ビルドの依存関係設定
    • プロジェクトを右クリック ⇒ ビルドの依存関係 ⇒ ビルドのカスタマイズ を開きます。
    • CUDA 10.1にチェックを入れ、「OK」ボタンを押下します。
      darknet_vs2017_build_dependence.png
  • 構成とプラットフォームの変更
    • メニューから ビルド ⇒ 構成マネージャー を開きます。
      • 構成・プラットフォームで下記を選択します。
        • 構成:Release
        • プラットフォーム: x64
          darknet_vs2017_build_構成マネージャ.png
          - インクルードディレクトリの設定
    • プロジェクトを右クリック ⇒ プロパティ を開きます。
    • 「C/C++」→「全般」→「追加のインクルードディレクトリ」で以下を追加します。
      • C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\bin
      • C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\include
      • C:\tools\cuda\include
      • C:\tools\opencv\build\include
        - ライブラリディレクトリの設定
    • プロジェクトを右クリック ⇒ プロパティ を開きます。
    • 「リンカー」→「全般」→「追加のライブラリディレクトリ」で以下を追加します。
      • C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\lib
      • C:\tools\cuda\lib\x64
      • C:\tools\opencv\build\x64\vc14\lib

上記設定後、ビルドを実行すると、C:\work\darknet\build\darknet\x64 にdarknet.exeが生成されます。

darknet.exeの使い方

darknet.exe を使用するためには YOLO のバージョンに対応した weights ファイルを入手する必要があります。
主なファイルは下記のリンク先ファイルになります。

画像ファイルに映る物体の検出

darknet のソースの中にサンプルの写真が何枚か入っていますので、それを利用して動作確認ができます。

  • YOLO v3の場合

    > darknet detector test cfg/coco.data cfg/yolov3.cfg yolov3.weights data/dog.jpg
    

    darknet_yolov3_dog.jpg.png

  • YOLO v4の場合

    > darknet detector test cfg/coco.data cfg/yolov4.cfg yolov4.weights data/dog.jpg
    

    darknet_yolov4_dog.jpg.png
    車の前方にあるゴミ捨て?はpottedplant(鉢植)に見えなくもない?

カメラに映る映像のリアルタイム物体検出

PCにカメラを付けると、カメラの映像を入力にして物体検出をしてくれます。
GPU無しで実行するのは結構きついです。
ちなみに、GeForce 1050では 約7フレーム/秒 くらいでした。

> darknet detector demo cfg/coco.data cfg/yolov4.cfg yolov4.weights

MP4動画映像のリアルタイム物体検出

> darknet detector demo cfg/coco.data cfg/yolov4.cfg yolov4.weights -thresh 0.5 data/test.mp4 -dont_show 1 -out_filename result/test_out.mp4

参考サイト

17
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?