Take’s diary

Macとマイコンに関すること--ワクワクの製作日記

openFrameworks でCoreML (YOLO)!!

openFrameworks for iOSでYOLOを動かしてみました。

前回紹介したGitHub - hollance/YOLO-CoreML-MPSNNGraph: Tiny YOLO for iOS implemented using CoreML but also using the new MPS graph API. iOSでのYOLO実行環境はSwiftでした。SwiftはUI環境を整備しなくてはいけないので、私にはとてもやっかいです。これをOpenframeworksで実行させたら、簡単に画像を加工できるはず。この記事には、YOLO標準データをCoreML専用に変換するPythonスクリプトも入っているので再学習も可能のはずです。結果、ソースの変更でopenFrameworksでもCoreMLが実行できました。肝心の画像認識部分の実行速度は、Swift版より今回移植したC++版の方がかなり早くなっているようです。画像加工が簡単なので少し表示内容を変更しています。画像認識部分はマルチスレッドにしているので、画像を加工しても画像表示はCoreML(物体認識部分)に影響されません。ただし実行時iPhoneがかなり熱くなるので、連続して実行する場合は1分前後が目安です。iPhone7以降で実行可能。

f:id:TAKEsan:20180102224325p:plain

openFrameworksはdownload | openFrameworksからiOS版をダウンロードしてインストールして下さい。

以下iPhone 7plusで動かした場合

               

以下iPhone Xで動かした場合

               

前回のSwift版より認識スピードが倍近く速くなっているので(計測ポイントは同じ)ハードの実力はすごいの一言。ただ、画像のフレームレートが下がっていますが、カメラ画像の大きさに影響するようです(今回は1280X720としたので遅くなっている)。

やはりiPhone7の倍くらいスピードが違いました。

ソースは以下に公開しました。

実機でないと実行できないので注意。(Yoro_of2.zipをダウンロード)

https://drive.google.com/drive/folders/0BzqxnYlVMv6uRUtMb2pRXzdsNlU?usp=sharing

急いで作ったので、グローバル変数が多いですが、addonにすれば、かなり簡単に応用できると思います。YOLOの学習済みCoreMLファイル「TinyYOLO.mlmodel」は、プロジェクトにコピーすると、自動的にobjectiv-Cのヘッダーファイル(TinyYOLO.h)が作成されます。画像の変換に利用しているだけですが、ofxCVアドオンをダウンロードして追加してください。

多分Signing系のエラーが出ますので、赤矢印部分を自分の環境に設定して下さい。

f:id:TAKEsan:20180102223102p:plain

                             では、また。