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万円)寄付しました。今回作っているソフトウェアの中で非常に重要な部分を占めています。このオープンソースがなければ今回のソフトは出来なかったと言って良いです。(もっと払うべきなのですが、商品となった時の売り上げの何がしかは考えるのですが、今回はまだそこまでいけてないので。)

0 件のコメント:

コメントを投稿