機械学習の始め方!GoogleのAutoML Vision Edgeで簡単に入門

機械学習

GoogleのAutoML Vision Edgeのサービスを使うことで機械学習で必要なモデルを簡単に作成でき、Edge TPUで画像認識を簡単に使えました。

機械学習の画像認識を「始めたい」「業務に使いたい」方におすすめの記事です。

 

AutoML Vision Edgeとは

Googleが提供しているクラウド上のサービスGoogle Cloud Platform(GCP)の一つです。

AutoML Vision Edgeは専門知識がない一般人でも、 最先端の機械学習と画像認識のエッジ用モデルを簡単に作成することができるサービスです。

 

AutoML Vision Edgeを使えば簡単にオリジナルの機械学習のモデルが作れます。今回は工具を分類する機械学習のモデルを作成する手順を1から紹介していきます。

 

そしてEdge TPUで画像認識するまでの記事となっています

 

簡単に機械学習を入門してみたい方は

特にオリジナルのモデルは必要なく「簡単に機械学習を始めてみたい」という方は下記記事をおすすめします(リンク先はこちらから)

Google Edge TPUができること・使い方を確認してみた
Google Edge TPUの初心者である筆者が「ラズベリーパイ(raspberry pi)」+「USB Accelerator」の組み合わせで「できること」・「使い方」を確認・実践してみました。 Google Edge TPU...

 

ラズベリーパイ(raspberry pi)とEdge TPUのCoral USB Acceleratorを組み合わせることで、色々な機械学習(物体の検出・リアルタイムでの分類)を試しています

 

Google Cloud Platform(GCP)に登録する

AutoML Vision Edgeを使うためには最初にGoogle Cloud Platform(GCP)に登録する必要があります。無料トライアルがあり、自動課金されることは無いので安心して使えます。

 

下記Google Cloud Platform(GCP)のURLから「無料トライアルに登録」をクリックします。(リンク先はこちらから)

Google Cloud Platform

 

特に迷うことは無いですが、最初に国や利用規約を確認して「同意して実行」を選択します。

 

その後に「お支払プロファイル」「お客様情報」を入力していきます。

 

住所等の他にクレジットカードも登録する必要がありますが、あくまでロボットによる登録でないことを確認するためということです。自動課金されることはありません。

 

無事登録が終了すればGoogle Cloud Platform(GCP)が使えるようになります。

 

Googleの機械学習は無料枠内で使用できます

まだGCP未経験の方は「本当に無料なの?」「クラウドの課金制って怖くない?」と思われるかもしれません。ですが本当に無料枠内で使えます。

 

筆者が実際に今回紹介する機械学習で1時間ほどGCPを使ってみましたが、最初にもらえる無料トライアルのクレジットのおかげで無料(0円)でした。

 

※今回の30枚の写真からAuto Ml Vision Edgeでモデルを作る簡単なケースで数百円ほどです。(あくまで1例なので詳細の金額は伏せています)

 

おそらく最初無料トライアルで約数万~十万ほどのクレジットが貰えますので、趣味レベルでは十分に使えると思います。

 

AutoML Vision Edgeの使い方・始め方

GCPに登録できましたので早速AutoML Vision Edgeを使っていきますが、その前に機械学習用に必要な写真を撮っておきます。

 

機械学習に必要な写真を撮っておく

今回筆者は「ペンチ」「VESSEL製ワイヤーストリッパー」「HOZAN製ワイヤーストリッパー」の3種類を分類していきます。

 

本来は各種類で100枚以上の写真を用意することを推奨されていますが、今回は筆者はお試しテストということで各10枚で試しています。

 

AutoML Visionを開始する

登録したGCPのページに行き、検索で「Vision」と入力して選択します

 

そして画像分類の「開始」をクリックします。

 

AutoML Visionでデータセット(DATASET)する

AutoML Visionの画面に切り替わりますので「NEW DATASET」を選択して、新しくデータセットを開始していきます。

 

まずはデータセットの名前を入力します。各個人の自由に決めてもらえれば大丈夫です。筆者はtools(工具)としました。

 

AutoML Visionに写真をアップロードする

次に機械学習用に撮った写真をアップロードしていきます。Import imagesの項目で「SELECT FILES」を選択します。

 

そして機械学習させたい写真を選択すればOKです。(一括ですべて選択しなくとも、写真は後でも追加できます)

GCP(Google Cloud Platform)に写真がアップロードされます。

 

AutoML Visionでラベルをつける

アップロードした写真にラベルを付けていきます。

最初に「Add label」の項目を選択して使うラベルを追加していきます。

 

画像認識して分類させたいラベル名を付けてあげます。今回筆者は下記3つのラベル名を用意しました。

「ペンチ⇒HOZAN_Pliers」

「VESSEL製ワイヤーストリッパー⇒VESSEL_wire_stripper」

「HOZAN製ワイヤーストリッパー⇒HOZAN_wire_stripper」

 

アップロードした写真にラベルを付ける

写真とラベル名を紐付るには「Label」のタブで登録したラベルをチェックして写真を選択していけばOKです。

 

もし追加で写真をアップロードしたい場合は「ADD IMAGES」を選択してもらえれば大丈夫です

 

AutoML Visonでトレーニングをする

写真のアップロード・ラベルづけが終了しましたらデータをセットタブ「TRAIN」を選択します。

 

画面が切り替わりますので「START TRAINING」をクリックすることで機械学習のトレーニングの設定を行います。

 

「Train new model」の画面が出てきますので、モデル名・モデルタイプを選択します。

筆者の場合はモデル名はデフォルト、タイプはEdgeを選択しています。

 

そして「Optimize model for:」の項目でモデルをどのように最適化するか、「Show latency estimates for」の項目で遅延の推定を決定します。

筆者は最適化を「Best trade-off」、遅延の推定は「Edge TPU」を選択しています。

 

「Set a node hour budget」の項目ではGCPのクラウド上で使うノード数を選択できます。

おそらく使うノード数を増やせば機械学習のトレーニングが早く終わる分、予算も高くなると思われます。筆者は推奨の「2 nodes hours」を選択しました。

 

最後に「START TRAINING」を選択すればトレーニングが開始されます。終わるまではしばらく待ちましょう。筆者の場合は1時間ほどで終わりました。

 

AutoML Visionの評価(EVALUATE)を確認する

トレーニングが終われば機械学習のモデルを出力できますが、その前に結果(EVALUATE)を確認してみます。モデルのスコアの詳細を確認できます

 

スコアのしきい値(Score threshold)と適合率(Precision)、再現率(Recall)の関係性が分かります。(詳細はGCPの初心者向けガイドに載っています。リンク先はこちら)

 

AutoML Visionでエッジのモデルを出力する

今回は作成したモデルを出力しますので「PREDICT」のタブをクリックします。

 

「Use Your Edge model」の項目で「EDGE DEVICE」→「Edge TPU」を選択して「EXPORT」クリックするとモデルが出力されます。

 

リンクが貼られているので出力先のクラウドのストレージに飛びます。

 

クラウドのストレージに出力されたモデルのフォルダがありますので選択します

モデルを選択すると3つのファイルが出てきますのでダウンロードします。これで無事、機械学習のモデルを作成・入手することができました

 

ダウンロードできるファイル

ダウンロードできる3つのファイル(dict.txt、model.tflite、tflite_metadata.json)を簡単に説明しときます

 

dict.txt…ラベルのテキスト情報。今回の場合は「HOZAN_Pliers」「VESSEL_wire_stripper」「HOZAN_wire_stripper」と登録した3つのラベル情報が入っていました。

HOZAN_Pliers
HOZAN_wire_stripper
VESSEL_wire_stripper

 

model.tflite …TensorFlow Liteのモデルです。この機械学習のモデルを元に画像認識を行います

 

tflite_metadata.json…設定ファイル。モデル作った際の設定、対応しているTensorFlowのVer等が記載されています

{
"batchSize": 1,
"imageChannels": 3,
"imageHeight": 224,
"imageWidth": 224,
"inferenceType": "QUANTIZED_UINT8",
"inputTensor": "image",
"inputType": "QUANTIZED_UINT8",
"outputTensor": "scores",
"supportedTfVersions": [
"1.10",
"1.11",
"1.12",
"1.13"
]
}

 

AutoML Visionで作ったモデルをEdge TPUで使う

今回はAutoML Visionで作ったモデルをEdge TPUで使っていきたいと思います。

 

Edge TPUの使い方の詳細は以前の記事「Google Edge TPUを購入してラズベリーパイと機械学習してみた」ご確認ください。(リンク先はこちらから)

Google Edge TPUを購入してラズベリーパイと機械学習してみた
ついにGoogleからエッジ向けのプロセッサ「Google Edge TPU」が発売されました。今回はUSB Acceleratorとラズベリーパイを使って機械学習のデモを試してみます。 Google Edge TPUとは 20...

 

ラズベリーパイとEdge TPUで機械学習

Edge TPUはPythonで動作させていきます。筆者はラズベリーパイ(raspberry pi)とEdge TPUのCoral USB Accelerator環境下で動かしています。

 

今回は簡単なデモとして写真の画像認識を行いますが、応用すればEdge TPUならではのリアルタイムの画像認識も可能です。以前の記事で紹介しています。(リンク先はこちらから)

GoogleのAIの活用事例!Edge TPUのデモを自前で作ってみた
Googleが「CES」等の世界規模の展示会で実施していた「Edge TPU Dev Board」のデモを自前で作ってみました。 「ラズベリーパイ」と「USB Accelerator」で真似できましたので誰でも同様にAIの事例を試せま...

 

AutoML Visionで出力されたラベルを修正する

まずは必要なファイル(dict.txt,model.tflite,画像認識させたい写真)をラズベリーパイ側にコピーしときます。

(今回は設定ファイルのtflite_metadata.jsonは今回は特に必要としません。)

 

あとラベル(dict.txt)を少し編集しておきます。AutoML Visionから出力されたファイルだと下記のようにラベル名が並んでいるだけですが

 

Edge TPUのAPIで使えるデフォルトのコマンドに対応するためにラベルを少し修正します。各ラベルの前に数字とスペースを頭に付けてあげます。

 

また必要なファイル(dict.txt,model.tflite,画像認識させたい写真)は任意の場所に置いてもらって構いません。

筆者は「/home/pi/python-tflite-source/edgetpu/test_data」の中にまとめて入れています

 

Python+AutoML Visionで作ったモデルで画像認識

今回はAutoML Visionでモデルを作った写真とは別に3枚の写真を用意しました。これらが分類できるか確認してみます

 

ではラズベリーパイでディレクトリを移動して、いざPythonのプログラムを実行します。

cd python-tflite-source/
cd edgetpu
python3 demo/classify_image.py --model test_data/model.tflite --label test_data/dict.txt --image test_data/tool_test.jpg

 

Pythonを使えると機械学習を実践する上で役立ちます

今回のテストレベルでは必要ないのですが、機械学習を学ぶ上でやはりPythonを使えるようになると色々と応用が効くようになります。

 

筆者は下記記事で紹介しているUdemy で勉強することで機械学習の簡単なデバッグ・改造は出来るようになりました。

未経験・社会人向け! Pythonと機械学習の勉強方法・始め方
未経験で社会人である筆者がPythonと機械学習を学ぶにあたって「今回の勉強方法はかなり実用的かつ効率的!」と強く実感した内容でしたので紹介したいと思います。 UdemyがPythonと機械学習の始め方に最適! 結論から言いますとの講座...

 

初心者が高い参考書を買って一人でPython勉強するよりは「非常に分かりやすく」「費用が抑えられる」はずですのでご参考ください。リンク先はこちらから

 

AutoML Vision Edgeのテスト結果

テスト結果はどの写真もしっかり分類できていました。

 

まずは「ペンチ」ですが「HOZAN_Pliers」としっかり画像認識できています。

---------------------------
HOZAN_Pliers
Score : 0.878906

 

次に「VESSEL製ワイヤーストリッパー」も「VESSEL_wire_stripper」と高スコアを出しています。

またホーザン製ワイヤーストリッパーの「HOZAN_wire_stripper」も少しスコア付いていました。

---------------------------
VESSEL_wire_stripper
Score : 0.820312
---------------------------
HOZAN_wire_stripper
Score : 0.113281

 

最後に3つの工具をまとめて撮った写真ですが、3つのラベルともに平均的なスコアとなり画像認識ができていました。

---------------------------
HOZAN_Pliers
Score : 0.308594
---------------------------
VESSEL_wire_stripper
Score : 0.285156
---------------------------
HOZAN_wire_stripper
Score : 0.207031

 

まとめ・感想

初心者でもAutoML Visionを使えば簡単にカスタマイズした機械学習のモデルを作成することができます。

そしてラズベリーパイ(raspberry pi)とEdge TPUのCoral USB Acceleratorで簡単にテストすることができます

 

非常に便利なツールだと思いますのでぜひ皆様も使ってみてください

コメント