深層学習のうちでも一般物体検出は、一番成功をおさめた技術だろう。
深層学習・機械学習のそれぞれのプラットフォームには、必ずと言っていいほど、一般物体検出の実装が含まれている。
にもかかわらず、私は物体検出に不満を持っている。
学習データがまだまだ十分ではなくて検出性能が不十分であるということではない。
原理的な部分にいくつもの不満を感じている。
現状の一般物体検出に対する不満
ほとんどの一般物体検出が矩形枠を表示する検出であって、pixel単位で物体の領域を表示するインスタンスセグメンテーションではないこと。
- このため、物体検出が背景の影響を受けてしまうこと。
- 検出枠の精度をあげようとすると、インスタンスセグメンテーションができるほとの内部での解釈を必要とする。どの部分までは対象物なのかどこからが別のものなのかを判定しなければならない。にもかかわらず、検出枠というヒントしか与えていない。
学習・推論の際に画素値をベースとしたものであって、物体の奥行きに対する理解を、ほとんどの実装は持ち合わせていない。
- 人の場合には、物体の奥行きの大小関係を理解して、奥行きの近い側を一つのまとまりとして理解している。
- 大半の深層学習では、物体の奥行き情報を物体の検出に利用することができていない。
- 物体の奥行きに対する理解ができていれば、人の着衣のテクスチャーがどのように変化しても、人の検出を適切に行うことができるだろう。
大半の物体検出では、物体の形状と物体への照明条件とを分離していない。
- 照明条件が変わると、検出に影響が出る。
- 人が物体を理解するとき、物体の表面がどういう向きであるのか(法線ベクトルの向き)を意識している。だから、たいがいの着衣で、服の形状がどんなであるのかを推定できる。
- 着衣の形状、着衣の物体色、撮影時の照明環境 それらの結果生じている各場所での色を元に、それらを分離してたいがいの場合理解できる。
- だから、着衣の色やテクスチャーが変化しても、理解できる。
生き物の画像認識は、動画が基本、動きに対する認識が本質的であるはずだ。
- 一般物体検出のほとんどは、静止画に対する検出処理だ。
- しかし、生き物の画像認識は、動きが本質的なはずだ。
- 外界が動くだけでなく、自分の自体の動きによっても見え方は変わってくる。
- そのため、見えている内容には常に動きがある。Optical Flow がある。Optical flow の動きの塊をみると、どこからどこまでが一つの塊であるかを意識させる。自分自身の動きに対して、それぞれのOptical flow の大きさがどれくらいであるのかによっても、対象物の距離を感じさせる。
- 現状の物体検出には、静止画ベースだ。そのために、このような情報が利用できていない。
物体検出の推論によるレイテンシが無視できないことが多い。
- レイテンシが少ない物体検出のほとんどは、計算資源をこれでもかというほどに潤沢な状況にして、推論を行うことでレイテンシを減らしている。
- しかし、物体検出を利用したい組み込みの分野では、計算資源が限られている。そのような状況でも少ないレイテンシでの推論がほしい。
- レイテンシは、場合によって命取りになる。
- 歩行者検出をする場合に、レイテンシ*(人の移動速度+車両の移動速度)の分だけ、位置が違ってきてしまう。
- そのため、安全にすれ違うことができるのか、ぶつかってしまうのかを余裕をもって判断するのが大変になってしまう。
たいがいの推論は、推論の入力データが得られた時刻の「過去」の状態を推論するものである。
- 深層学習の入力画像は、画像という1フレームのまとまりに仕上げられた時点で既に「過去」の状態になっている。
- しかし、行動する主体としての判断に利用したいのは、今の状況である。
- この問題の深刻さを理解してもらうには、ドアの開閉の状況を、webカメラのデータをhttpで転送してモニタに表示させて見よう。直に自分の目でもドアを見えるようにしておき、モニタの表示とを見てみよう。
- 実際のドアが閉まってから、モニタのドアが閉まるまでの時間差を確かめてみよう。
- モニタに見える動画を元に判断を下すと、実際の状況とは違っていることに気づくはずだ。
- たいがいの深層学習の推論は、推論の入力データが得られた時刻の「過去」の状態を推論するものだから、レイテンシを減らそうとするには、潤沢な計算資源を使うしかなくなってしまう。
運用時に学習させることができない。
- 大半の実装において、運用には推論しかできない。運用時に見つけたポジティブサンプルを使って検出のためのモデルを更新することができない。
- そのため、学習済みモデルが、運用先の環境に適応させていくのが簡単ではない。
追記
ほんのちょっとの違いで未検出になってしまいやすい。
- そこの3次元の物体という意味でオブジェクトがあるのは、わかりやすいはずなのに、簡単に未検出になってしまう。
- 該当のカテゴリと判定できなくても、類似のカテゴリで検出するなどのことはしてほしいと思う。
- 一般物体検出は、検出の頑強性に欠けるのである。
- 対象のカテゴリの見え方は、対象物の形状・テクスチャ・見ている方位・ライティングなどによって変化する。
- そのため、人検出の頑強性を上げるには、どれだけポジティブサンプルを網羅なく収集するかにかかっている。
- システム設計をするうえで、その機能が失敗する確率が高いことは、利用方法をとんでもなく難しくしてしまう。
- SSDやYOLO シリーズの一連の検出アルゴリズムは、そういった欠点をもっている。
- 検出の学習アルゴリズム自体はロバストになっていない。
そうい本質的な部分に課題を持っている。
大量の実空間の画像データ自体の中にある秩序を引き出せていない。