Slide 1

Slide 1 text

第五回 全日本コンピュータビジョン勉強会 Presenter:廣岡大吾(@daigo_hirooka)

Slide 2

Slide 2 text

● 機械学習エンジニア @ブレインパッド ● 関心 ○ 動画、3Dビジョン ○ 機械学習の運用 ● その他 ○ 最近GoProを買いました ○ 白金鉱業.FM(@shirokane_fm) podcastで配信中! 2 自己紹介:廣岡大吾(@daigo_hirooka)

Slide 3

Slide 3 text

オプティカルフロー(画像における物体の移動)推定のための新しい NNアーキテクチャを提案 ● 特徴:Coarse-to-fineな推定過程をRNNによってモデル化 ● 結果①:高精度、高速、省メモリを実現 ● 結果②:データセット間の汎用性も高い ● 実装:princeton-vl/RAFT ● 再現実装:daigo0927/tf-raft Summary 3

Slide 4

Slide 4 text

オプティカルフローとは 画像内の物体の移動のこと 各ピクセル×縦横の移動成分 4 カラーマップによって可視化できる http://sintel.is.tue.mpg.de/

Slide 5

Slide 5 text

オプティカルフローのデータセット ● MPI Sintel Flow Dataset ○ アニメーション動画から作られたデータセット ● KITTI ○ 車載カメラによるデータセット ○ 教師ラベルは疎に付与されている ● FlyingChairs, FlyingThings3D ○ 自然画像の背景に別の物体を合成したデータセット 5 FlowNet: Learning Optical Flow with Convolutional Networks Object Scene Flow for Autonomous Vehicles A Naturalistic Open Source Movie for Optical Flow Evaluation

Slide 6

Slide 6 text

オプティカルフローの推定 画像ペアを入力として似たピクセルを結びつけるタスク ● 古典的アプローチ ○ 差分が小さいピクセルを対応づけるように最適化 ○ Lucas-Kanade法:パッチごとにフローを推定 ○ Horn-Schunck法:近傍フローを滑らかにする正則化を導入 ○ OpenCVからも利用可能 ● 深層学習によるアプローチ ○ セグメンテーションに類似したピクセルごとの予測 ○ 入力画像間の物体の対応をどう捉えるかがポイント ○ 代表手法:FlowNet、FlowNet2、PWC-Net 6 FlowNet: Learning Optical Flow with Convolutional Networks

Slide 7

Slide 7 text

既存手法:FlowNet(Fischer et. al. 2015) ● FlowNetSimple:シンプルに入力画像からフローを出力する構造 ● FlowNetCorr:画像ペアの特徴量の相関( Correlation)を明示的に導入 7 [1504.06852] FlowNet: Learning Optical Flow with Convolutional Networks

Slide 8

Slide 8 text

既存手法:FlowNet2(Ilg et. al. 2016) FlowNetのモジュールを複合することで精度向上(パラメータ数も増加) 8 [1612.01925] FlowNet 2.0: Evolution of Optical Flow Estimation with Deep Networks

Slide 9

Slide 9 text

既存手法:PWC-Net(Sun et. al. 2017) U-Netのようにマルチスケールな推定を取り入れることで精度向上・軽量化 ● Pyramid:入力画像から複数解像度の特徴量を抽出・利用 ● Warping:推定過程のフローをシミュレートして推論に取り入れる ● Cost Volume:画像ペアの特徴量の相関を計算 9 細かいスケールへ [1709.02371] PWC-Net: CNNs for Optical Flow Using Pyramid, Warping, and Cost Volume

Slide 10

Slide 10 text

反復計算によるフローの推定 ● PWC-Netでも利用されたcoarse-to-fineなフロー推定は、反復計算による最適化と捉えられる。 ● 一方で既存モデルでは反復回数に構造上の上限がある。 ● RAFT(提案手法):RNNによってモデル化することで原理上無限回の反復更新が可能になる 10

Slide 11

Slide 11 text

提案手法:RAFT RAFT:Recurrent All-Pairs Field Transforms ● モデルの構成 ○ Feature Extraction(特徴抽出) ○ Computing Visual Similarity(特徴量の相関計算) ○ Iterative Updates(反復更新) ● 貢献 ○ 精度改善:任意の回数のフロー更新が可能になり、既存手法より大きく誤差を改善 ○ 汎化性能改善:学習時とは別のデータに対しても効果的に動作 ○ 高効率性:多くの既存モデルより省パラメータかつ高速。 ■ 参考:1088x436の画像を1080Ti GPUで10FPSで推論可能 11

Slide 12

Slide 12 text

RAFTの特徴抽出 2つのCNNを用いて入力画像の特徴抽出を行う ● Feature Encoder:画像ペア(以降画像 1,2)からの特徴抽出 ● Context Encoder:画像1からの特徴抽出 ○ RNN(後述)の潜在特徴量の初期値として利用 ● 空間解像度は縦横それぞれ 1/8になる 12

Slide 13

Slide 13 text

RAFTのピクセル相関(Correlarion Volumes)計算 特徴量のペア(以降特徴量 1,2)から各ピクセルの相関を計算する ● 相関は特徴量1の全ピクセル×特徴量2の全ピクセルで計算 ● さらにプーリングによってマルチスケールな相関を保持する ● マルチスケールな相関を用いることで、画像内の多様な動きを捉えられる ● 計算した相関は以降の RNNで使いまわすため、 1回の推論で一度だけ計算すれば良い ○ PWC-Netでは各スケールで毎回計算していた 13

Slide 14

Slide 14 text

ピクセル相関のLookup ● 推定過程のフローをシミュレート(右図 Lの処理) ● フローの行き先とその周囲のピクセルから相関値を収集する ● これを各スケールの相関に対して行い、チャンネル方向に結合して RNNに入力 14 ピクセル相関

Slide 15

Slide 15 text

RAFTのフロー更新 GRUを用いたネットワークによって推定フローを更新する ● 入力 ○ Lookupした相関値 ○ 推定フロー ○ Context Encoderによる画像1の特徴量 ○ 前ステップの潜在特徴量 ● 出力 ○ フローの更新差分 ○ 新しい潜在特徴量 ● 差分を足すことで推定フローを更新する 15

Slide 16

Slide 16 text

補足:Convex Upsampling 推定フローは特徴量と同様に縦横 1/8の解像度となるのでアップサンプリングを行う。 ● バイリニア補間:近傍ピクセルとの距離に応じた重みによるアップサンプリング ○ シンプルだがぼやけた補間になる傾向 ● Convex Upsampling:CNNによって計算した重みによってアップサンプリングを行う ○ ぼやけを抑え、小さい物体のフロー推定に有効 16 https://youtu.be/ZmiBI4tPk_o

Slide 17

Slide 17 text

RAFTの損失関数 ● 反復更新における各ステップのフローと正解フローとの絶対誤差 ● 後半ステップのフローを重視して重みつけ 17 https://youtu.be/ZmiBI4tPk_o

Slide 18

Slide 18 text

実験設定 ● 評価指標:end-point-error ○ 予測と正解フローの差分の L2ノルム ● 対象データ ○ FlyingChairs、FlyingThings3Dデータセットで事前学習 ○ リーダーボードが存在する MPI-Sintel、KITTIデータセットで評価 ● フロー更新回数(RNNの構造上、学習時と予測時でフロー更新回数を変えることが可能) ○ 学習時:12回 ○ MPI-Sintelの予測時:32回 ○ KITTIの予測時:24回 ● その他オプティマイザやデータ拡張の設定などは論文参照 18 https://youtu.be/ZmiBI4tPk_o

Slide 19

Slide 19 text

実験結果:定量評価 既存のFlowNet2やPWCNetに比べて推定誤差を大幅に改善 19 https://youtu.be/ZmiBI4tPk_o Sintel、KITTIのデータを 学習せずに評価 Sintel、KITTIでfine-tuningして評価 複数のデータでfine-tuningして評価 ● S:MPI-Sintel ● C:FlyingChairs ● T:FlyingThings3D ● K:KITTI ● H:HD1K

Slide 20

Slide 20 text

実験結果:パラメータ数、推論時間、学習ステップ ● MPI-Sintelデータセットに対する評価結果 ● 多くの既存モデルよりも省パラメータで高速・高精度なフロー推定ができている 20 https://youtu.be/ZmiBI4tPk_o

Slide 21

Slide 21 text

実験結果:フローの反復更新の効果 ● 左:フローの更新回数を増やすことで精密な予測が得られる ● 右:更新を重ねるほど更新差分が小さくなり、予測が収束していく 21 https://youtu.be/ZmiBI4tPk_o

Slide 22

Slide 22 text

実験結果:自然画像への定性評価 学習時よりさらに解像度の高い自然画像に対しても良好に動作 22 https://youtu.be/ZmiBI4tPk_o

Slide 23

Slide 23 text

まとめ・感想 ● まとめ ○ オプティカルフローの推定過程を反復最適化として RNNによってモデル化 ○ 任意の回数の反復更新が可能になりフロー推定精度向上 ○ 入力画像ペアの相関( correlation volume)を保持し、反復計算中に使いまわすことで 計算量を削減 ○ 学習時とは異なるデータセットに対しても良好に予測可能 ● 感想 ○ 直球SOTA論文がbest paperになっているのは最近だと珍しい気がする ○ 反復最適化をRNNによってモデル化するのは他でも利用できそう ■ 学習時と予測時で異なる反復回数を設定できるのも面白い ○ 再現実装時にはglobal gradient clippingを適用しないと学習がうまく進まなかった ■ (一応論文にも1行くらいで記述されている) 23 https://youtu.be/ZmiBI4tPk_o

Slide 24

Slide 24 text

● オプティカルフロー推定の既存手法 ○ [1504.06852] FlowNet: Learning Optical Flow with Convolutional Networks ○ [1612.01925] FlowNet 2.0: Evolution of Optical Flow Estimation with Deep Networks ○ [1709.02371] PWC-Net: CNNs for Optical Flow Using Pyramid, Warping, and Cost Volume ● RAFT ○ 論文:RAFT: Recurrent All-Pairs Field Transforms for Optical Flow ■ 特に記載のない画像は本論文より引用(または自作) ○ 公式実装:princeton-vl/RAFT ○ 再現実装:daigo0927/tf-raft ● オプティカルフローの基礎 ○ Richard Szeliski. コンピュータビジョン アルゴリズムと応用 . 共立出版. 2013 24 References

Slide 25

Slide 25 text

25 References ● データセット ○ MPI Sintel:A Naturalistic Open Source Movie for Optical Flow Evaluation ○ KITTI:Object Scene Flow for Autonomous Vehicles ○ FlyingChairs:FlowNet: Learning Optical Flow with Convolutional Networks ○ FlyingThings3D:A Large Dataset to Train Convolutional Networks for Disparity, Optical Flow, and Scene Flow Estimation