2019年8月19日月曜日

Google Lensによるリアルタイム画像認識

 先の記事は、Google Photoに格納された画像のGoogle Lensによる認識に関するものでした。実は、スマホのカメラで撮影して、リアルタイムにその画像を認識することもできます。(ただし、AndroidかiOSか、またOSのバージョンや搭載カメラによっても違いがあるようです。)

 猛暑が続いている毎日ですが、ふと見ると、ベランダにセミが舞い降りていました。早速スマホで撮影して、Google Lensでリアルタイムにそのセミの名前を得ることができました。下図の左側がそれです。「アブラゼミ」に違いありません。

 と思っていたら、そのセミが勝手にでんぐり返って動けなくなってしまいました。その仰向けの状態を撮影して、再度リアルタイム判定しました。 右側の図のとおり、結果はさきほどと同じく、「 アブラゼミ」でした。


 Google Lensは、あらゆる画像を大量に学習しているようです。向きや背景などによらずに認識できる頑強さがあります。ある物について詳しく調べようとする場合、まずその名前が分かることは重要です。名前が分かれば、さらに詳しい情報を検索する手段は色々あるからです。

【補足】
 これまで、画像からの植物の名前の特定と、セミの種類の特定をやってみました。最後に、写真の風景(撮影場所)は的確に判定できるかを試して見ました。結論としては、実に見事というほかありません。以下の例は、以前訪問したことのある、ボストン市内とMIT構内、ビクトリア(カナダ)、および、ある国内大学ですが、実際の写真の一部を切り取ってコピーして新たな画像としたものをGoogle Lensへ与えています。すなわち、GPSの位置情報などは含まれていません。しかし、判定結果はとても的確です。

 





 こうなると止まりません!もう一つやって見ます。MITメディアラボに展示されていたSaymour Papert(1970年代)によるLogo Turtleです。これは、Computational Thinking教育の象徴、原点とも言えるデバイスです。その写真をGoogle Lensに調べさせてみました。小さな説明パネルも写っていたのですが、テキスト情報によらずに画像だけで解析してもらうため、ここでは意図的にそれを除外して入力しました。

 以下の図のとおり、解析結果として候補はいくつか表示されたのですが、その中に、このLogo Turtleが2件見つかりました!2件とも、MITメディアラボの展示を撮影したものと思われます。



 この例のように、「半透明プラスチックの中に車輪のあるこの装置は何か?」を調べるのに、まず、Google Lensでいくつかの候補を得て、「多分これじゃなか!」と思える画像をクリックすることで、さらに詳細な情報へ行き着くことができます。

 小学生がいる場合、「もう夏休みの宿題は済みましたか?」

2019年8月15日木曜日

植物の写真1枚からその名前を特定できるか

 現在の人工知能技術(特にDeep Learning)では、例えば、動物の写真を与えると、「鳥」「馬」「ゾウ」などを識別可能でしょう。しかし、草や花などの植物の写真を与えた場合、その名前まで特定することはできるのでしょうか。

 すでにご存じかも知れませんが、スマートフォンのGoogle Photo / Google Lensを使うと、それが驚くほど的確にできることが分かりました。そこまで、AIによる画像認識は進んでいるのですね。実際にそれを確認してみたいと思います。

(表示の都合上、横向きにしてあります)

 渡辺 坦氏による資料[1]のWebサイトには、植物の色々な角度からの特徴を指定することによって、段階的にその植物の名前とその説明を探す手段が提供されています。そこには、約2,400種の植物の詳細な記述と多数の写真が掲載されています。今回、そのうちから、(ほぼ)ランダムに20種を選んで(聞いたことのない品種は除き)、写真を引用させていただきました。

 その20枚の写真を、Google Lensに与えて名前を判定させた結果を以下に示します。20枚のうち、実に18枚の写真については、正しい植物名が直ぐに得られました!すばらしいと思います。(ただし、正解18枚のうち、3枚は、第2候補か第3候補に正解がありました。)残り2枚は正確な名前は出ませんでしたが、情報としては有用なものが得られました。なお、この20種は、2,400種のうちではかなり名の知れた植物であり、Google Lens側での学習がかなりなされていると思われます。


 上図の判定結果のうちから、詳しい画面を2例、以下に示します。1枚の写真を与えただけで、植物の名称(および、そうと判断した根拠となる出典なども)が得られています。植物図鑑や関連Webページなども広く学習しているようです。名前の候補として表示された画像をクリックすると、詳細な情報のあるwebページへ行きます。


 これだけ素晴らしい結果が得られる背後には、膨大な画像の学習の蓄積があるはずです。ユーザの試行結果も当然、収集され学習に反映されているでしょう。このGoogle Lensは、もちろん、植物だけではなく、一般の物体などを対象にしているはずですから、その奥の深さを改めて感じます。

 最後に、植物ではなく、今が盛りの「セミ」の名前(種類)3つは判定できるでしょうか。「ミンミンゼミ」「クマゼミ」「アブラゼミ」の3枚の判定結果を示します。これも素晴らしいです。「ミンミンゼミ」については、入力したWikipediaの画像そのものが、第1候補としてヒットしました。これを見ると、Wikipediaも重要な情報源として学習されているようです。



参考資料
[1] 渡辺 坦、植物の名前を探しやすいデジタル植物写真集

2019年8月11日日曜日

チョークアート:大学のオープンキャンパス案内

 大学のオープンキャンパスでの催し物案内には、きれいなカラーパネルやポスターなどが使われます。そのなかで、黒板とチョークを使ったチョークアートによるものも良いです。手作り感もあり、ひと味ちがいますね。

 この大学での「在学生トークコーナー」を案内するチョークアートですが、2016年と2019年のものがありました。3年間で着実に進化しているようです。


2019年7月25日木曜日

AppyBuilder Online will be closed for a while

I have developed various apps with AppyBuilder. I have been enthusiastic because both the design and the functionality of this system are good. Below are some of the applications I developed.

Some of the applications I developed with AppyBuilder
However, there has been an announcement that this online version will be closed from August 1st. The reason is that it takes time to concentrate on the development of a new version up to the 1st quarter of 2020. Once I knew that, I have to download and back up the apps I developed so far. And I expect new versions to be released successfully.

AppyBuilder also offers an amazing CodeEditor. It is very good at developing Extensions for App Inventor. Thanks to this, for example, I was able to easily develop the JSON Decode Extension as shown below:

http://sparse-dense.blogspot.com/2019/01/a-json-decoding-extension-for-app.html?m=0
http://sparse-dense.blogspot.com/2019/01/a-json-decoding-extension-for-app_19.html?m=0


I would like to expect further development of the CodeEditor.

2019年7月22日月曜日

MATLABセミナー:農業分野へのインパクト

 MathWorks社では、年1回のMATLAB EXPOという大規模技術展の他に、随時、セミナーを開催している。今回は下記セミナーに参加した。MathWorks社からのチュートリアル2件と、ユーザによる活用例2件(東大と八千代エンジニアリング)があった。会場のNext-1の定員は180名とのことだが、ほぼ満席に近い盛況であった。(スライドコピー等の配布資料は無し。)

MATLABおよびSimlinkセミナー
https://jp.mathworks.com/company/events/seminars.html
「ユーザから学ぶ画像処理・ディープラーニングでのMATLAB活用例」
2019年7月22日(月)、秋葉原UDX Next-1

MATLABセミナーが行われた秋葉原UDX(Google Mapsより)

 MATLABをすでに使っている人にとっては、MathWorksからのチュートリアルはそれほど目新しいものではないと思われるが、いくつかのポイントを以下に示す。
・MatLabのユーザは、世界で約400万人とのこと。
・日本国内では、約2,000社が利用している。
・画像処理のワークフローを宣言的に書けるので、プログラミングに煩わされずに自分が行いたいことに集中できる。
・MatLabコンパイラにより、成果物(MATLABコード)をスタンドアロンアプリ化して配布できる。
・Deep Learningだけでなく、そうではないルールベースの画像処理も充実。
・Deep Learningの処理の目的は「分類」、「検出」、「セマンティックセグメンテーション」の3種。
・これら3種それぞれに、ラベル付けの方法がある。

 小生が最も聴きたかったのが、東大(D1生)の発表である。これについて、以下に述べたい。実は、この研究成果は、2019年5月のMATLAB EXPO(台場で開催)のポスターセッションで公開されていた。小生は、すでにその報告をブログ記事としてここに書いた。今回、さらに詳しい内容と、ポスターセッションにはなかった農業分野での新しい展開も示された。この発表に、改めて感銘を受けた。

 今回新たに、「みかん」の熟度判定に蛍光分光法を用いて、みかんの最適収穫時期(糖酸比に基づく)判定を画期的に省力化できることが示された。ベイズ最適化を組み合わせたDeep Learningを行った。CNNは非常に有力ではあるが、なぜうまく行くのか分からない点もある。また、ネットワークの構造や実行制御のためのハイパーパラメータの調整も一筋縄では行かないとのこと。さらに、「とうふ」の凝固の制御(やわらかい、かたい)について、職人が長年の勘で判断していたことを置き換えるかも知れない方法もやっている。それは、とうふのできる過程でのレーザビーム反射光の画像を分類することだと言う。

 Deep Learningには、一般に多くの計算パワーが必要である。MATLABには、AmazonのAWSを使ってMATLABコードをクラウドで計算させる仕組みがある。これを使った。たまにしか使わない人にとって、自分のスケジュールで、使った分だけ支払うこのやり方のメリットは大きい。一例だが、自分のPCでMATLABコードの計算に25分かかったものが、AWSでは4分で完了した。

 MATLAB EXPOの時にも述べられていたことだが、以下の取り組みでは、実はDeep Learningはやっていない!ルールベースのアルゴリズムで、独自にプログラムを書き上げた。それにより、農園の「桃」の個数と熟度を判定できる。また、「いちご」の画像から、いちご一粒づつのサイズと糖度を認識する。さらに、3次元スキャナー(ライダー)の画像から、木の葉が重なって見えていても、葉っぱ一枚づつを確実に認識し、葉の面積、傾き角度も認識できるという。これらの、Deep Learningでないやりかたは、自分にフィットして制御しやすく、結果に応じて修正もやりやすい。そういうメリットは大きい。

 この発表のタイトルは、「機械学習や3次元点群処理技術が切り拓く植物計測の技術革新」となっている。まさに、その通りであり、農業分野へのインパクトは非常に大きなものとなるであろう。

セミナーで配布されたグッツ

2019年7月13日土曜日

Real-time image recognition demonstration on a smartphone using TensorFlow.js

There are many examples of image recognition (especially classification) by AI, but the "Google AI Experiments" introduced here seems to be further evolved. It was announced at TensorFlow Dev Summit 2019. Do you already know? This Summit's  38 lecture videos are available on youtube:

https://www.youtube.com/watch?v=GRMvCeIKvps

I tried the demo called "Teachable Machine" among them. As shown in Figure 1, the smartphone classifies images into three types. The Javascript version of Tensorflow runs under the web browser. A local Neural Network in the smartphone performs image training and evaluation without sending the image to the server. Of course, as long as this demo is used, no coding is required at all.


Here, we prepare three types of images of a hat, i.e. "back", "side", and "front", as shown in Figure 2, about 10 images each. Is it all right with such a small number of images? You may think that "transfer learning" is working there. In other words, this Teachable Machine should be using a Neural Network, which has been trained with a huge amount of images for a certain purpose.


Let's train this as shown in Figure 3. That is, press the corresponding button (train button) at the bottom to label each image. Each time, the image is trained in real time. For each of the three types, 10 images should be trained. After that, if you take a picture of the hat with either the back, side, or front, the orientation of the hat will be immediately determined. Actually, as you can see, everything was accurately identifiable! 100% confidence!


Next, try shooting with the hat in an ambiguous direction, not exactly on the back, side, nor front. As human beings feel, the result seems that Neural Network can not judge with certainty. It was a judgment that "maybe a side (59% confidence)". This is another good point.


● The university's graduation research is becoming increasingly severe. Even if you work hard to code and create an AI application, it seems that it is difficult to go beyond applications that can easily be made with no coding like this example. But on the other hand, the Teachable Machine demo app is just a demo. Kindly, the source list is also published. It's great if you can use this to solve your own problems. The level of graduation study goes up by this.

● This trial was carried out with smartphone Pixel3a (Android OS 9). Of course, it is also possible to use a PC or Mac, but the point is that you can train and evaluate in real time on your smartphone. Note that this demo will not work on iPhone and iPad.

2019年6月24日月曜日

June flower, Hydrangea ("Ajisai")

The flower of the rainy season (June) in Japan might be Hydrangea ("Ajisai", in Japanese). At this time of year, I see this flower in the neighborhood. It is a calm, beautiful flower. Six years ago in June, I traveled to Victoria, Canada, to attend a conference. I remembered that the garden of the hotel was in full bloom. It bloomed at the same time though there was a considerable difference in latitude in Tokyo and Victoria. I was able to find the photo right away in Google Photo. The following pictures are some of them. It seems to be common to see the flower and to feel at ease.


2019年6月17日月曜日

Javaに関する2つのニュース

Javaに関する以下の2つのニュース(2019年6月)に注目したいと思います。

Due to copyright issues, I put a picture of my Java notebooks instead of a news image.

まず、Microsoftからの発表です。
「Visual Studio Codeでの新人Java開発を支援するJava Pack Installerがリリース」

以下の[1][2]にその内容があります。実は、Microsoftは、元々、AdoptOpenJDK projectのプラチナメンバーとしてその開発に関わった来たのですから、自然な成り行きとも思えます。ともかく、このMicrosoftの発表によって、Javaはさらに底辺を広げることになるのではないでしょうか。

次のニュースは、IT関連企業への転職で求められるプログラミング言語に関するある調査結果です。
「転職求人において最も多く要求されるプログラミング言語はJavaである」

参考資料[3]にあるとおりですが、エンジニア向け転職サイト「レバテックキャリア」での発表によれば、Java、PHP、Ruby、C#、JavaScriptの順だという。これ以外に、台頭著しいPythonのシェアについても言及があります。さて、みなさまはこの調査結果にどう反応されますか?

例えば、Java、C#、C++のうち、どれがもっとも優れているか?それは愚問ではないでしょうか。トヨタのハイブリッド、日産のe-Power、スズキのハスラー、それぞれに多くの愛用者がいます。プログラミング言語もそういった側面を持つ。

[参考資料]
[1] Announcing the Visual Studio Code Installer for Java
https://devblogs.microsoft.com/visualstudio/announcing-visual-studio-code-java-installer/
[2[ Visual Studio Codeでの新人Java開発を支援するJava Pack Installerがリリース
https://www.excite.co.jp/news/article/Cobs_1922225/
[3] 転職求人の多いプログラミング言語、2位は「PHP」 1位は……
https://www.itmedia.co.jp/business/articles/1906/12/news123.html

2019年6月7日金曜日

日本タンポポと西洋タンポポ(2)

前の記事(1)では、西洋タンポポと日本タンポポの違いをみました。そうすると、次は、Deep Learningで両者を区別してみよう、ということになりますね。

以前にもご紹介しましたが、子供向けのAI体験システムであるML4K(Machine Learning for Kids)を使えば、コーディングも全く無しに、直ぐに結果を得られます!制約はもちろんありますが、素早く使えるこの優れた環境は、大人も遠慮する必要はありません!使ってみましょう。

ここでは、西洋タンポポと日本タンポポの画像それぞれ18枚づつを用意して、それを学習させます。実際には、バックでIBM WatsonのVisual Recognizerが動きます。一般的な画像認識の学習には、数百〜数千枚の画像が必要でしょうが、少ない画像でも(最低10枚以上あれば)一定の結果は得られます。


通常、数分で学習済みになりますので、学習用とは別に用意した画像でテストしました。西洋タンポポと日本タンポポの画像それぞれ1枚でテストしたに過ぎませんが、下図のとおり良好な識別結果が得られました。


これじゃ、小学生の夏休みの宿題くらいにしかならないかも知れません。でも、これだけ簡単にAI技術体験ができることは、誰にとっても嬉しいことです!

日本タンポポと西洋タンポポ(1)

とうとう本日(2019-6-7)梅雨入りとなりました。情報工学科のブログに以下の記事が載っていました。そろそろたんぽぽも終わりの時期ですが、まだ綺麗に咲いているようです。

たんぽぽ(?)の自然群生
http://blog.cs.kanagawa-it.ac.jp/2019/06/blog-post_5.html

たんぽぽ(?)と疑問符が付いていますが、恐らく、たんぽぽだと思います。ところで、たんぽぽには、西洋タンポポと日本タンポポ(カントウタンポポ等)があります。最近は、西洋に押されて、日本のは減少傾向のようです。

さて、その見分け方ですが、以下の図のように、花の下側にある総苞の形態で決まるとのことです。渡辺坦氏による参考資料[1]には、以下のような要約記述があります。詳しい説明と写真も掲載されています。
  • セイヨウタンポポ: 葉は羽状深裂し、花は舌状花のみで、総苞片は反り返る。
  • カントウタンポポ: 葉は羽状深裂し、花は舌状花のみで、総苞片は直立する。



本日から梅雨入りということなので、雨がまだ降る前の早朝に、近くの田んぼのあぜ道へ行って探してみました。幸い、上図のとおり、西洋タンポポと日本タンポポの両方とも見つかり(両者は数十メートル離れていましたが)、iPhoneで撮影することができました。

情報工学科のブログ記事のタンポポも恐らく、日本タンポポのように見えますが、正確には、総苞を調べないと断定できません。

[参考資料]
[1] 渡辺 坦: 植物の名前を探しやすいデジタル植物写真集