2018年8月27日月曜日

もう一歩進める:MIT App Inventorで人工知能体験

 オープンキャンパスでは、スマホを使ったAI(人工知能)アプリの開発体験をしました。とても好評で良かったのですが、さらにもう一歩進めることを検討してみます。この体験は、スマホで撮影した物の画像をMicrosoftのImage Recognizerに送って、その認識結果を利用するというものでした。この場合、ニューラルネットワークを使った学習(training)そのものには、受講生は全く関わっていません。そこんところに少し入り込みたいです。

 つまり、自分自身のモデルを用意して(分類したい画像などを収集し)、学習させ、その結果のニューラルネットワークを使って、認識テストしたい、ということです。でも、そうなれば少なくとも、いくらのコード(Tensorflowを使う場合は数十行程度、Kerasを使うと十数行程度)は書く必要があります。また、SonyのNeural Network Consoleを使うとコーディングは不要ですが、ニューラルネットワークの構成を理解してそれを(ビジュアルに)与える必要があります。

 そういうことすらせずに、自分のモデルを使ったAI体験ができれば、初心者には非常に良いのではないか。実は、それをやっているプロジェクトが英国にすでにありました。一度ご紹介したことがあますが、以下のサイトです。

Deep Learning for Kids
https://machinelearningforkids.co.uk/#!/about

 タイトルは、for Kidsとあるのですが、大人が(情報工学科の教員でも)やってもたいへん面白く、ちょっとした実用性も感じられます。さっそくやってみましょう。ここでは、AIとして最も基本的な、教師あり学習による画像認識をやります。

5種類のコインを識別する問題

対象は何でもいいです。各自用意してください。できれば、3種類〜5種類くらいのもので、それぞれ10個以上の個体があるものが望ましいです。私の場合は、かって欧州出張した際に持ち帰った幾つかのコインの識別を行うことにしました。

5種類のコインの識別をやってみよう
 上記に記したURLへ行って(ユーザ登録は必要)、ブラウザだけで以下を行えます。コーディングはありません!

Step1:5つラベル(コインの名称)を用意し、コイン画像を設定
 コインは5種類あります。それぞれ何枚かのコインがあります。適宜とりだし(表裏や配置角度はランダムで)撮影して、その画像をラベルのフォルダに入れます。ここでは、各ラベルごとに20枚の画像を用意しました。

裏表や向きはランダムに撮影:コイン5種x20枚=100枚
これらの画像をラベル(コインの種類)毎に分けて与える

Step2:これを学習(training)させる。ボタンを押すだけ。
 表示されたボタンを押すと、IBM Watsonによる学習が行われます。各種パラメータ(層の構成、学習率、許容誤差、等々)の設定も無しでWatsonにおまかせ。画像の分類場合は、Recognitionサービス、テキストの分類の場合はAssitantサービスなどが働きますが、利用者は特に意識する必要はありません。まもなく(今回の例では約5分後に)学習結果が得られました。無料枠で優先度は低いうえに、数段のコンボリューションを含む多層のニューラルネットで学習させているはずなので、それにしては速いと思います。これで、必要なニューラルネットワークが構成されました。以下のように表示されます。

学習の完了

Step3:学習(training)とは別に用意したテスト用画像で認識させてみる。
 以下のウインドウにテスト用画像をひとつづつ与えてテストを実行する。各ラベル(コインの種類)ごとに、2枚のテスト用画像を与える。表裏や配置角度はランダムで。


Step4:テスト用画像に対する認識結果を確認する。
 10枚のテスト画像が、すべて、確度(confidence)90%〜91%で正しく、認識された!これで完了!例えばですが、日本の10円玉と旧マルクの10pfennigは、色やデザインがかなり似ているのですが、難なく識別されました!


ScratchやMIT App Inventorも登場!

上記のStep1〜Step4だけでも十分ですね。しかし、画像をカメラで撮影して入力しやすくしたり、Watsonによる認識結果を、より分かりやすく表示したり、ほかのアプリと組み合わせするのに、ScratchMIT App Inventorが連携して動ける仕組みも用意されています。(これについては、別途書く予定です)

ScratchやMIT App Inventorとも連携!


0 件のコメント:

コメントを投稿