ラベル AIカメラ の投稿を表示しています。 すべての投稿を表示
ラベル AIカメラ の投稿を表示しています。 すべての投稿を表示

2020年10月8日木曜日

超小型AIカメラをコイン識別器にしてみる

【要旨】前回記事の続編です。雑誌を参考に、超小型AIカメラを(コーデイング無しで)コイン識別器にしてみました。AIの初歩的な体験ですが、いかがでしょうか。

■独自画像を学習させたいが、そのデータは?
 前回記事は、このメーカーが提供する種々のアプリ(顔検出や手書き数字識別など)の紹介でした。今回は、独自画像を識別してみます。と言っても、なかなか題材がありませんが、手元に何種類かの外国コインがありました。それを使います。以下の5種類を対象とします。

■学習用画像の準備
 この小型AIカメラで、5種類のコインそれぞれ40枚を撮影します。コインはそれぞれ8枚づつ用意しましたが、それを色々な角度から写して40枚にします。合計で200枚の画像です。そのうち、8割は学習用(training)に、残りの2割を検査用(validation)に用いることにします。

■画像の学習
 
ここが最も重要なパートなのですが、このメーカーでは、規定に沿った画像を送ると、学習結果を返してくれるという、有り難いサービス(m5stack Training Service)を提供しています。すなわち、自分で何もコーディングせずに、学習済みモデルを入手できるのです。そればかりか、下図のように、学習状況(accuracyとlossのグラフ)も送り返してくれます。さらに、その学習モデルを動かすサンプルプログラム(マイクロPythonによる)も付けてくれます!これは、やってみるしかないです。


■これでコイン識別器のできあがり!
 あとは、送られてきたサンプルプログラムと、学習済みモデルをいっしょにマイクロSDカードに格納して、この超小型AIカメラに挿入するだけです。それを使ったテスト結果を以下に示します。学習時とは別のコインを使ったテストですが、例えば、10_Pfennigや20_EuroCentは0.98〜0.99のconfidenceで認識されました。

感想

 「具体的に自分でコーディングしないとAI技術を学ぶことにならない」というのも確かではあります。しかし、大学などの授業で、AIの考え方や基本技術を学ぶ前に(あるいは後でもいいですが)上記のような体験をすることは意味があるのではないかと思います。AIに馴染む、あるいは、その中味を知りたいという意欲をかき立てることに繋がるようにも思います。

 返送されてくるサンプルプログラムは、上図のように認識結果を表示するだけの非常に短い(40行程度の)ものです。Pythonを少し知っていれば、これを拡張(例えば音声を付けたり、第2候補を示したり)することも難しくないです。


2020年9月23日水曜日

指先に載るAIカメラ

(念のため、末尾に(注1)(注2)(注3)を追記しました。)
(→続編はこちらにあります。)

  掌どころか指先に載ってしまう、この小さなカメラですが、AI(人工知能)のためのニューラルネットワークプロセッサ(CNNやFFTアクセラレータを含む)を搭載しているとのことですから驚きます。日経ソフトウェア最新号(2020年11月号)に紹介記事が出ています。M5StickVという製品ですが、注目度が高く品薄のようです。ようやく、秋葉原の店の通販で、3,500円で購入できました。

AIネットワークプロセッサ搭載の超小型カメラ(レンズは背面)

    初期状態で搭載されているのは、顔検出アプリです。人の顔の膨大なデータを使った学習は既に終了していて、その学習結果を使って、顔をリアルタイムに検出するものです。さっそく試してみました。首相官邸のホームページに、新内閣の閣僚が並んだ写真が載っています。検出結果の一例を以下の図に示します。管総理と麻生副総理のお顔が検出され白い枠線で囲まれています。ベリーグッド。見せますね。

管総理と麻生副総理(首相官邸ホームページの写真からの顔検出)

    これ以外にも、学習済みデータはいくつか用意されています。例えば、有名な手書き数字認識(MNIST)のための学習済データ(モデル)も提供されています。これを利用して、自分で紙に描いた数字をリアルタイムに認識させるには、[入力画像前処理]+[forward計算]+[表示処理]の合計で、マイクロPythonプログラム約25行だけ書けばよいのです。すなわち、学習過程のプログラムは書きませんが、認識するためのプログラムは高レベルで小さく作れますので、AIの初歩の勉強にもなります。こんなに小さな安価なデバイスで、それができるは素晴らしいと思います。

手書き数字「5」を認識した状態(confidence = 0.829)
    
 もうひとつ行ってみます。Brownie 1000というアプリも公開されています。何かものを撮影した場合、1000種のラベルのどれに該当するかを、音声で答えてくれます。以下の例では、犬のぬいぐるみを撮影したところ、日本語で、「いぬです」と返って来ました。なかなかです。

「犬です」と音声で応答(Brownie 1000による)

 以上のような既存のアプリや、提供されている学習済のデータ(モデル)では物足りなくなった場合は、ちゃんとそれに応えてくれます。例えば、自分で多種類のコインを多数持っていて、コインを識別させたいとします。その場合は、種類毎にコインの画像(各ラベル毎に35枚以上)を用意して、指定のwebサイトへ送れば、その学習結果を送り返してくれるサービスもやっています。上記の手書き数字の場合と同様に、返送されてくる学習結果を利用して認識(識別)用の短いプログラムを作れば良いのです。実用性はあまりないかと思いますが、AIの勉強にはとてもよいデバイスではないでしょうか。

(注1)ここで利用する学習済みモデルは、kmodelという形式です。しかし、Google ColabやAnacondaで別途学習させてできるモデル(h5 keras)をkmodelに変換するツールもあります。したがって、中級から上級の人にとっても、このデバイスは色々と使い道があるかもしれませんね。

(注2)ただし、このデバイス、まだ不安定な動作をする場合もあり、色々と調査して対処する必要が生じるかも知れません。実際、小生の経験では、最新のファームウェアに書き換えた場合、上記のいずれの例も不具合が起こるため、少し古いファームウェアにダウングレードしました。

(注3)残念ながら、通信機能(WiFiなど)は搭載されていません。他のデバイスと連結させて何とか通信できないこともないようですが、WiFi機能搭載のM5StickV+はすでに開発済とのことですから、その国内発売を期待したいと思います。