KaggleのデータセットをAutoML Visionでエッジに組み込む

機械学習

GoogleのAutoMLを使ってKaggleのデータセットを解析、またエッジ向けのモデルを作成してみました。

機械学習の初心者の筆者でも簡単に試すことができ、非常に勉強になった旨を紹介します。

スポンサーリンク

KaggleのデータセットをAutoML Visionでエッジに組み込む

Kaggleのデータセットを使い、エッジのモデルを作成して「電子部品の画像認識」が(一応)出来ました。

 

Kaggleのデータセットのダウンロード方法から、AutoMLを使ったエッジへの組み込み方法を紹介します。

 

以前にも下記記事で(ベータ版の)AutoML Vision Edgeの紹介をしましたが、今回は最新版の使い方で説明します。

機械学習の始め方!GoogleのAutoML Vision Edgeで簡単に入門
GoogleのAutoML Vision Edgeのサービスを使うことで機械学習で必要なモデルを簡単に作成でき、Edge TPUで画像認識を簡単に使えました。 機械学習の画像認識を「始めたい」「業務に使いたい」方におすすめの記事です。...

 

Kaggleとは

筆者が「Kaggle」を知ったきっかけはLT枠で参加したAIchi勉強会でした。(その際の記事はこちらから)

AIの勉強会に初心者がLT枠で参加してみた!AIchi勉強会
AI初心者の筆者が愛知開催のAIの勉強会に参加してきました。(しかも5分間発表するLT枠として) 勉強会の参加方法、当日の様子、また知見ある有識者とも知り合えて非常に有意義だった旨を紹介します。 AIの勉強会に初心者がLT枠...

 

勉強会で発表者の「u++」さんがKaggleの魅力を非常に面白く説明してくれました。

正直Kaggleの詳細については「u++」さんの下記記事を見てもらった方が一番わかりやすいと思いますのでリンク先貼っておきます。

 

Kaggleはデータサイエンティスト以外の方も十分に活用できる

Kaggleといえば「機械学習のコンペ」として今一番注目されています。

初見の方は世界中のデータサイエンティストの方々が順位を競われていて、敷居が高いと感じるかもしれません。

 

しかし初心者の方でも始めれるようにQiita含めて多くの先人達がネット上に記事が挙がっています。

そして筆者はまた違った(変な)視点でKaggleを有効活用させてもらいました。

Kaggleのdatasetは種類が豊富

Kaggleがオープンかつ人気なプラットフォームということもあり、多種多様なデータセットがあります。

 

そのためエンジニアとしても非常に興味深い「データセット」が多く公開されています

少し探しただけでも下記のような(電気技術者として)面白そうなデータセットが見つかりました。

・HDDのテストデータが集まったデータセット

Hard Drive Test Data
Daily Snapshot of Each Operational Hard Drive in 2016

・モータと温度の関係のデータセット

Electric Motor Temperature
140 hrs recordings from a permanent magnet synchronous motor (PMSM)

 

Kaggleのデータセットのダウンロードは簡単

おそらく多くのデータセットのプラットフォームがあると思いますが、Kaggleが一番簡単なのではと思います。

Googleのアカウントでサインインすれば、「Download」をクリックするだけで入手できます。

 

Kaggleのデータセットのライセンス形態は様々…

データセットを使う上で気になるのがライセンスですが、結構バラバラでした。

よく聞く「GPL 2」や、完全フリーの「CC0: Public Domain」などライセンス形態は様々です。

※基本はオープンなので通常の個人使用の分では問題ないと思いますが、もし使う場合はライセンス形態の確認をお願いします

 

ちなみに今回筆者が使った「電子部品の写真が集まったデータセット」は「GPL 2」でした。

もちろん個人的な利用のみの範囲で使わせてもらいます。

Electronic Components and devices
Dataset containing major electrical and electronic components and devices.

 

AutoMLでKaggleのdatasetを評価・モデル作成する

今回使うデータセットの中身を紹介しておくと「電子部品の写真」です。

1万以上の写真が「IC」「LED」「リレー」「コンデンサ」など多くの種類に分類されています

 

まずはKaggleのデータセットをAutoMLで解析してモデル作成を行います。

 

AutoMLにデータセットをインポートする

まずはGCP(Google Cloud Platform)のAutoML Visionのページに行きます(リンク先はこちら)

 

もしGCPの登録していない方は下記記事を参考に登録をお願いします

機械学習の始め方!GoogleのAutoML Vision Edgeで簡単に入門
GoogleのAutoML Vision Edgeのサービスを使うことで機械学習で必要なモデルを簡単に作成でき、Edge TPUで画像認識を簡単に使えました。 機械学習の画像認識を「始めたい」「業務に使いたい」方におすすめの記事です。...

 

「新しいデータセット」を選択してインポートしていきます

 

画像認識して物を分類させますので今回は「マルチラベル分類」を選択します。

 

筆者は「パソコンから画像をアップロード」でKaggleからダウンロードしたZIPファイルをそのままインポートしました

AutoMLは「ZIP」ファイルも対応していますので、非常に楽に進めれます。

「Cloud Storage上の宛先」を選択する必要があります。「Browse」を押して新規にパケットの作成を進めていきます

 

パケットの作成ではデフォルトの選択のまま進めてもらっても構いません。

しかし、後ほどのモデル出力ではロケーションタイプを選択する必要があります

「Region」「us-central1(アイオワ)」に選ばないと出力できません

 

もしデータセットと同じ場所にモデル出力まで行いたい方は予め上記のローケーションで選択しときましょう。

それ以外はデフォルト設定の対応で大丈夫でした。無事インポート出来ました。

 

AutoMLがデータセットにラベルまで付けてインポートする

Kaggleのデータセットがしっかりしているため、AutoMLがラベルまで付けてインポートしてくれました。

非常に楽で助かります。

 

AutoMLでデータセットをトレーニングさせる

データセットをトレーニングさせます。

「トレーニング」のタブをクリックして「トレーニングを開始」⇒「Edge」を選択しました。

 

その後は「モデルの最適化…Best trade-off」、「使用するMaxノード数…8」はデフォルトで対応しました

あとはAutoMLがトレーニングしてくれるのを待つだけです。

 

AutoMLの料金は無料枠分で対応できました

今回のAutoMLの料金は無料で対応できました。

GCP登録の際に数万円分の無料枠のクレジットが貰えるので、そこから勝手に引かれた形になります。(約2000円分ぐらい引かれていました)

 

1万点の画像で約150Mbyteぐらいのデータセットでこれぐらいの料金でした。

料金に関してはあくまで参考扱いでお願いします

 

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

トレーニングが終えましたら評価結果を確認できます。

詳細を確認したい方は色々と見てみると良いと思います。

 

トレーニングした結果を元に、モデル出力を行います。

「テストと評価」のタブから使用するモデルを選択します。今回はEdge TPUを使いますのでCoralを選びました。

 

先ほど説明しましたが、出力するパケットのリージョンには注意ください。

「Region」「us-central1(アイオワ)」に選ばないとモデル出力できません

(リージョンがデフォルトだとエラーが出ます)

 

モデル完成後は色々な方法で出力できます。

今回筆者はGCPのストレージ箇所を経由してダウンロードしました。

 

電子部品の画像認識をテストする

Kaggleのデータセットから出力したモデルを画像認識に使用していきます。

今回はラズベリーパイ(raspberry pi)とエッジデバイスのCoral USB Acceleratorを使います。

 

AutoMLのモデルをEdge TPUで使う準備

今回の画像認識させる詳細方法に関しては下記の応用編を参考にお願いします

ラズパイでカメラの使い方!Pythonとコマンドの基本・応用例を紹介
ラズベリーパイとカメラの使い方をまとめてみました。初心者の方でも簡単に撮影できます Pythonとコマンドのどちらでも写真・動画撮影が対応できる旨を紹介して、最後には画像認識まで実施してみます。 ラズパイでカメラの使い方!Pytho...

 

AutoMLで出力したファイルの内、その中でモデルとラベルを使います。

ファイル名の末尾が「_edgetpu_model.tflite」「_dict.txt」の2つです。

 

Edge TPUで使用するためにラベルを修正します

「_dict.txt」のラベルに関しては今回のEdge TPUの使い方では少し修正が必要と思われます。

 

ダウンロードしたものはラベルが並んでいるだけです。

 

各ラベル名に1から順に「数字」と「スペース」を追加しときます。

 

ラズパイのEdge TPUのフォルダにラベルとモデルを入れる

修正したラベルとモデルをラズパイのEdgeTPUのフォルダにコピーしときます

 

あとはコマンドでディレクトリ移動して、下記プログラムを実行するのみです

cd /usr/share/edgetpu/examples/

python3 classify_capture.py --model models/model-export_icn_edgetpu_tflite-e_parts_20191228_edgetpu_model.tflite --label models/model-export_icn_edgetpu_tflite-e_parts_20191228_dict.txt

 

Kaggleのデータセットからの画像認識をテストする

テスト(ラズパイの)環境は下記です。

OS:Raspbian Buster with desktop and recommended software(September 2019)

試験プログラム:classify_capture.py

接続デバイス:Google Coral Edge TPU USB Accelerator

 

テストに使った電子部品は「(バッファ)IC」と「リレー(relay)」です。

データセットの中身も把握・精査していませんが、適当に筆者の手元にあった電子部品を使いました。

 

テスト結果としては…

「IC(Integrated…)…そこそこ認識できていました」

 

「リレー(relay)…ほんの少し認識できていました」

 

おそらく動画で見てもらった方が分かりやすいと思います。

下記Youtubeにアップしておきました。

AutoMLでKaggleのデータセットを電子部品の画像認識に使ってみた

 

今回はKaggleのデータセットを特に調整・修正もせずに画像認識させました。

(AutoMLとしても100%デフォルト設定でモデル作っただけ…)

それでも一応判別してくれましたので、ほんの少し手を加えれば結構使えるものにはなるかと思います。

まとめ

Kaggleの取り組み方としては少しずれているかもしれませんが、結構楽しめる使い方だと思います。

よろしければ皆さまもAutoML Visionを使って画像認識させてみてください

コメント