FlowNet
Dosovitskiy 2015 · 論文
一行要約 — オプティカルフロー推定のための初のエンドツーエンドCNNであり、相関層と、この分野で標準となった合成学習データセットFlying Chairsを導入した。
問題
2015年までにCNNは認識タスクを一変させていたが、オプティカルフローはその成功例には含まれていなかった:Horn-Schunck系譜の変分手法(DeepFlow、EpicFlow)は依然として支配的であり、1フレームあたり数秒から数分を要していた。フローは以前のCNN応用とは根本的に異なる——ピクセルごとの局所化だけでなく、2つの画像間の特徴をマッチングする必要がある。これを学習する上で2つの障害があった:密な2フレーム対応を表現できるアーキテクチャが何であるかが誰にも分からなかったこと、そしてCNN規模の密な正解フローを持つデータセットが存在しなかったこと(実シーンの真の対応関係を得ることはほぼ不可能である;最大のものであるSintelでも学習用ペアはわずか1,041個しかなかった)。FlowNetはこの両方に取り組んだ。
手法とアーキテクチャ
2つのエンコーダ・デコーダアーキテクチャがあり、それぞれ9つの畳み込み層を持つ(6層でstride 2、各層の後にReLU、全結合層はなく入力サイズは任意;フィルタはから、へと縮小し、チャネル数はstride-2の層ごとにおおよそ2倍になる):
- FlowNetSimpleは両方の画像を6チャネルの入力に積み重ね、汎用的なネットワークに運動の抽出方法を自ら学習させる。
- FlowNetCorrは2つの画像を別々の同一構造のストリームで処理し、その後、それらの特徴マップを明示的な相関層(correlation layer)——論文の主要なアーキテクチャ上の貢献——で比較する。とを中心とするパッチの相関は
パッチサイズに対して——構造的には畳み込みの1ステップだが、データとデータを畳み込むため学習可能な重みを持たない。すべてのパッチペアを比較することは実行不可能なので、変位はに制限され(近傍)、stride が用いられ、相対変位はチャネルとして組織化され、の出力を与える。選ばれたパラメータ:、、、。
洗練:「逆畳み込み(upconvolutional)」層(unpooling+畳み込み)が粗い特徴を拡張する;各ステップで、逆畳み込みされた特徴は対応する縮小部分の特徴マップとアップサンプリングされたより粗いフロー予測と連結され、解像度を4回倍にして4分の1解像度に達し、その後バイリニアアップサンプリングによって全解像度になる。オプションの変分洗練(‘+v’)は、マッチングを用いない変分ソルバーの粗から細への20回の反復と、全解像度での5回の反復を実行し、境界を尊重する平滑化を用いる。
学習:損失は終点誤差(EPE——予測フローと正解フローのユークリッド距離、ピクセルにわたって平均);Adam(、)、バッチサイズ8、学習率、30万反復後に10万反復ごとに半減(FlowNetCorrは勾配の爆発を避けるためからのウォームアップが必要)。データは専用に構築されたFlying Chairsセット:809種類の椅子(各62視点)を964枚のFlickr背景の上でアフィン変換的に動かしたもので、変位統計はSintelに合わせられている——正確な密なフローを持つ22,872枚の画像ペア。積極的なオンライン拡張(並進±20%、回転±17°、スケーリング0.9〜2.0、ノイズ、明度/コントラスト/ガンマ/色)は依然として重要である。
実験結果
- 非現実的なFlying Chairsだけで学習しても、ネットワークは実データに一般化し、LDOFを上回る:Sintel Cleanテストで EPE 7.28(FlowNetC)/7.42(FlowNetS)、LDOFの7.56に対して;Sintelでのファインチューニング+変分洗練の後、FlowNetS+ft+vはSintel Finalテストで7.22に達し——DeepFlow(7.21)と同等——KITTIテストでは7.6であり、EPPMの9.2、LDOFの12.4を上回る。
- Flying Chairsのテストセットでは、これらのネットワークはすべての古典的手法を上回る:FlowNetC EPE 2.19、対してEpicFlow 2.94、DeepFlow 3.53——そしてここでは変分洗練は悪化させる。これは現実的な学習データが与えられれば、ネットワークが他の場面でも優位に立つことを示唆している。
- 実行時間:GTX Titanで1フレームあたり0.08秒(FlowNetS)/0.15秒(FlowNetC)——Sintel全解像度で5〜10fps、EpicFlow/DeepFlowのCPUでの1フレームあたり16〜17秒に対して;リアルタイム手法の中で最高の精度。
- アブレーション:データ拡張を除くと、Sintelで約2ピクセルEPEのコストがかかる;Sintelのみでの学習は、Chairsでの事前学習+ファインチューニングより約1ピクセル悪い。FlowNetCはわずかに過学習しやすく、非常に大きな変位に苦労する(s40+の誤差は48ピクセル、FlowNetS+ftの43.3ピクセルに対して)。これは相関の変位制限が検出可能な運動を制限するためである。
SLAMにおける意義
FlowNetは深層オプティカルフローという分野全体を立ち上げ、その子孫(RAFTとそのバリアント)は今日、DROID-SLAMのような学習型視覚オドメトリおよびSLAMシステム内部の密な対応エンジンとして機能している。その2つの中核的な成果物は10年後の今も基盤として残っている:相関層(PWC-Net、RAFT、そして本質的にその後のすべてのフローネットワークで再利用される)と、合成データのレシピ——正確な正解値を持つレンダリングデータで学習し、Sintel/KITTIで評価する——は、FlyingThings3D、AutoFlow、Kubricがすべて従っている。
関連ノート
- FlowNet 2.0 — 古典的手法の精度に達した積層洗練
- PWC-Net — コンパクトなピラミッド/ワーピング/コストボリュームの後継
- RAFT — この系譜を引き継いだ全ペア相関アーキテクチャ
- FlowNet3D — 同じ考え方を3D点群に移植したもの