マイクロソフトがLobeというツールを公開しました。
このツールを使うことでとても簡単に画像分類の機械学習モデルを作ることができます。
Lobeの画像分類には「ResNet-50 V2」と「MobileNetV2」の2つのmodelを使用することができます。
それぞれのmodelには特徴があり目的や実行環境に合わせて使い分ける必要があります。
ResNet-50 V2を使用すると高い予測精度を達成できますが、予測時間が長くなりより多くのメモリが使用されます。
MobileNetV2は予測速度が速く、メモリ使用量は少ないですが、予測精度は高くありません。
ある程度のマシンパワーがある環境で高い精度が必要なときはResNet-50 V2を使用し、
スマホやRaspberry PiなどではMobileNetV2を使用することになると思います。
どちらのmodelを使用しても転移学習を用いることで少ないデータでもより良い訓練出来るようになっています。
今回は、kaggleに公開されている犬/猫の画像を使用して画像分類modelを学習する手順を書いていきたいと思います。ベースとなるmodelにはResNet-50 V2を使用します。
Lobeのダウンロード
下記の公式ページからダウンロードできます
Lobe
学習に使うデータを用意する
今回はkaggleで公開されているデータを使用します。
Dogs vs. Cats
Lobeでmodelを学習する
学習を開始する前にベースとなるmodelを設定します。
[File]-[Project Settings]から[Optimize for Accuracy]を選択します
kaggleからダウンロードした学習用データの中からまずはcatの画像を読み込みます。
読み込んだ画像にLabelを付けます。
この時全ての画像を選択(macならcommand+A)すればまとめてLbelをつけることができます。
続いてdogの画像も同じように読み込みLabel付けを行います。
学習用の画像がディレクトリ名をlabelにして予め分けられている場合はdatasetとしてまとめて読み込むことができます。
2種類以上の画像を読み込むと自動でTrainingが開始されます。
Trainingが終わったらPlayをクリックしテスト用の画像をドラッグ&ドロップで読み込ませると予測結果を確認できます。
読み込んだ画像の正解予測が間違っている場合は、下記の画像で示した場所をクリックするとLabelが修正されて再度Trainingが行われます。
このように非常に簡単に画像分類のmodelを作ることができます。
画像をインポートする代わりにwebcカメラから画像をキャプチャして使用することもできます。
下記の公式動画ではwebカメラで数枚の画像を撮影しそれを元に「Drinking」を「not Drinking」を識別するモデルを作成しています。
Introducing Lobe | Build your first machine learning model in ten minutes.
Lobeでは学習したmodelはエクスポートしてCoreMLやTensorFlowで利用することができます。
modelをエクスポートしてPythonで利用する方法は下記の記事をご覧ください。
Lobeで学習したモデルをPythonで利用する方法
Lobeで学習したモデルとTensorFlow Servingを使ってREST APIを作ってみました。