Take’s diary

Macとマイコンに関すること--ワクワクの製作日記

Ai実行環境で、最近びっくりしたこと

この頃プログラムをじっくり作ってる暇が無くなったので、率直に最近素晴らしいと思ったことを書くことにしました。

Pythonista3のスピードが素晴らしい。

          f:id:TAKEsan:20171130211721p:plain

 知る人ぞ知るiPhone、iPad開発環境のPytonista3ですが、いったいどのくらいのスピードで動くんでしょう?。使用ディバイスの金額から考えて、並のスピードならぜったいゆるせない....。過去iMac27インチとかPi3とかTX2でCPUのメインコアスピードの目安として使わせていただいた簡単なPythonのテストプログラムを実行してみました。

         f:id:TAKEsan:20171130212040p:plain

 実行結果はiMac4.776秒。Pi3で32秒。ゲーミングパソコンi7 6600Kで3.2秒。これに対しNvidia  TX2では7.8秒。intel Jouleでは12秒前後でした。まーCPUを考えたら納得の結果です。これを試しにPytonista3をインストールしたiPhone7 Plusで実行するとなんと5秒ジャスト!!。こりゃーiMacなみのスピード!!。さらにiPhone Xで実行すると4.5秒。エ~~ひと昔前のカスタマイズしたiMacより早い。ほかのスピードテストプログラムを実行してもほぼ同じ結果です。Pythonでこれだけ早くて、iPhoneのObjectiv-Cのクラスが使えるし、簡単なShell環境でsshもpipも使えるんですから、必要のものは何なんでしょうか?頭とキーボードだけです。どうりでサンプルが早いはずだ....。

 このアプリの開発環境は非常にスマートだし、何でもできる(この何でもの範囲が無限に近いってのもすごい!!)。UIだって精錬されたスイッチ類が使える。っていうのが率直な感想です。OSのマルチタスクと、疑似マルチタスクの差がプラスに働くとは思いますが、こんなに早いとは思いませんでした。numpyとmatplotlibが標準実装なので、AIを勉強するには環境的にも整っています(Tensorflowやpycaffe等は今のところインストールできない)。これからはメインがiMacからiPhoneになるかもしれない....。ってことは無いか。

iPhoneXがすばらしい。

 f:id:TAKEsan:20171130212919j:plain     f:id:TAKEsan:20171130211245j:plain 

  ついこの前までLEPTON3を使ったThermal Cam3W&T Thermal Cam3 for FLIR LEPTON3 - Take’s diaryにすべてをつぎ込んできました。開発ディバイスはiPhone 7 Plus。やっぱり最新機器で試してみたくなって、早速iPhone Xを手に入れ、アプリストアへのバージョンアップ申請をかねて試してみました。

           f:id:TAKEsan:20171130211220j:plain

                     Thermal Cam3はiPhone Xに完全対応してます。Thermal Cam3 on the App Store

 過去iPhone7 Plusで何十回もテストを続けた経験で、まず驚くのがWiFiのつながりがとても良くなっていること。グラスボディーが電波の改善に貢献してるんでしょうか?アンテナが2つになっているのが原因でしょうか?感覚が全然違います。そしてCPUスピード。これも大きく貢献しているようで、これらの相乗効果からか、全く別のソフトのようにサクサク動きます。Pythonista3での検証でも確認しましたが、単独アプリではひょっとしてi7を使ってるノートパソコンより早いかもしれません。iPhone 7 Plusで気になっていたBlueToothの悪さもあまり問題なくなりました。

 ネット上ではボタンがなくなったとか、カメラが普通とか、顔認証が気にくわないとか外に出てマスクをするとドーとかコーとかいろいろ言われてみますが、開発から見たら7とは別物です。こりゃーこの方たちは、あくまでも現在実行できるアプリを試して感想を伝えてるだけだと感じてます。何かを作ってみたい人はiPhoneX絶対に買いです。

 Metalを中心としたAIに関する将来性や、表示機器の明らかな優位性(これも7とXじゃ全く違います。音で言うとCDとSACDの差っていう感覚です)、なんと言ってもCPUやGPUの能力。擬似マルチタスクの優位性。さらには基本Kinectと思想が同じセンサ類の構成や、今回認識したWiFiの性能を考えると、開発者の能力次第で今後が決まってくる素晴らしいハードだと感じました。

 私のような趣味の人は、GPIOを使ってセンサーや外部機器を使ってみたくなるわけですが、Pythonista3やOpenFrameworksがあれば、ESP8266とのWiFi接続で完結します。精錬されたiPhoneのUI環境で、反応の早いソフトを何でも作れることになります。

 ためしにネット上で公開しているiOS11で実行できるMetalを使ったYOLOの実行環境を試してみました。ここでは認識対象(クラス)が人物の1種類だけですが、どう感じますか?

                           tiny Yoloで20クラスの内、人体だけを認識させている。スピードは問題なくなっている!!

TX2がいい。

  f:id:TAKEsan:20171130212959j:plain

OrbittyボードにWiwaoさんに作って頂いた、バッテリーボードを合体。TX2がバッテリーで動くようになりました。

f:id:TAKEsan:20171203230607j:plain

Wiwaoさんのバッテリーボードは、2個のバッテリー切り替え可能。ラジコン用のLiPoバッテリー(11.1V)を使い、TX2の最高スペックスピード設定で、2時間以上稼働します。しかもバッテリーの使用状況も写真のようにLEDで表示します。Orbittyボードと組み合わせると、超小型パソコンに変身します。デモにぴったり!!

 私にとってIPhoneXがカリスマ性を帯びてきている昨今。なんかTX2は自分的に影が薄くなった感じがしてましたが、この前に紹介した全体的に小型化できるOrbittyボードが使い物になったとき、全く別物に変身しました。(今までTX2ではUSB3.0が接続できなかった)

 TX2のいいところはなんつったってUbuntuがサクサクなことです。この開発環境はiPhoneのAppleに縛られた不自由さとは違って、霧が晴れたような使い勝手と潜在能力が最大の魅力。アマチュアでGPIOを触りたい人はこれ以上の環境は無いと思います。

                  

TX2で標準YOLOデータを使ってREAL-Time Object Detectionを実行しているところ。ただしスピードアップするためにyolo.cfg中 widthを608から448、heightをwidthを608から448に変更。以前試してみたPy-Fastere-RCNNとはスピード的に雲泥の差!!

                  

さらにスピードアップするためにyolo.cfg中 widthを228、heightをwidthを228に変更。このくらいだと、かなり早くなるが認識率がいくらか悪くなる。                  

                 

これはThermal Camで録画した動画を以前作ったOpenFrameworks+Jetson-Inferenceで人体認識させたもの。Jetson-InferenceではNvidiaでオススメのTentorRTを使って認識させていますが、Yoloが20クラス認識することを考えれば、ソフト作成に手間取った割には何だかなーっと言う結果です。でも、サーマル画像で人が認識できるってすごいと思いません?夜間での動物認識はお手の物ってことになります。

 やっぱESP8266が.....

GPIOを操作するには、母艦がTX2やiPhone Xだと言うことなし!!

 

                                では、また。