Yolo v2 がOpenCVにマージされたようなので試してみる (on MacOSX)

  • 7
    Like
  • 0
    Comment

追記(2017/10/25)

OpenCV v3.3.1 がリリースされました。
今回のリリースにYOLO v2 も含まれているため、
自前でビルドを行わなくてもYOLO v2のOpenCV実装を利用できるようになりました。

Yolo v2 がOpenCVにマージされたようなので試してみる

先日YOLO v2がOpenCVにマージされたそうなので、
サンプルプログラムを動かしてみました。

https://github.com/AlexeyAB/darknet/issues/227

Now Darknet Yolo v2 is added to the OpenCV: opencv/opencv#9705
You can use it from master-branch or since OpenCV 3.4.0 will be released.

とのことなので、OpenCVのmaster-branchからソースを落としてきてビルドしてみます。

ざっくり試して終わるつもりが意外とインストールバトルに手こずったので備忘録的に残します。

環境

  • Mac OSX (Sierra)
  • Xcode version 9.0 (9A235)
  • cmake version 3.9.4

opncv2.frameworkのビルド

  • githubから最新のソースを取ってくる
$ cd /my/work/space/
$ git clone
  • opencv2.frameworkをビルドする
$ mkdir osx
$ python opencv/platforms/osx/build_framework.py --opencv opencv osx/
  • エラーが出る
CMake Error in CMakeLists.txt:
  Evaluation file to be written multiple times with different content.  This
  is generally caused by the content evaluating the configuration type,
  language, or location of object files:

   /Users/reverent/work/lab/libs/macOS/build/build-x86_64-macosx/OpenCVGenPkgConfig.info.cmake

OpenCVGenPkgConfig.info.cmakeが複数回書き換えられている?とのことで怒られてしまいました。

ここで解決策がわからず時間を使ってしまったのですが、
取り敢えずCMakeLists.txtを見てみると

# Generate opencv.pc for pkg-config command
if(NOT OPENCV_SKIP_PKGCONFIG_GENERATION)
  include(cmake/OpenCVGenPkgconfig.cmake)
endif()

とあったので、半ば投げやりにここをコメントアウトしてみるとビルド成功。
opencv2.frameworkが作成されるので、
Xcodeから簡単に利用できるようになりました。

取り敢えずサンプルプログラムを動かすことが目標なので、
今回はこのまま利用します。

※ 当たり前ですが、この状態だと依存ライブラリ(libwebpなど)をXcodeでのコンパイル時に追加しないとリンカエラーが出るようになりました

サンプルプログラムの実行

公式のサンプルプログラムがこちらにあるので
/opencv/samples/dnn/yolo_object_detection.cpp
これで遊んでみます。

サンプルプログラムに必要な前準備

$ wget https://pjreddie.com/media/files/yolo.weights

結果

スクリーンショット 2017-10-14 15.50.59.png

クラスIdと名前の対応はこちらから
https://github.com/pjreddie/darknet/blob/master/data/coco.names

Webカメラからの入力も試してみましたが、
CPU上での実行でも2 - 3[FPS]程度でていました。
リアルタイム性の必要なアプリでも充分利用できそうです。

お疲れ様でした