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年10月7日水曜日

AIチュートリアル:手旗信号(セマフォア)練習

【要旨】この記事は、Scratchを用いたAIアプリのチュートリアル[1]の紹介です。両腕を使った手旗信号(セマフォア信号)の発出練習をゲーム感覚で行います。ML4K(Machine Learning for Kids)[2]が提供しているのですが、レベルは"advanced"ですので、学生諸君にも参考になるでしょう。

作成するAIアプリの概要
 下図は、このAIアプリの使用手順です。"next"の矢印は、次の課題の出題を意味します。この例では、"K"の手旗信号のポーズを要求しています。あなたは両腕でそのポーズを取り、"ready"と叫んで下さい。すると、このアプリは、図中央にあるように、ポーズ認識結果としての線画と、正解のセマフォア画像を提示します。あなたは両者を比較して、自分のポーズが正解か否かを判断し、"yes"または"no"と叫びます。"yes"であれば、得点が加算されます。その後、自動的に"next"の状態になり次の出題を行います。

2つの学習モデルを使ったセマフォアのポーズの認識
 2つの学習モデルを使います。1つ目は、音声認識です。これにより、途中でPCに触れることなく、音声でアプリを制御でき、何回でもゲームを繰り返すことができます。2つ目は、両腕を使ったセマフォアのポーズを認識するためのものです。

(1)音声認識のための学習モデル
 発話によりゲームをコントロールします。上に述べた"ready"、"yes"、"no"を認識させるため、下図のように、それぞれ発話例を16回以上録音します。また、これとは別に環境音(周囲の雑音)も同程度収録します。その後、あるボタンを押すと学習が始まります。実際には、IBM Cloudのsoundサービスが起動されます。学習後は、3種類の発話は95%程度以上のconfidence(確かさ)で認識できるようになるはずです。


(2)ポーズ認識のための学習モデル
 ここでの「学習」とは、身体によるセマフォアの信号表現(画像)そのものの学習ではなく、「身体骨格」を学習するという意味です。つまり、身体画像のなかの左右の手首、肘、肩、膝などがどこにあるか(を示す座標)を認識するために、膨大な身体画像を学習させるという意味です。それは大変なコストを要しますので、ここではそれを実施せず、そのような目的の学習済みのモデルを利用します。下図は、それを利用して、左右両方の手首の位置(xy座標値)を得るためのScratchのブロックの利用例です。


(3)セマフォアのポーズが正しいかどうかの判断
 セマフォアのポーズにおいて、両手首や肘、肩の座標が分かれば、最初の図にある「認識結果」のような線画を描くことができます。この時、同時に正解の綺麗なセマフォア画像も表示しますので、自分で両者を比較し、このポーズが正しかったかどうか判断できます。それを"yes"または"no"の音声で答えると次の出題となります。"yes"であれば得点が加算されますので、練習の励みになります。

感想
 よく考えられた、受講者の興味を惹く優れたチュートリアルだと思います。ポーズの学習済みモデルを利用するので、相当に簡単になるとはいえ、それを使って、実際のセマフォアポーズを線画で表示するところは少し面倒かもしれません。しかし、3番目の図のように、ある程度のところまで、ブロックを提供していますので、敷居はかなり低くなっています。途中に提供されているブロックを削除して挑戦させれば、やや程度の高い問題となるでしょう。

参考資料
[1] 機械学習プロジェクト:Semaphores
https://machinelearningforkids.co.uk/#!/worksheets
https://github.com/IBM/taxinomitis-docs/raw/master/project-worksheets/pdf/worksheet-semaphores.pdf

[2] ML4K Teach a computer to play a game
https://machinelearningforkids.co.uk


2020年10月4日日曜日

AIにおけるフレーム問題や状況依存視点も知りたい

末尾に、【注1】【注2】を追記しました。
--------------------------------------------------------------------------------

AIのおけるフレーム問題など
 AI(人工知能)における「フレーム問題」は重要な未解決問題のひとつと言われている。この問題は、WikiPedia[1]によれば、「有限の情報処理能力しかないロボットには、現実に起こりうる問題全てに対処することができない」という問題だという。参考文献[2]等にも簡単な例をあげた解説がある。

 しかし、小生にはよく分からない。「知らないことはできないわけだから、知っている条件それぞれについて適切な処理を行い、知らない条件の場合は何もしないか、デフォルトの処理を行う。」これしかできないのではなかろうか。でも、これだけ話題になっているということは、もっと深遠な哲学的な難問であり、小生には素養がないだけのことかも知れない。それを少しでも補うつもりもあって、今回、下記のシンポジウムに参加した。

国立国語研究所 NINJALシンポジウム(対面+Webで開催)
「言語コミュニケーションの多様性」2020年10月3日
(1) 配慮の表現・行動から見るコミュニケーションの諸相(主に国語研の研究者による)
(2) 基調講演「AIと対話」(中島秀之 札幌市立大学学長)

 新型コロナウィルスの影響で、ここでの研究集会等も、長らく全てWeb開催であったが、今回、人数限定の現地対面での開催となった。なお、オンラインでも同時開催しており、質問などは、zoomを介して開場で流されていた。

 講演のうち、(1)では5件の研究発表があった。これらは、「対人配慮」という、相手に対する心的・社会的距離のとりいれ方がコミュニケーションにおいてどのように影響しているか、また、その歴史的経過も踏まえて深く入り込んだものであり、たいへん勉強になった。

 基調講演が本記事の対象である。著名なAI学者である中島秀之氏によるものであり、「TensorFlow (keras)による深層学習実践」といった技術論とは全く別の観点からの、「人工知能の根源を考える」といった趣のお話であった。

国立国語研究所(立川市)
初期の南極観測で活躍したカラフト犬たちのモニュメント
(隣接する国立極地研究所の庭にて)

中島秀之氏の講演より
 講演内容をここで正確に伝えることはとてもできない。上記の「AIにおけるフレーム問題」にも触れられていたが、小生の理解力不足もあり、疑問(モヤモヤ)が晴れたわけではない。しかしながら、この講演には優れた観点や考え方が多数示されて、非常に有用であった。以下には、そのうちのごく僅かを掲載させていただく。もちろん、小生の誤解があるかも知れないが、ご容赦いただきたい。

(a) 知能と常識
 「知能」とは、「情報が不足した状況で、適切に判断して処理できる能力」のこと。「常識」は、人間が身体をもってこれまでの生活体験をとおして獲得したものである。ロボットにはそれはできない。できたように見えても、それは人間の常識とはちがうものになっているはず。

(b) 状況依存視点のちがい
 端的に言うと、英語は「鳥の視点」、すなわち外から(上から)の視点に立つ場合が多い。逆に日本語は「虫の視点」、すなわち内から(中から)の視点に立つ傾向がある。その面白い対比例は以下の「雪国」(川端康成著)の冒頭に現れる。

【和文原文】国境の長いトンネルを抜けると雪国であった。
【英語訳文】The train came out of the long tunnel into the snow country.
(↑著名な日本文学研究者エドワード・サイデンスデッカーによる英訳)

 これを、日本語と英語をそれぞれ母国語とする人に見せて、イメージを描いてもらうと下図のようになるという。(この図は、当日発表スライドを見たあとで小生が描画したものである。)


 この類いの、視点の違いの例は他にも沢山あるという。「鳥の視点」にたつと、状況(システムの状況)を全部言わないと行けないが、「虫の視点」に立つと(内部にいるのだから)全部は言わなくてもよい。全部は言わないゆえに、日本語は「あいまい」だと指摘される場合があるが、それは正しい主張とは思われない。

 フレーム問題は、「鳥の視点」に立つ以上、避けられないのか?(by FoYo)

-----------------------------------------------------------
【注1】上記和文原文を、現代の自動翻訳器にかけた結果を以下に示します。いずれも、サイデンスデッカー訳とは異なり、英語特有の「鳥の視点」の立場を取らずに、和文をそのまま「直訳」しているように思います。それも興味深い点です。ロボットは人間にはなれない。
●Google Translate:
  After passing through a long tunnel on the border, it was a snowy country.
●Amazon Translate:
  Through the long tunnel of the border was a snowy country.
●Microsoft Translate:
  It was a snowy country through a long tunnel on the border.
●IBM Watson Language Translate:
  After exiting the long tunnel of the border, there was a snowy country.
----------------------------------------------------------
【注2】上記の和文原文とサイデンスデッカー英訳との対比については、参考資料[3]にも興味深い論考がある。
----------------------------------------------------------

参考資料
[1] フレーム問題(wikipedia)https://ja.wikipedia.org/wiki/%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E5%95%8F%E9%A1%8C
[2] 人工知能の話題-フレーム問題(人工知能学会)
https://www.ai-gakkai.or.jp/whatsai/AItopics1.html
[3] 松野町夫:リベラル21
http://lib21.blog96.fc2.com/blog-entry-357.html