キターーーーーーSpresenseの真骨頂!AIを使う方

NO IMAGE

Spresenseの出始めは資料が少なかった

Spresenseの出始め位に購入したのだけれど、こちらのアーティクルで書いた通り、AD変換に関しては、ハードがイマイチだったという所で飽きてしまった。
資料も結構少なかったし…。
そんなわけで、しばらく、いじっていなかった。

「まぁ、他のArduino互換機同様、鳴かず飛ばずになるんじゃないのかねぇ。」

冷めた目で見つつ、放置していたら、何やらAI界隈が熱く、Spresenseを使った実例が出だしたのに気づいた。
「ほう、ようやっと、Spresenseも役に立つ日が来たか」

株に例えれば、出始めに注目された有力株が、時間をかけて、ようやっと優良株となれたようで。

AIはNeural Network Consoleが熱い!

SONYさんは、AI関連にかなり本腰を入れておられるよう。知らぬ間にYouTubeでNeural Network Console(以降、NNC)の動画が沢山アップされていたのだ。
それ以外にも、かなり布教活動されておられたようで、頭の下がる思い。

NNCは、以前チラ見をしたことがあったものの、さっぱり分からず、しかも有償らしいので、遠のいていた。
どういう風の吹き回しか分からないが、何年も経った今、ようやっとNNCを使っている。

人生分からないものだね。

NNCは誰でも扱えるようにしたアイテム

NNC自体はAIに関する内容ではあるのだけれど、単なるアイテムというのでは面白くない。予備知識が必要だと、ググってみた。

まず、ニューロンとニューラルネットワークという言葉は、最低限知っておいた方がいい。

ニューロンとは、

神経細胞(しんけいさいぼう、ニューロン、neuron)は、神経系を構成する細胞で、その機能は情報処理と情報伝達に特化しており、動物に特有である。

神経細胞 – Wikipedia

ニューラルネットワークは、分かりやすく解説している所だと

ニューラルネットワークを日本語に訳すと、『神経回路網』となりますが、その名の通り「生物の脳における神経回路」を指します。

人工知能の研究は優れた生物の脳の構造を模倣したところから始まったのです。

【徹底解説】ニューラルネットワークって一体なに?【人工知能】 – 株式会社ライトコード (rightcode.co.jp)

まとめると、人間様の神経細胞や神経回路網を模したシステム。所謂、人工知能ってヤツですな。

AIに関しては、以前からあった技術ではあるが、最近のコンピューターの進化に伴い、ようやっと実用化できるような状態になってきた。
とはいえ、Pythonでプログラムを組んで、AIツールを作らなければならないというのがあり、一般的には敷居が高かった次第。

それを、ソニーさんがNNCという誰でも扱えるAIツールを発表したお陰で、敷居がグンと下がったという訳。

NNCを色々試してみたよ

NNCの使い方云々は、他のサイトや本にも載っているので、こちらでは省略。クラウド版は時間制限があるが、Windows版アプリは無償で使える。
LinuxのWineを使って、無理矢理NNCが使えないか試してみたけれど、一部動作はおかしいけれど、計算自体はできた。
まぁ、Windowsで使う方がいいってことですな。

NNCを色々試してみたけれど、NNCに限らず、AIツールは、まず「サンプルが命!」なんだろうなぁというのが分かってきた。

AIは、人間様が教えてあげないと、正解か不正解かは分からない。サンプルがダメダメならば、そのAIは当然ダメダメになる。
おいらは、今の所、画像で試しているが、

  • はっきり写っている物でないと、結構きつそう。可能な限りピクセル数が多いのがいい。
  • サンプル数が多くないと、学習効果が表れにくい

…とはいえ、特徴のある人であれば、サンプル数が少なくても、恐らく高い確率で当てることはできるのだろう。それは、人間であっても同じこと。
NNCのサンプルは、画素数が28×28ピクセルと小さいものなので、画像を小さくすると、折角の個々人の特徴が潰れてしまうのだ。
細かい物を評価するには、できる限り大きなピクセル数でないとダメポ…のよう。
しかし、大きなピクセル数の画像を扱うと、その分、計算に時間が掛かってしまうようなので、この辺は自分のPCとのトレードオフとなりましょうかね。

最近やったのは、「俺」か「俺以外」か(どこかの芸能人みたい(;^o^A)というのを当てるもの。

「俺以外」の画像は、ネットから落としてきた「おねいさん」画像だけれど、「俺」の画像は、何日か自撮りして地道に増やしていった。でも、30種類位なので、サンプルとしては、かなり少ない状態。

グラフを見てみると、

それっぽい感じになった。

少ないテストサンプルで評価を行うと、

画像をクリックすれば拡大して見られるはずなので、是非見てほしい。

「Accuracy」というのが、正解率なのだが、何と!驚異の94%なのだっ!!

「俺以外」に、ネットで拾った男性画像を追加したけれど、正解率は100%!? 嘘だろーー-。

結果が非常に怪しいので、更に自分のサンプルを増やしてみて、更に学習・テストしてみたい所である。

これを試す前に、声優であり、アニソン歌手でもある水樹奈々女史 vs AKBで、水樹奈々を正確に当てられるかというのを試してみた。
水樹奈々女史に関しては、20代の頃から40代である今の画像100枚を使用。100枚も揃えてみると、20代の頃は、まだ初々しさが残っているものの、段々とレディになってきているのが分かる。

85.1%だ! きたー--------。
…ということは、メイクが変わり、顔に変化があるけれど、それでも同じ特徴を持っているということなのか。

NNCを使って、指原莉乃ちゃんをディープラーニングしたのを紹介しているブログも紹介しておきたいと思う。このお方に影響されて、NNCを始めたのは内緒。(;^o^A

SONY Neural Network Console で 指原莉乃をディープラーニング | cedro-blog (cedro3.com)

NNCは簡単だが難しい

ここまで来るのに、本やネット情報を見つつ、分からないなりに試行錯誤を繰り返した。NNCは、誰でも扱えるようにはなっているものの、最適なセッティングを探すのが難しい。
画像云々もそうだが、上記の画像にチラッと見えるニューラルネットワークのセッティングも肝だというのも分かってきた。

画像のピクセル数を変えたり、カラー画像にする場合は、「INPUT」の設定「SIZE」の箇所を変えるといい。

NNCのサンプルにある「1,28,28」だと、白黒(1)の28×28ピクセルの画像を扱うことを意味する。カラーで、100×100ピクセルの画像にしたい場合は、「3,100,100」とする。3が、カラー(RGB)を意味する。

今はPCで遊んでいるけれど、そのうち、Spresenseでも試してみたいものだね。