80種類ものオブジェクトが特定ができる YOLOv3 を試してみる方法を説明します。
Sponsor Link
材料のダウンロード
以下の材料が必要です。
- CoreML サンプルプログラム
- YOLOv3 モデルファイル
CoreML のサンプルプログラムで使用しているモデルを置き換える形で、YOLOv3 モデルを使うサンプルアプリケーションを作ります。
CoreML サンプルプログラムをダウンロード
Apple の機械学習のページのなかから、YOLOv3 のサンプルプログラムをダウンロードします。
まずは、YOLOv3 の説明ページへジャンプします。
表示される YOLOv3 説明ページから、コードダウンロードページへジャンプします。
“Download” ボタンをおして、サンプルプロジェクトをダウンロードします。
ダウンロードした ZIP ファイルを展開して、BreakfastFinder.xcodeproj を Xcode で開きます。
YOLOv3 モデルをダウンロード
先ほど開いた YOLOv3 の説明ページから、モデルをダウンロードします。
2つをダウンロードが終われば、準備は完了です。
モデルの置き換え
ここからは、サンプルプロジェクトを開いた Xcode 上での作業となります。
ファイル追加
まずは、ダウンロードした YOLOv3.mlmodel を Xcode へ追加します。
ファイルナビゲータ上に、ドラッグ&ドロップ(D&D)で追加します。
ファイルの順番に意味はありませんので、”BreakfastFinder”フォルダ下の適当な場所に追加してください。
入出力の確認
CoreML のモデルは、それぞれ入力と出力が決まっています。
ファイルナビゲータ上でモデルをクリックすると、エディタペーンに表示されます。
ObjectDetector (サンプルプロジェクトのモデル)の入出力
YOLOv3 の入出力
比較してみるとわかりますが、同じです。ですので、モデルを取り換えても動作するということになります。
使用モデルの変更(コード修正)
使用する CoreML モデルは、VisionObjectRecognitionViewController.swift の中で読み込まれています。
24行目を以下のように変更することで、ObjectDetector.mlmodel ではなく YOLOv3.mlmodel が読み込まれます。
コンパイルと実行
通常のプロジェクトと同様に、コンパイル後、実機を接続して実行します。
このサンプルプロジェクトは、カメラ機能を使用するので、シミュレータでは動作しません。
実行
以下が、使ってみた結果です。
以下感想です。
本棚周辺を写してみたのですが、Clock, Backpack, Book が特定されました。
Clock は、正解ですが、Book は、ただの段ボール箱も Book と特定されていますし、手提げ鞄を Backpack と特定するのは正しいのか微妙です。
手提げ鞄を Backpack として特定したときの Confidence は、0.79 なので、理解できなくもないですが、
段ボール箱を Book と特定したものは、Confidence 1.0 なので、フィルター等で取り除くのも難しい気がします。
まとめ: Apple 提供のサンプルプログラムを YOLOv3 と使うことは簡単
上記で書いたように、非常に少しの手間で YOLOv3 を使うことができます。
YOLOv3 は、有名なモデルなので、ML をそのままで使うとどれくらい識別されるのかを確認もできます。
説明は以上です。
Sponsor Link