[やってみる]YOLOを動かしてみよう

 YOLO: Real-Time Object Detection

YOLOを動かしてみよう


https://pjreddie.com/darknet/yolo/

YOLO(You Look Only Onse)は、リアルタイムオブジェクト認識のシステムです。これをopenFrameworks から動かしてみましょう。 この記事[openFrameworksでOpenCVのYOLOを動かす] を参考にまとめています。

まずはセットアップ

試した環境
-Mac OSX 10.12.6
-Xcode 9.2
-Openframeworks 0.10.0

1.ターミナル(Terminal)を起動しておく

ターミナルは、UNIX端末エミュレータです。今回いくつかのソフトウェアをインストールするするのに使用します。
アプリケーション > ユーティリティ の中に入っています。 起動するとこのようなウィンドウが開きます。ここに様々なコマンドを入力して操作を行っていきます。

Homebrewのインストール


まずは、Homebrewをインストールします。Homebrewは、macosのソフトウェアの導入を単純化するパッケージ管理システムです。

https://brew.sh/index_ja

Homebrewのサイトに載っているスクリプトをターミナルに貼り付けて実行します。

途中、パスワードを求められるので、普通にMacOSのユーザーのパスワードを入れてください。 Installation successful と出たらインストール成功です。

openCV 3 のインストール

ターミナルに brew install opencv3 と貼り付けて実行。インストールが始まります。 ビールのアイコンが表示されながらインストールが進んでいきます。この時、一番最後の 「🍺 /usr/local/Cellar/opencv/3.4.1_5: 600 files, 215.3MB」のところに書かれているopenCVのバージョン(3.4.1_5)をメモしておきます。

サンプルのプロジェクトファイルを読み込む

まずはサンプルのプロジェクトファイルをダウンロードします。

[サンプルファイル]

ダウンロードしたら、zipを展開し、「yolo_test」のフォルダを /of_v0.10.0_osx_release/apps/myApps の中に入れます。

/of_v0.10.0_osx_release/projectGeneratorの中にある「projectGenerator.app」を起動する。 起動すると、Openframeworksのパス(Openframeworksのフォルダの位置)を指定するように聞かれます。
/Users/(ユーザー名)/Documents/of_v0.10.0_osx_release を指定します。 [create/update] を押して、画面を切り替えます。そのあと、[import]を押して、さきほど /of_v0.10.0_osx_release/apps/myApps に置いた 「yolo_test」を選択します。 そのあと、[update] を押してアップデートします。 アップデートが終わると、この画面が出るので、[Open in IDE] を押します。するとXcodeが起動して、先ほどの「yolo_test」が開きます。

いろいろな設定を行う

openCVのパスを通す 左のファイル一覧表示から「Project.xcconfig」をクリックして選択します。 先ほどインストールしたopenCVを使用するため、パスを通します。 OPENCV_PATH = /usr/local/Cellar/opencv/3.4.1_5 を書き加えて保存します。
この時、末尾にある数字(3.4.1_5)は先ほどインストールしたopenCVのバージョンです。
Header Search Paths にopenCVのパスを追加する 左のファイル一覧から、一番上のプロジェクトファイルを選択。色々な設定項目が出てきます。 メニューからBuild Settingsを選択 フィルターを ALL にしておきます。 検索画面に Header Search Paths と入力すると Search Paths という項目が見つかります。 その中の Header Search Paths の右側をダブルクリックすると編集できるようになります。 + ボタンを押して以下のパスを追加します。

$(OPENCV_PATH)/include



OpenCVのdylib を Other Linker Flags に追加する 同じように、プロジェクトファイルの設定項目の検索画面に Other Linker Flags と入れると Other Linker Flags が出てきます。

$(OPENCV_PATH)/lib/libopencv_core.dylib
$(OPENCV_PATH)/lib/libopencv_dnn.dylib
$(OPENCV_PATH)/lib/libopencv_imgproc.dylib

の三つを追加します。これで準備完了です。

実行する

アクティブスキームを Debug > My Mac(64bit)に指定して実行してみましょう。 あらかじめ用意された学習データに基づいてカメラに映るオブジェクトを認識してタグ付けを行います。 名前についてのデータがyolo_testのプロジェクトフォルダの中、/yolo_test/bin/data/names に入っています。ここを見ると認識可能な80種類のオブジェクトを確認することが出来ます。

この例から、どのような作品が可能でしょうか?
まずはこれらのサンプルをそのまま使って「何を撮影するべきか?」を考えてみましょう。

ほかのサンプル

[検出領域だけを取り出すサンプル](すいませんちょっと遅延あります)

[検出領域だけを取り出して、ローカルに画像を保存していくサンプル]