2019年7月31日水曜日

固有振動数

目標の為にはなんでもしないといけない、電気、プログラミング、物理、流体力学、力学、統計学…


原因不明の誤作動で、ノイズフィルターや金属ケースで外界からのノイズの除去等で一年近く試行錯誤して断念。サーボモータの原因?と言う事でブラシレスのジンバルを政策集

性能は向上しましたが、重量が倍になってモーターの出力と基盤の小型化中である記事に遭遇
なんとブラシレスでも誤作動があるらしい…
と言う事は6軸センサーに影響が電気的な問題ではなかったと言う事?
テスト中は目に見える振動がなかったのですが、確かに負荷が上がるとある程度の振動はあるのですが、それが影響しているとは思っていなかった。
確かにスポンジが下に付いているのが防振であるのは理解出来ます。
ただ振動の周波数がわからない。センサー+真鍮である程度固有振動数を調整してそれ用のスポンジで振動を吸収するのでしょう?
固有振動数に位相をずらせば最小になるはず、でも手持ちの固有振動数がわかったところでダンパーに使う材質がその周波数を吸収出来る能力があるなんて測定機器があったところでどうにもならない。
とわ言え何もしないでいても仕方がなりのでスポンジや緩衝材を探しにコーナンへ
あとゲル状のものをダイソーでピックアップ。
ドローンの実際の振動はわからないので振動歯ブラシにMPU6050をつけて印刷の文字が読めるかでテスト結局防振粘着マットが一番結果が良かった。鉛のウェイトで固有振動数を調整してみたけどあまり良い結果にならず。
違う種類jのスポンジと緩衝材を重ねると同じ様な結果になるが、厚みが10mmを超えるのでこれで実機テスト…
その為だけに10万円のドローン買う?
もう少し検証が必要。

早稲田大学で講演⁉️

前回の横浜の展示会の展示を見た方からの以来で9月7日に早稲田大学にて催されるサーモロジー学会で講演(デモ)する事になりました。睡眠学会とも言っていましたが詳細は8月に早稲田大学先生が直接関西電機に依頼の為来阪されるのでその時に詳細確認して内容を考えます。
現在の展示物を医療用の承認は難しいので、講演の内容はサーモグラフィーを使った深層学習とその理論の説明にしようと思います。
高田馬場には行った事はありますが、早稲田大学は行った事がありません。
工学部もあったと思うので私が講演とはおこがましい感じもありますが、何か良いきっかけが出来るかもしれないので発表内容を考えます。
余興的にデモする方が喜んで頂けそうな感じもします…
第38回 臨床熱画像検査法講習会 ?

2019年7月20日土曜日

AIとIoTのPV会での講習内容

今までは社長や社内の人にはある程度理解があるとしてこれまでのブログで説明してきましたが内容が自分でもいま1つ面白くないので、一から考え直しました。

この1年である程度のAIとIoTの理解が出来たのでそれを踏まえて説明を作る良い機会だと思います。

新しい技術のポイントは”便利”と感じる体験です。
昭和の頃は全自動でが便利な時代でした。そのシステムの理解も小学生レベルで十分でした。
今も全自動ですが、そこに嗜好を含む入力で目的の情報を瞬時にその場で出力する事がAIとIoTの便利な体験です。
大きな違いはパソコンやスマホがある前提のサービスです。もう所有している事を意識していないと思うくらいです。
インターネットに繋がっているので世の中の全ての情報にその場でアクセス出来てサーバー側やパソコンやスマホ側で複雑な計算が瞬時にできる様になっています。

でこれからが初心者へのAIとIoTの説明です。


AIやIoTとは何ですか?との問いに対しての答えは、

”AIとは日本語で人工知能と呼ばれビックデータから目的の情報をキーワードから答えを高等数学を使って推測する技術です。”
”IoTとは(internet to things)の略で物とインターネットで繋ぐ機器とその技術です。”

ふ〜ん…
パソコンやスマホを持っているのでなんでもインターネットに繋がっていろいろな情報を得る事ができるのでIoTはなんとなくわかるけど…
”AI”ってもう少し詳しく説明して!

はい!
”目的変数を決め、説明変数を想定してそのデータを集めてそのデータを正規分布に整理、微分積分や線形代数(行列演算)を駆使してカルマンフィルター等で不要な情報を取り除いてをベイズ推論を使って目的変数を求めます。”


なにそれ?もっと分かりやすくしてよ〜!
微分積分も授業中寝ててよく覚えてないし、今まで微分積分は知らなくても人生で困った事ないし…

はい、例をつかって説明します。

みなさん洗濯します?
奥さんがしますか?


では今日洗濯して干すとします。その後すぐ雨が降ると分かれば干しませんよね。
まず天気予報をみますよね。(天気予報もAIですが、それは置いておいて…)

人は知能をもって無意識に経験にのっとって行動しています。
天気予報をみて洗濯物を干すのですが、天気予報でも100%確実でないと経験的にわかっているのでその時の自宅周辺の空気や雲行きを見て干すか干さないかを決めていると思います。
洗濯物を干す=目的変数。天気予報、その時感じた空気、雲行き=説明変数です。

株取引されますか?
私はしませんが、株価=目的変数。その会社の現在の業績、その会社の期待値、その会社のブランドイメージ等は説明変数で買う買わないで買う買わないを決めるのが一般的かと思います。

カジノに行きます?(海外ですよ!国内ですると賭博法で捕まってしまいます。まあ公営ギャンブルでも良いのですが、競馬競輪ってやっていますって日本では自慢できませんよね?私の偏見?)

ルーレットで数字に賭けますか?赤黒に賭けます?
その数字の枠もしくは赤や黒の枠に球が入る事自体は確率変数だけでAIではありません。

ただその遊び方にAIは使えるかも?(賭け事を推奨する訳ではないのでお間違えなく!)

20年位前に私は恩師にマカオやマレーシアカジノに度々一緒に連れて貰いました。
カジノに興味はなく暇つぶしに千円位を賭けて1分程でゲームは終わり後はその人のゲーム眺めるだけでした。
恩師はというと、ルーレットに向かい、ずーっと賭けていました。遊びの上手な方で囲碁将棋、麻雀等が上手い人でした。
で、どうして長い時間賭けていられるかというと赤黒に賭けるだけでした。
赤にコインを2枚、負けると赤にコインを4枚、また負けると8枚…(当然黒でも同じです。)
お分かりですか?赤黒の確率は二分の一で赤の確率は50%なので最初に負けても次に倍、その次に倍を賭ける事で必ずどここでコインは戻って来ます。負けません。勝ちもしません?でも遊び続ける事はできるので損はしていません。飲み物は無料ですし。

確率論からもう少しAIへ応用問題です。

モンティホール問題と有名なクイズコラムがあります。
1990年9月9日にニュース雑誌に掲載され、博士号を持つ多くの学者も間違える程で有名になりました。当時ギネスブックの知能指数世界一のマリリンボスサヴァントが出題する”マリリンにおまかせ”(Ask Marrilyn)というコラムです。

さて問題です。
①のドア, ②のドア, ③のドアがあります。
そのどれかのドアの向こうには高級車がありそれが当たりの景品です。残りのハズレの
ドアには羊が居ます。

今回は私が出題者になってみなさんに問題です。
①②③のどれかのドアを選んでください。心の中で決めて下さい。どれでも良いです。

はい、それでは私はそれ以外のドアの1つを開けます。そのドアには羊が居ました。

ここからが本題です。
最初に選んだドアを変える事が出来ます。みなさんは変えますか?

残りのドアは2つなので確率は50% ??
お分かりの様に、はじめはドアが3つなのでそれぞれ1/3の確率です。
司会者の私がそのうちの1つのハズレのドアを開けたので残りは2つのドアです。

二者択一の問題なので50% ?
はい!間違えです。ドアを変更すれば確率は倍になります。

最初の確率(ベイズ理論の事前確率)はドアが3つなのでそれぞれ1/3、私(司会者)が選んだドアがハズレで、その後みなさんがドアを変更すれば2/3なるので確率としては2倍になります。
先に上げたベイズ定理を使ってコンピューターで計算しても同じ答えになります。
一見偶然の問題のようですが、ベイズ定理を使った事後確率の問題になります。
私がみなさんの次に選んだトアがハズレで羊が居る事でベイズ理論の事後確率に変わっているのです。

もう少しわかりやすく説明を加えると、

A.最初にみなさんが選んだドアが当たりの場合、
最初選んだドアから変える場合は1/6の確率でハズレのそのままドアを変えないで当たりの確率は1/6。

みなさんが最初に選んだドアがハズレている場合(例えば①のドアを選んでいた場合)、

B.②のドアが当たりの場合、最初に選んだ①のドアから②のドアに変えると1/6の確率で当たり、③に変えると1/6の確率でハズレ。

C.③のドアが当たりの場合、最初に選んだ①のドアから②のドアに変えると1/6の確率でハズレ、③に変えると1/6の確率で当たり

B,Cどちらも最初に選んだドアがハズレている場合に司会者の提案にしたがってドアを変える事でAに対して確率が倍の2/3になります。

これが答えです。

おおいに悩んで下さい。

ネットでモンティ・ホール問題を調べてみてください。
自宅でご家族の方々に出題すると面白いかもしれません。

さて、AIでは統計学は不可欠でそれが前提で全てのAIが成り立っています。
日本では長く頻度論といった統計学が主流で例えば選挙等で母集団(日本総被選挙者)から適当なサンプルを取り出してその中で一番多い投票から実際の当選する確率を導き出す事が統計学の主流です。これはAIにつかえません。

近年統計学で主流なのはベイズ理論です。アメリカでは統計学=ベイズ理論といっても過言ではないです。
なぜかというとこのベイズ理論でAIや自動運転は成り立っていると言っても過言ではありませ
頻度論パラメータが定数、データが変数(確率変数))とは反対のパラメータが変数(確率変数)、データが定数です。詳細の説明は長くなるので割愛します。
お知りになりたい方は初心者向けの統計学の漫画を紹介致します。
合計3冊読む事になりますが…

1701年に生まれた数学者トーマスベイズ(もともと牧師)が提唱した理論で近年注目されているのは、この理論がないとAIも自動運転も成立しないのです。
ベイズ理論の中では多くのデータが必要でその答えを出す際に行列演算が使われます。

行列演算の式

このベイズ理論を駆使して目的変数を導き出す為をコンピューターで計算するためにぎこの行列演算の足し算、引き算と掛け算をします。(割り算はありません。)
説明変数を増やせば確率は上がるのですが、計算が膨大になる事がわかっています。

スマホで有名なiPhoneですが、その中で毎秒5兆回の演算処理(計算)ができるのでAI機能が優れていると書いています。
その5兆回の演算のほとんどはこの行列演算になります。

ほんの少しですが、その演算のイメージはこんな感じです。
そもそもデータとはアナログの信号なのでばらつきます。
このばらつきを正規分布にします。
これらの点を結んでどんどん積分するとこんな表になります。
今は2次元ではなく3次元のデータを扱うのでこの平面に奥行きのデータ(要素)があるのでこんなデータです。
これらを3次元で積分すると…
こんなデータになります。

これらの座標データをコンピューターやスマホ(GPU=グラフィックボード)で行列演算するとあっちち(コンピューターが処理する時の熱でドライヤーの高温状態の様な排熱がでます。)

はい、これが今流行りの人工知能=AIです。
これらの数式や、コンピューター(のGPU)を使って自動車の自動運転、コンピューターゲーム、シュミレーター、仮想現実(VR)等にも応用されています。

30分でAIの全てを説明をするは大変難しいです。
お分かりになりましたでしょうか?

one more thing !
おまけ

業務委員長の安達様はレースカーをサーキットで操る腕前とか…

自動運転もAIと同じ手法を駆使しています。
理想のコースを想定して、マシンの最大値を入力して学習させます。学習はこの動画の様に何度も失敗させてデータを取ります。



まず理想のコースと理想の運転をモデル(AIの学習済みデータをモデルと言います。)計算して作ります。
実際のマシンはコースの風やタイヤの摩耗で同じ運転をしてもその影響で理想からは外れて行きます。その要素全てをできるだけ予測(推論=AI)して運転するとこうなります。


これはミューヘン大学の自動運転に関する動画の一部です。
(相対性理論のアインシュタインの通った大学です。)

この自動運転のAIを実践している会社が電気自動車で有名なテスラです。
日産の自動運転はこのごく一部の技術だけを使っています。(日本の法規制上致し方ありません。アメリカや中国では自動運転の事故に対して道路交通法や関係法は整備されています。)

因みにこれらのデータを使えばシュミレーターでこんな事が出来る様になります。
ゲームか?

と思われる方もいると思いますが航空会社がパイロット養成に使う9軸センサーと6軸駆動のシュミレーターを高性能ゲームパソコン+シュミレーションソフトとトラック用のワイパーのモータ6台を駆使すると…
これで飛行機やヘリコプターの操縦やニュルンベルクのサーキットのデータとレース車のパワーユニットのデータを入力すると結構リアルな練習が出来ます。



VRメガネ(仮想現実)を使うともっと没入感のあるリアルな体験になります。
視覚が騙されるからです。VR体験はいずれどこかでデモする予定です。
VRは体験しないと説明出来ません。その感想は弊社寺田にお伺い下さい。



2019年7月7日日曜日

AIとIoTの社内説明用

坂田さんに言われたので、中々短時間でAIを説明する事は難しいですが、あえて社内の状況に合わせて説明を作ってみました。

AIは以前Fuzzy(ファジー)と言っていた時があります。考え方は今と同じですが、ハードとソフトの処理能力が遅かったので閾値を超えて何かを入切りするといった制御からどちらかと言えばAもしくはBといった判断をさせていました。

さて社内でお馴染みの計測装置は温度が何度になったら入り切り、シーケンサーを使って何かの閾値を超えてある時間が経過したら動作するといった制御です。

例えばダイヤル温度計の様なアナログの入出力は特にノイズを取除く制御も必要無いです。

問題はデジタル機器はセンサーの測定やCPUの演算の際に熱等のノイズで出力にバラつきが出ます。
デジタル機器は測定のインターバル(サンプリング)が高速で(毎秒数十回以上)で上記の様にばらついてしまいます。
そこでサンプリングを例えば1秒毎にしてバラつきをとるのですが、例えば26度でONとすると25.9度と26度を行ったり来たりする時の事を考慮します。チャタリング防止。

ここまでは昭和の制御…
実際の温度自体(実際の温度)はそうなる事(25.9-26-26-25.9-25.8が数秒間隔)は稀です。現代制御はそもそも、実際の温度をセンサーからノイズを除いて極力正確に抽出します。
26度の1分後に60度になる確率は低い(0%ではない事は確か)その可能性の高い温度を予測値(期待値)として扱います。
出力値を確率的な処理をするとこうなります。(正規分布図)
実際には急峻なカーブやなだらかなカーブだったりしますが、正規分布図の頂点の値が出力結果になります。
1秒後の期待値(予測値)、1分後の期待値、1時間後の期待値…
他の要素を加味するとより正確に実際の数値に近くなります。

なぜ期待値もしくは予測値かと言うと人間お風呂を沸かして入る時に100度になっているとは思いませんね。それは湯沸かし器を理解してそうならないであろうと予測(期待はしていないと思いますが…)している訳です。人工知能も同じ様に経験(学習)から予測します。

データが実際の値に近い若しくはその値であればその数値を使った次の予測は良い結果が得られます。ちゃんと学習すればテストに合格するようなものです。

AIの値はこれらの確率に基づいた数値によって成り立っています。

現在の計測装置のセンサー出力にこの予測値がなくても問題がある訳ではありませんが、予測値があれば機器の寿命や関連機器の調子が分かったりとサービスは向上します。
詳細の説明は長くなるので…

具体的な例でスマホでのグーグルマップの自己位置推定があります。
GPSで位置を取得するのですが、建物の中はGPSの信号は届きません。次に携帯電話の基地局はWiFiステーションの位置データから現在の位置を割り出す。移動していれば携帯の中の加速度センサー、ジャイロセンサーでも補助します。
それらのデータから一番妥当な位置を表示します。

GPSのデータがノイズの影響で違う距離の位置を拾ったとしてもそれまでの位置データだセンサーデータからの移動距離を加味して導きだします。

またAI技術でわかりやすいのは迷惑メールのsort機能でしょう。
@迷惑メール.ドメインや3829isk2ji@nantoka.comは迷惑メールルールで迷惑メール.ドメインは受信しない、数字と記号のメールアドレスは受信しないとルールをつくれますが、ルールを作るとキリがないので迷惑メールのルールをサーバー側でその特徴をどんどん学習させます。未知の迷惑メールもその学習結果で回避出来ます。

株価のトレンド情報もAIとは言いませんが(AIと言う会社もありますが違うと思います。)ベイズ理論で成り立っています。どれだけ業績が良くても無制限に株価は上がりません。為替レートも日本列島が消滅しない限り$=1円や200円はありません。
保険会社の料率と配当もベイズ理論=確率論的予測値に基づいています。

でこれがみんなの給料や現在の仕事に役に立つのか?
これを確率論的な答えをすると、
①知らないで徳をする事はありません。
②より多くこれらを理解する事で損をする事はありません。

そんな事がAIやIoTになります。それを実践しています。

くどい説明はしてはいけないと何度も注意されていますが、長くなってすみません。

2019年7月1日月曜日

現在の状況

今小野さんでやっている事は実験的な試行錯誤です。

C言語を操り、ハードの構造を理解しているので一般的な1+1の様な事はしていません。
理論的にYOLO(AI画像認識)、マシンビジョン(画像の特徴を捉える)、他の処理を平行して進める。これらを組み合わせて結果をスムーズにする事。(1+1)x2見たいな事をしています。

CPUとGPUの処理がデスクトップ並でメモリが潤沢にあれば、特に難しい技術ではありません。電力も問題で何百Watts使えません。
ソフトをどれだけ効率良く組むかが問題になっています。
昭和の初期のマイコンの経験が生きています。アッセンブラーまでは扱いませんが、機械がどの様に動いているかをイメージしながらの試行錯誤です。
ここをkB節約してここに持ってきてみたいな事です。

AI画像認識はそれを判断するデータが何GB、それを処理するのでどうしても時間と電力がかかってしまいます。なのでデスクトップパソコンで1秒間に60フレームの処理をするところを今回のシステム2、3フレームが精一杯。(それでも数年前のパソコン並の処理をしています。)今の会社のパソコンとあの小さいGPUが今回の処理に関しては互角の情報を処理しています。

そこで今回の重要なポイントはそれにマシンビジョン(オブジェクトトラッカー=画像の中の特定のものを追いかける処理)を組み合わせてなおかつ処理を早くしようと試行錯誤中。これ結構最先端の技術でそれを個人でやっているのでみんなが注目しています。
小野さんによれば結構地味な作業とトライアンドエラーの繰り返しです。

話を戻して、AI画像認識がGPUの負荷が10とするとオブジェクトトラッカーは2か3で済みます。なのでまず一度画像認識の処理をしてその後オブジェクトトラッカーで追いかけて、また画像認識をしてまたオブジェクトトラッカーを繰り返しています。
初期はこんな感じ。画像認識の瞬間は画像が止まります。

それをプログラムを色々組み替えて、
処理を適正化してスムーズにしています。

今はJetson TX2(今回使う予定のnanoの上位機種でテスト中)と言うのもNanoはまだまだ未完成な部分が多く安定していないので動かない理由がハードかソフトがの切り分けが難しく無駄な時間が多く掛かる為。
それとDEEPSTEREAMと言われるライブラリーでnanoも使える様になるはず。
なぜかと言うとメモリを最適化する技術を開発しているようなので。
左から右へデータを受け渡す過程でメモリーを共用したししながら処理して行きます。

これらはハードメーカーがアドレスやメモリをどう処理するか(出来るか)なのでメーカーでないと出来ません。
これが今月中にリリースされる予定ですが、まだまだ掛かりそうな気配…

あとサーモグラフィーのアノテーションをするデータを頂いたのでそれでモデルを作るのに数ヶ月?
今回そのデータの中身は凄いもので無料で頂きましたが数百万の価値はありそうです。専門の会社で作らせたようですが、一枚幾らの世界でかなりの枚数に丁寧にメタデータ(画像の中の目的の物体の座標データとラベルをJSONファイル=CSVの様なもの)を作って検証しています。
上の画像と下のJSONファイルがセットになります。
で囲まれているバウンディングボックスの座標とその囲まれた中のガテゴリーがセット
8862セットこの作業を間違えなくするのは大変です。
coco 80というデータセットの規格になります。
カテゴリーは規格で決まっていて今回はその中から5つ
1. Person (28,151) 
2. Car (46,692) 
3. Bicycle (4,457) 
4. Dog (240) 
5. Other Vehicle (2,228)
全部のカテゴリーは
Coco80(マイクロソフトの形式)で
person, bicycle, car, motorbike, aeroplane, bus, train, truck, boat, traffic light,
fire hydrant, stop sign, parking meter, bench, bird, cat, dog, horse, sheep, cow,
elephant, bear, zebra, giraffe, backpack, umbrella, handbag, tie, suitcase, frisbee,
skis, snowboard, sports ball, kite, baseball bat, baseball glove, skateboard, surfboard, tennis racket, bottle, wine glass, cup, fork, knife, spoon, bowl, banana,
apple, sandwich, orange, broccoli, carrot, hot dog, pizza, donut, cake, chair, sofa,
pottedplant, bed, diningtable, toilet, tvmonitor, laptop, mouse, remote, keyboard,
cell phone, microwave, oven, toaster, sink, refrigerator, book, clock, vase, scissors,
teddy bear, hair drier, toothbrush

これらを組み合わせると可なりのものが出来るのではないかと期待しています。
ただデータの変換が大変で手間の掛かる作業と検証に時間が掛かるのでその作業前に少し休養が必要かもしれません。
結構色々な作業に二人とも疲れている感は否めません。次から次えと未知の作業が続いています。

大変有難い事にAIに掛かった機器の殆どの経費を会社に出して頂きました。今回の開発でどれが正しい機器(経費)か最初は分からず迷ったら買うと言う事を繰り返しました。今年の目標としている無駄な事を積極的に実践した結果かなり講座残高が減りました。
処理していただいた分は小野さんと半分、その中で今回Openframworksというオープンソースの団体に€815(10万円)寄付しました。今回作っているソフトウェアの中で非常に重要な部分を占めています。このオープンソースがなければ今回のソフトは出来なかったと言って良いです。(もっと払うべきなのですが、商品となった時の売り上げの何がしかは考えるのですが、今回はまだそこまでいけてないので。)