arutema47's blog

書いたり書かなかったり。

【壁の向こうを見通すNLoSセンシングを野外で実現】Seeing Around Street Corners: Non-Line-of-Sight Detection and Tracking In-the-Wild Using Doppler Radar

ハイライト

f:id:aru47:20200605192451p:plain

N
ミリ波レーダを使い、Non-line-of-sight(NLoS)センシングを野外で初めて実現。

壁などの裏の死角物体のセンシングを実現。例えば自動運転中にも壁の裏の歩行者などを早期発見できる技術に応用可能。

CVPR 2020

arxiv

著者グループはNLoSセンシングの大家であるFelix HeideおよびMercedesBenz, Princeton大学等。

結果

f:id:aru47:20200606103214p:plain 結果の図を見るのが一番わかり易い。 野外において壁越しにいる自転車、人物(黄色の点群)を検出できているのがわかる。

背景と従来の課題

f:id:aru47:20200605192845p:plain

NLoSは壁などで光を反射させることで、センサの直線状にない物体のセンシングを行う手法である。 これを応用することで壁の裏の物体をも見通す事ができる。

壁の裏側も見通せるNLoSセンシングは何年も活発に研究されていたが、それは主に非常に強いレーザ光を使用したものであった。 例えばCVPR2019のベストペーパーはレーザ光NLoSの画像復元に関する研究。

一方でこれらの光学NLoS系の研究は実験室内の環境では確かにセンシングに成功していたが、外乱に弱いため野外でのセンシングに報告した例はなかった。

提案アプローチ

f:id:aru47:20200606102105p:plain
野外のNLoSセンシングで用いた反射面
光などのテラヘルツ波はキレイに反射するのは鏡といった限定された面だけである。 一方でミリ波帯(20-100GHz)の電波は光と違い、例えば壁、連なった車などが反射面として使える(上の図)。 ミリ波レーダは多くの物体表面で反射するため、野外でもNLoSセンシングが可能であることを示した。

f:id:aru47:20200606102439p:plain また論文の貢献としてミリ波NLoSの基本的な原理およびNLoS物体の速度もセンシングできる理論をまとめたのが貢献である。 式的には普通のNLoSとあまり変わらず、速度も確かに延長したら導出できそう。

f:id:aru47:20200606103112p:plain 物体の反射特性なども定式化されているがBRDFなどわかってないので読み解けない。。要勉強

NLoS物体の検出

f:id:aru47:20200606102952p:plain 野外では反射・非反射する表面があるので、ミリ波レーダのスキャン結果のどの部分が実際にNLoSセンシングした部分か当てるのは難しいタスク(だと思うんだけどあまり論文では触れられていなかった)

論文で用いているレーダでは壁等から一次反射(first-bounce、図中のW点で直接跳ね返った結果)とW点の壁反射し、更に物体で拡散した電波が再度W点で壁反射し筐体に戻ってきた電波をthird-bounceと呼んでいる。 ある面積以上の平面を検出し、更にその奥に点群が検出できている場合それをNLoS検出結果としてマークしているとのこと。

結構単純な方法でthird-bounceデータを検出できるのは驚き。。野外には平面等は多く見られるので誤検知とか多くないのか気になった。

3D物体検出

f:id:aru47:20200606102749p:plain ミリ波レーダベースの物体検出手法も提案されているけど、普通のBEV投影ネットワークに見えるためあまり新規性は感じない。

nVidia 新GPU A100についての情報まとめ

f:id:aru47:20200515095028p:plain

amzn.to

nVidiaの新データセンター用GPU、A100がリリースされました。

このチップをベースとしてコンシューマー用GPU(RTX3xxx)もリリースされるのでしょう。

備忘録的にどのような新機能があるのかまとめてみました。 筆者の使用用途上AI性能にフォーカスしたものになります。またGPUは専門じゃないので間違いが合ってもあしからず。

ソース: NVIDIA Ampere Architecture In-Depth

GPUアーキテクチャについてはスタンフォード講義のCS348がわかりやすいです。

またCMUのパラレルコンピューティングの授業もGPUについてわかりやすく説明しています。

TL;DR

  • 7nm世代に移行することでベース性能、キャッシュ性能が大幅Up

  • TensorCoreの改良と新データ構造TF32の導入、スパース演算機能によりV100に対し最大20x高速化

  • GPUのバーチャルインスタンス化機能を実現し、ユーザ間で単一GPUを効果的にシェアできるように。

A100はV100と同等のバーチャルGPUを7ユーザに同時に提供できると書いてある(気がする)。本当だとしたらかなり凄く、一番のキーフィーチャなんじゃないか。しかし私はクラウド人材じゃないのでよくわかりましぇん。

ハードウェア面

世界最大の7nmチップ

[P100, V100, A100]

f:id:aru47:20200515095853p:plain

まずはハードウェアの進化から見てましょう。

V100は12nmだったのが7nm世代に移行しました。 集積度もアップしており、GPUコア(SM)が20%ほど増加してます。

L2がV100の6MBから40MBに増えてるけどこれマジ?本当だとするとカーネルによっては演算が相当早くなりそうです。

一方でV100に対し最大クロックが下がっているあたりに設計者の苦労を感じます。

SMアーキテクチャ的には大きな変更はない。ただTensorCore(AI演算用専用回路)に大幅な機能追加が行われていて

7nmの設計経験はないんですが、この規模のチップを作ると歩留まりはかなり低いんじゃないか(毎回DS GPUみて思うけど)。多少歩留まりが悪くても圧倒的価格と性能(付加価値)でカバーできるのがNvidiaの強みであり他社が追従できない理由ですね。。

SM自体の仕様にはあまり変化ないですね。

TensorCoreの進化

f:id:aru47:20200515102325p:plain

nVidiaもオレオレFloating PointであるTensorFloat32という形式を提案してきました。 略してTF32と紛らわしい名前です。

このようなオレオレFloatingPoint導入のメリットは少ないbit表現でDL学習を実現できることです

例えばSingleFloatの半分のbit数で同じモデルを学習すると

  • メモリ使用量を半分に
  • メモリ通信時間を半分以下に
  • 演算も大幅に高速化

することができます。特にHPCではメモリ通信時間を減らすのが難しく、このようなデータ表現変更で2倍以上の高速化が達成できるのは画期的です。(HBM2の速度はここ数年全然変わっておらず次規格もまだ採用されていないですね)

TF32の仕様を見てみましょう。

f:id:aru47:20200515101341p:plain

FP16形式よりもexponentが3bit多く、ほぼ表現レンジは通常のFP32と同等なのが特徴です。FP16にそのまま3bit付け足した19bitの実装になっており、中途半端感は強いです。

Googleも同様のオレオレFloatingPointをTPUに実装していました(BrainFloat16)。 BF16はExponentを拡張する代わりにMantissaを削っていたのと対象的に、NvidiaはMantissaを重要視していますね。学習ではほぼExponentが効いている印象だったのでこのような実装にしたのは不思議です。

このようなオレオレFloatingPoint導入のデメリットは専用のカーネル(CuDNN的な)を書く必要があり、その最適化がかなり大変なことです。

ベンチマーク

f:id:aru47:20200515103221p:plain

TensorCore自体の演算性能が向上しているのでBERT学習が高速化しています。ベンチマークがBERTな辺りNLPの勢いを感じる。。

f:id:aru47:20200515103344p:plain

FP32で学習するのに対し、TF32で学習することでTensorCore+メモリ通信量を削減することができV100に対し7xの速度向上を達成しています。すげえ。

Sparcity

To be continued..

Pseudo-LiDAR from Visual Depth Estimation: Bridging the Gap in 3D Object Detection for Autonomous Driving

f:id:aru47:20200409111938p:plain

密、かつ高精度な点群をステレオカメラによって得る研究。Depth prediction Networkの提案により高精度な点群の生成に成功している。

従来のステレオカメラは深度情報(カメラからの距離)のみしか得られなかったが、この研究では3D点群(つまりX,Y,Z座標)を獲得する。 高密度、高精度な3D点群をステレオカメラで得るメリットは: 1) LiDARベースの3D物体検出技術がステレオカメラに適応可能になる。 2) LiDARの高密度化に使える。

f:id:aru47:20200608110735p:plain 黄色のとてもスパースな点群がLiDARで実際に観測した点群。 赤、紫が従来のステレオカメラベースの点群である一方、本技術の点群は青。驚くべきことに高精度+高密度!

というかLIDARより密度が高いのでかなりブレークスルー。 LiDARで点群密度を上げるのはかなり大変で機器のコストもかなり上がる(数十倍とか)。

LiDARを使わない3D物体検出技術としてはかなり面白い技術で色々派生が出てきそう。(Psuedo-LiDAR++など)

arXiv

github

CVPR 2019.

背景と従来の課題

f:id:aru47:20200409111055p:plain
#

自動運転には3D物体検出の精度が非常に重要である。 車の位置を3D binding boxで囲み、3D座標上でその位置を認識する必要がある。

一方でこのようなタスクではLiDARベースでは精度が高かったが、ステレオやモノラルカメラを使ったネットワークの精度は低かった。 具体的にはLiDARではIoU70%で70%程度の認識精度があるのに対し、ステレオ画像ではその精度はたったの10%程度と大きな差があった。

従来Deep+ステレオカメラの技術では視差マップ(Disparity Map)を学習するのが主なタスクであった。するとカメラからの距離Dは学習できるが、3D情報は得られない。そのため物体検出精度ではLiDARに劣っていた。

提案

この論文の提案は非常にシンプルである:

ステレオ画像から点群データ(psuedo-LiDAR)を直接出力するようにDeep Prediction Networkを学習する事で、LiDARと同様の3D物体検出ネットワークを適応できるようにする

だけである。本当にこれしか論文中でやっていない。(解析はちゃんと行っているが)

今までステレオカメラでは(長距離の)点群マップを得るのは難しいと考えられてきたが、そこのギャップを超えたのがこの論文である。実装自体はシンプルで、意外と”誰も気づいていなかったことをやってのけた”論文という印象。

従来はステレオ距離画像は(R,G,B,D)という表現で出力しており3D物体検出を行おうとしていた。一方で自動運転のような幅広い空間では奥行きをチャネルとして表現するのは難しく、隣接データの関連付けをうまく行うことは難しかった。

このようなデータ表現ではなく、ステレオカメラで点群(X,Y,Zデータ)を表現するようにprediction networkを学習することが可能であること、そしてそれが高精度に可能であることを示したのがこの論文の発見である。

驚くべきことにステレオ画像から推定した距離データの精度は非常に高く、ほぼLiDAR検出結果とオーバーラップしている。 そのため精度向上が得られたことは納得の行く結果だと思う。それでも精度は40%程度とLiDARに対し倍以上の差がまだ残っている。

関連論文(2020/6/18追記)

f:id:aru47:20200618110911p:plain

同著者による発展研究であるPsuedoLiDAR++ ICLR2020は疎なLiDARスキャン+ステレオカメラのデータを合体させることで密かつ正確な点群の生成に成功しています。

疎なLiDARであれば価格も安いのでスジの良い研究ですね。今後も要ウォッチです。

dToF/iToF LiDARセンサの原理や製品について

lid

記事の目的

本記事ではdToFとiToF LiDARの基本や原理について説明します。 また込み入った理論ではなく、LiDARの大まかな種類や用途を理解するのが目標です。

LiDARセンサはLight Detection and Rangingの略で光を使った距離測定技術の総称です。 RADARが電磁波を使って距離を測るのに対して、光を使った距離センサを指します。

こちらは距離センサ全般の記事です。合わせてどうぞ。 aru47.hatenablog.com

LiDARには大きく2種類ある

LiDARには大きく2つ種類があります。

一つはdirect Time of Flight型(dToF) LiDARでもう一つがindirect Time of Flight(iToF)型LiDARです。iToFは間接ToF型とも呼びます。

dToF LiDAR

原理

距離センサ入門からの引用です。 dToF LiDARはレーザパルスを出射し、筐体に帰還するまでの時間から対象物までの距離を求めます。

dToFの原理を考えてみましょう。 LiDARはTime of Flight(光の飛行時間)をベースにして距離を測ります。

原理としては単純で、下記の図のようにパルスレーザを筐体から放ち、そのレーザパルスが物体に反射して返ってくるまでの時間を計測します。

もしレーザ光が10秒後に返ってきて光速を単純のため1m/sとすると、物体までの距離は (10秒 * 1m/秒)/2 = 5m と5m先に物体があることがわかります。

このように直接飛行時間をベースにして距離を導出するのでdirect Time of Flightと呼びます。

実際の光速は108m/sと非常に早いため、光が返ってくるまでの時間は数ピコ秒、ナノ秒のオーダーなので時間を計測する回路には高い精度が求められます。

dToF LiDARの製品

  • Velodyne LiDAR

  • Livox LiDAR

ちなみに、Livox Horizonは10万円で入手可能です。

dToF LiDARの特徴は以下です:

  • 遠距離
  • 外乱に強い
  • 価格は高い

いずれのLiDARも距離は50-200m、角度解像度は0.1度~1度程度です。 そのため自動運転など野外の距離測定用に注目されています。

例えばWaymo社の車の上などにdToF LiDARが載っていますね。ちなみにwaymoのlidarは自社製(!)です。

よく見るクルクル回転する機構を備えており、それによって360度の全周囲のデータを獲得しております。

a

またLivox LiDARは安く、ドローンなどのアプリケーションへの適応も期待されています。

dToF LiDARの種類について

(2022/7追記)

Gates-backed Lumotive upends lidar conventions using metamaterials – TechCrunch

こちらの図はdToF LiDARの種類を3つに分けております。

2D Raster-Scan型や1D Line-Scan型は単位画素辺りのレーザパワーが高いため、計測距離が長いのが特徴で自動運転に必要な200mを達成可能です。一方で弱点としてレーザのスキャン機構が必要のため、価格は高いです(数十万円)。

そのためiPadなどのコンシューマーデバイスではFlash型というスキャンをしないLiDARが使われています。Flash型はカメラのフラッシュのように一面にレーザを照射し一度に多くの画素のdToF計測を行います。画素辺りのレーザパワーが弱いため遠距離は取れませんが、スキャン機構がないため低コストかつ小さい筐体で実現可能です。

iPadのdToF LiDAR

(2020/6/18追記)

eetimes.jp

iPadはソニー製の新センサを使ったdToF LiDAR

アレーサイズは320x240?のFlash型LiDARを形成しています。Flash LiDARはレーザを一面に照射し、イメージセンサのように一度に絵として反射レーザを受光しToFを得る機構です。Velodyneのようなスキャン型に対しレーザ光が分散してしまうので距離は取れないですが、室内であれば十分実用的な結果が得られます。

SPADはマイクロレンズ付きの10umピッチで裏面照射型となっています。チップ写真を見る感じ、SPADアレーであるチップと読み出し回路をCu-Cuで接続している3Dチップです。読み出し、ToF計算回路はいつものCISで使用している10メタルプロセスの65nmのCMOSロジックチップでしょうか。

indirect Time of Flight

原理

ようやく本題のiToFについての説明です。ただその理解のためにはdToFの原理を理解している必要があったため、説明に時間を割きました。

iToF LiDARは原理としては光の飛行時間を用いていますが、パルスのズレではなく間接的に飛行時間を測定します。

じゃあその間接的ってなによ?というのがキモとなります。

https://www.terabee.com/a-brief-introduction-to-time-of-flight-sensing-part-2-indirect-tof-sensors/

図にiToFの原理を示します。

dToFではレーザパルスを送信していたのに対し、iToFでは周期的なレーザ光を放出します。(sin波など)

そして対象物までの距離に応じて位相がずれた波形が返ってきます。

LiDARは受信した波形の位相を判断し、対象物までの距離を計算できます。

LiDARの周期をt、光速をc、検知した位相遅れをθとすると、

distance = c/2 * t * θ/2π

となります。ちゃんと光速をベースとしたTIme of Flightの式になっているところに注目していただけたらと思います。

iToF LiDARの製品

  • Kinect v2, Azure Kinect

kinect

https://annex.jsap.or.jp/photonics/kogaku/public/41-05-kaisetsu1.pdf 画素内積分回路の実装

回路の話となりますが、dToFのようなパルスレーザを高精度に受光する回路は複雑になってしまう反面、iToFのように周期的なレーザ光の位相を計算する回路は非常に小さく設計することができます。 具体的には位相の計算処理はアナログ回路が得意な積分回路で実装することができ、実際にソニー、マイクロソフトの製品では同処理を特別な画素を設計し、ピクセルレベルで行っております。

追加回路は多く必要がないため、そのためイメージセンサと同様な回路を設計することができ、非常に大きい解像度を持ちながら(0.1-1メガピクセル)コンシューマデバイスなどに載る低価格なLiDARを作ることができるのがiToF LiDARの特徴です。 iPadProに使われているチップはSony IMX556のカスタム、廉価バージョンなのではないかと予想しています。多分原価はX000円程度に押さえているのではないでしょうか?受光素子自体はイメージセンサと同様に大量生産でき、機械部が存在しないため価格を抑えられ手軽な値段に抑えられるんですね。

iToFの良いところを述べましたが、もちろんdToFに対してデメリットもあります。大きな原理上のデメリットとしてiToFではレーザ光の変調周期は最大距離と距離精度のトレードオフとなるため、長距離のデータを高精度で取るのを苦手としています。例えば100MHzで変調させると最大距離は約15mと限定的です。 また1ピクセル辺りの出射レーザ光パワーが低いため、十分な精度が得られるのは10m以下と野外での使用は厳しいです。

また最後に半導体には馴染みない方にはマニアックに感じるかもしれませんが重要なのがセンサ(フォトダイオード)の要件です。このように積分結果から距離を導出するため、フォトダイオードの特性は線形でないといけません。 しかしながらフォトダイオードを線形の領域で使うと受光効率は悪く、弱いレーザ光を検出することはできません。反面にdToFでは光を検出さえできればよく受光特性は非線形でも精度に寄与しません。そのためフォトダイオードの受光効率が高いアバランシェ領域やガイガー領域で動作することができます。この領域における受光効率はiToFに使用する領域の数100~1000倍ほど高いです。だからdToF LiDARは数百メートル先の物体を検出できるんですね。

参考文献

  • パルス変調型iToF(ソニー)

Y.Kato, "320x240 Back-Illuminated 10- CAPD Pixels for High-Speed Modulation Time-of-Flight CMOS Image Sensor", ISSCC

  • ミキシング型iToF(Microsoft Kinectv2, v3)

Bamji, "A 0.13 μm CMOS system-on-chip for a 512× 424 time-of-flight image sensor with multi-frequency photo-demodulation up to 130 MHz and 2 GS/s ADC"

Bamji, "IMpixel 65nm BSI 320MHz demodulated TOF Image sensor with 3μm global shutter pixels and analog binningCMOS" ISSCC

  • 解説記事

川人祥二, 光飛行時間型距離画像センサー

この分野の権威である静岡大川人先生の解説記事です。とてもわかり易く、オススメ。

dToF LiDARの技術記事

自分の論文の日経エレの解説記事です。有料ですが。。

最後に

LiDARにはdToFとiToFと2つの原理があって使用されている製品が全然違うんだなあーというのが理解していただけると幸いです。

これからiPhoneなどにも載ってくると思うので距離センサはどんどん身近になっていきそうです、その時どういうアプリケーションが出てくるか楽しみですね。

www.amazon.co.jp

Tracking Objects as Points (CenterTrack)

eyecatch

eye

なんの論文?

CenterNetの著者からの最新論文。CenterNetと同様にシンプルなアプローチながら、有効性や応用性が高く様々な研究で使われるようになりそう。

前作CenterNetはPointを用いた物体検出であったが、今回は同様のPoint-baseのネットワークでトラッキングの提案。

従来Deepトラッキング系の研究よりも高速、かつ高精度を実現。

著者のAbst.が端的で面白い。

"Our tracker, CenterTrack, applies a detection model to a pair of images and detections from the prior frame. CenterTrack localizes objects and predicts their associations with the previous frame. That’s it. "

arXiv

github

おそらくECCVへの投稿。

追記: 2020/11/4 ECCV2020にて採択されてます。

従来

従来のDeep tracking系は画像物体検出を別ネットワーク(Faster RCNNなど)で実施、 その結果と特徴量をトラッキングネットワークに入力しトラッキングを実施していた。 このような手法を著者らはTracking by detection (物体検出ベースのトラッキング)と呼んでいる。

例えばSORTであればカルマンフィルタで物体のトラッキングを計算し、DeepSORTでは物体の特徴量も用いて検出を行っていた。

このような手法でも精度は高かったが、別々にネットワークを学習しなければならなかったため1)速度が遅い、2)全体ネットワークが複雑で最適化しづらいという欠点があった。

提案

centertrack

CenterTrackは前フレームと当フレームの2枚のペア画像+前フレームの物体情報(Tracklets)のみ入力とし、高精度なトラッキングを実現。

CenterTrackは検出結果、物体サイズ情報、そして点がどう動いたかというオフセット情報を出力する。 たったこれだけの情報で、高精度なトラッキングが実現でき学習が上手くいくというのは驚き。

ただ本文中でも学習時のデータの与え方には工夫が必要と書いている。何も考えずに学習してしまうと前フレームしかネットワークに入力しないため物体が動いていないと出力しても十分ロスは低く、学習が進めない。

著者もネットワーク自体はほぼCenterNetと変わらないが、Augumentationや学習時の工夫がないと上手くこのモデルは動かないと書いている。 学習を上手く進めるためには1)アグレッシブなデータアーグメンテーション、2)False NegativeやFalse PositveのTrackletsを恣意的に与えて学習する、という新規ポイントを加えており、それが論文的に面白い。

興味深い手法

Tracking data augumentationの部分(4.4 Training on static image data)が非常に興味深く、実務上も有用だと思うので紹介する。

トラッキング用の学習データを作ることは難しい。例えばビデオデータにおいてある物体がどう遷移しているかというデータセットを作る手間は非常に大きく、画像認識等と比べ大量のデータを用意するのは難しい。 このデータセットを作る難しさのおかげであまりトラッキング用データセットは世になかったため、DeepTracking系はあまり画像の研究として盛り上がっていなかった。(個人の感想です)

一方CenterTrackの論文では一枚の画像をshift-rotateすることで擬似的に前フレームを作り出し、ビデオデータなしにtrackerを学習が可能にした。 またこのAugumentation時に物体を大きく動かすことでネットワークのトラッキングに対する汎化性能が大きく上がり、高精度化に最も寄与したとのこと。

著者らはMS-COCOのデータセットを元にトラッキングモデルの学習を実現している。(画像中でネクタイのトラッキングが実現できている!) この画像データセットから高精度トラッキングネットワークが学習できることは大きなブレイクスルーであり、インパクトはかなり大きいのじゃないかと思う。

ステレオカメラの原理、信号処理について

はじめに

ステレオカメラの信号処理について詳細に記述しているメディアは少ない。 一方で現行のステレオカメラで最高の精度を誇るEnsensoのwhitepaperは非常に参考になる。

Obtaining Depth Information from Stereo Images

f:id:aru47:20200310094811p:plain

原理

ステレオカメラ自体の原理はシンプルで、人間が距離を認識するのと同様の"視差"の概念を使用する。

左センサで見た物体が右センサで見た時、何ピクセルズレているかに応じてセンサから物体までの距離が算出できる。 この視差をステレオカメラでは"Disparity"と呼ぶ。

課題

f:id:aru47:20200310095034p:plain

  • 歪み

一方でイメージセンサで得られた画像はレンズなどにより歪みが生じる。 歪があると左右のセンサで物体位置がheightによりズレてしまい、disparityを計算できない。

f:id:aru47:20200310174005p:plain

この画像では左右の画像で歪みが生じてしまい、左右センサでかなり指している画素位置が異なってしまう。 これでは効率よく計算できないため、歪を取り除く必要がある。 このような歪みはレンズキャリブレーションと同様、レンズ曲を打ち消すような逆関数を画像に掛けることで取り除くのが一般的である。

  • オフセット

f:id:aru47:20200310174150p:plain

歪みのような非線形な誤差をレンズキャリブレーションで取り除いても、今度はセンサ設置取り付けの誤差などで左右の画像間で高さや回転誤差が生じてしまう。このような誤差は画像を回転・平行移動してやることで取り除くことができる。

  • マッチング

また距離を推定するには左センサの画素が右センサのの画素と同一かマッチングを取る必要がある。 このような処理をcorrelation matchingと呼び、間違えると完全に違う距離を推定してしまう。このような画像処理はステレオカメラで最も難しく、精度や画質に大きな影響を与える。(例えばintel real senseなどは安価で良いセンサなのだが、マッチング処理が甘く大きく画素欠けが発生してしまい工業用途には厳しい。)

キャリブレーション

一般的には撮影前のキャリブレーションにより歪みは大きく低減可能である。 具体的には上記の歪み、オフセットを除去するための逆関数・回転行列を求めるのがキャリブレーションの目的となる。

歪を左右のセンサで極小化するため、ステレオカメラではキャリブレーションが非常に重要となる。 例えば数ピクセル分だけセンサ間でズレが生じたとしても距離にして数mmもズレてしまい、工業用途には適さない。 そのため高精度ステレオカメラを購入したら必ずキャリブレーションを行おう(ステップが多くかなり大変だがガイドラインが必ずあるはずだ。。)

まだキャリブレーションの手法などについては調査中。

Recitify

f:id:aru47:20200310174459p:plain

recitifyは本来では整流と信号処理では使用するが、ステレオカメラでは左右センサの歪を除去した画像の事を指す。 例の図中の一番下の画像は左右で歪み、オフセットが取り除かれており、recitified imageと呼ぶ。

Stereo matching

f:id:aru47:20200310094553p:plain

左右のセンサで捉えた画素が同一物体を指している場合のみ、disparityを導出できる。

そのためには物体が同一かどうか判定するMatching処理が必要になる。 このことについては後に追記する。

PointPillars技術について

PointPillars: Fast Encoders for Object Detection from Point Clouds

PointPillarsとは2018年に提案された3D物体検出技術、または点群ニューラルネット技術です。

従来技術よりも高速かつ遥かに高精度で精度ー計算量のバランスが良く、現在多くの3D物体検出研究はPointPillarsを改良したものとなっております。

有名所ですと例えばAutowareに実装されていたりしますね。

arxiv

実装

課題

image.png

従来点群のみ使用したネットワークは精度は高いが低速で、点群を画像に投影するネットワークは高速だが 精度が低いという欠点があった。

提案

image.png 狙いとしては点群の細かい情報量を失わないように情報量をエンコードし、疑似画像に変換する。その疑似画像を2D CNNで使用するような物体検出ネットワークに入力し、物体検出を行う。 この手法の進歩性は従来単純に点群を俯瞰画像といった疑似画像に投影し物体検出CNNに入力するだけでは点群の細かい情報量が失われてしまっていた。そこで点群を画像に投影するためのエンコードネットワークを用いることで点群情報を失わずに物体検出CNN(SSD)に入力データを与え高精度化を達成した。

image.png 具体的に点群を画像にエンコードするために、Pillar(柱)と呼ぶ点群を細かく格子状に分割しPointNetのような点群DNNを使いPillar内の特徴量を抽出。そして得た2Dの特徴量マップをSSDに与えることで物体検出を行う。 アイデア自体は非常にシンプルながら、PointNetと物体検出CNNを結合する手法を初めて提案し点群物体検出の精度でブレイクスルーを果たした。

実験

image.png 発表当時、KITTIベンチマークでstate of the artを達成。

ネットワーク自身も改造しやすく、Kaggleなどのコンペでも頻繁に使われている。

https://www.kaggle.com/c/3d-object-detection-for-autonomous-vehicles