DeepMask と SharpMask

1. DeepMask と SharpMask とは [概要]

DeepMask および SharpMask とは,初期のインスタンスセグメンテーション手法である[Pinheiro et al., 2015] [Pinheiro et al., 2016]

2015年のCOCOデータセット[Lin et al., 2014] の,初回コンペティションで1位をとったのが,DeepMask [Pinheiro et al., 2015] である.物体候補ROIの検出手法にならって,スライディングウィンドウにより各位置で物体候補マスクを推定し,その各候補マスクをクラス識別することで,インスタンスマスクを手に入れるという,Faster R-CNN前半のRPNのような戦略の手法である.しかし,とりあえずマスクは出力できるようになったが,DeepMask はまだ低解像度の出力マスクであったので,入力画像の解像度にあてはめると,境界が正確にならず,「まずはCNNでインスタンスセグメンテーションを実現できた」というのがDeepMaskであった.

そこで同チームは,全体をU-Net構造のEncoder-Decoderネットワークに拡張したSharpMask [Pinheiro et al., 2016] を提案した.その出力マスクをシャープ(高解像度)で精密なものを学習できるように,DeepMask CNN(Encoder)の後半にDecoderを追加して,転置畳み込みで徐々に出力マスク解像度を拡大(Refine)していくことで,正確な高解像度インスタンスマスクを推定できるようになった.

この記事では,これらDeepMask・SharpMaskの2手法のシリーズについて,簡単にだけ手法を紹介する(2節).また,初期手法でかつ,その後の(COCOを中心とした)画像マルチタスク学習においても重要な手法であるので,(著者からみた)その意義を述べておきたい.

2. DeepMask と SharpMask の詳細

2.1 DeepMask

DeepMask [Pinheiro et al., 2015] は,スラインディングウィンドウで各部分画像からCNNによりマスク候補(Mask Proposal) 画像を生成し,それらマスク候補全部をFast R-CNNでクラス識別する.

Faster R-CNN の前半ステージと同じ領域候補生成の仕組みを採用しているが,DeepMask では矩形の代わりにバイナリーマスクを各空間位置で推定する.すなわち,DeepMask は「(1)マスク候補(バイナリーマスク画像)の推定」と「(2)マスク候補のクラス(1 or 0)の推定」の2タスクを,2ヘッドでマルチタスク学習するCNNである.これは,「出力する領域提案が,物体マスクになったRPN」である(= Binary Mask Proposal Networkである)と考えれば,理解しやすい.

しかし,DeepMaskは「元画像の4分の1サイズ($56 \times 56$サイズ)のマスク画像」を推定する,出力マスク解像度の低いCNNである.スライディングウィンドウ後出力を平均化した最終マスクは,元画像の4分の1の解像度がしかなく,これでは物体のおおまかなマスクまでしか推定できなかった.例えば,人・動物などのような「関節あり物体(Articulated Object)」では,手などの部分をうまく輪郭として拾えない結果になってしまう傾向があった(解像度が低い大まかなマスクしか出力できないので).また,「関節あり物体」以外の物体についても,滑らかな輪郭部分に対しての位置合わせが中途半端になってしまう欠点があった.

この制限・欠点を打破するために,同チームから,次ぎに改善版として,SharpMask [Pinheiro et al., 2016] が提案される.

2.2 SharpMask

SharpMask [Pinheiro et al., 2016] は,DeepMaskの著者らチーム自身による,高解像度出力ができる改善版の提案である.題名の「Learning to refine object segments」にあるとおり,Encoder-Decoder構造で,解像度を少しずつ増して,低解像のマスクを高解像度の出力マスクまで順にRefineいしてく,カスケード方式のネットワークの提案である.

ShapMaskは,U-NetFPNとものちに呼ばれるようになる「多解像度Encoder-Decoder」のDecoder側に,毎回Refine用のブロックを挿入した構造である.このRefine用ブロックを通じて,入力画像の同じ解像度の,正確(Sharp)なマスクを,Decoder側でカスケード学習することにより出力できるようになった(Facebook ブログでのSharpmaskの紹介記事).

論文 [Pinheiro et al., 2016] 中の図2で,DeepMaskの結果とSharpMaskの結果が比較されており,ラフな境界になっていたDeepMaskと比べて,ShapMaskはインスタンスごとに正確な境界(=マスク)を推定できるようになっていることがわかる.

SharpMaskでは,まず4段階の畳み込みにより,$14\times14$の特徴マップまでbottom-upなエンコーディングを行う(このEncoder側は,DeepMask と全く同じ構成 ).一方,新規追加したDecoder側では,カスケード式にRefinementモジュールを間に4度用いる.これにより,低解像度マスクから元画像サイズの高解像度マスクまでスケールを上げていきながらマスクもRefineしていく.Decoder側の各Refinementモジュールでは,横方向のスキップ接続(=ラテラル接続)を用いて,bottom-up特徴と前ステージのマスクを入力とし,マスクの高解像度化をTop-downに行う.

当時はその呼び方が定まっていなかったが,前述のように,(同時期に登場した)U-Net型のネットワーク構造に,(ただしセマンティックセグメンテーション向けのU-Netとは異なり,2ヘッド構造のマルチタスク学習ではある).また,全体だけみてU-Netであると言ってもよいが,ラテラル接続を設置して,前半のCNN EncoderとDecoder CNNを追加しているので,「FPNを後半に設置して拡張した」ともみなせる.

3. DeepMask ・Shaprmaskシリーズの位置づけ

のちに決定版手法として登場するMask R-CNN(2ステージ手法)にむけて,COCOデータセットに対して,初めてまともな「2ヘッドによるマルチタスク学習」が初めて提案された手法である.その後2015年頃以降の,インスタンスセグメンテーションやその後の画像マルチタスク系の研究も, 元を辿れば,このCOCOデータセットで始まった,2タスク(以上の)画像出力を学習する問題の初登場から,ディープネットのマルチタスク学習の発想が来ていると言える.例えば車載動画系での,デプス画像・意味マスク画像の2ヘッド同時学習や,Stanford Savarese研のTaskonomyなど,2タスク以上の画像サイズ出力をマルチタスク学習する元祖は,(COCO初期手法の)Deepmask・SharpMaskの研究にあると言え,この手法あたりで,初めてまともに複数画像タスクの学習や,その中でのマスク推定がちゃんとできるようになりはじめた.

以降のインスタンスセグメンテーション研究は,解いている問題もこの頃と同じで,あまり代わり映えがしてしない .2022年現在で考えてみても,Panoptic設定が出てたり,ビデオ物体セグメンテーション化されたり,インスタンスセグメンテーションがLong-tail化されたくらいで,あまり本質的なところに大きな変化がない.よって,正直インスタンスセグメンテーションにおいては,この記事の2つの初期手法DeepMask・ShapMaskの提案や,同時期のR-FCNあたりが最も大事であり,その以降の手法は,これらの改良研究でしかないとも見れる.

関連記事

References

  • [Lin et al., 2014] Tsung-Yi Lin, Michael Maire, Serge Belongie, James Hays, Pietro Perona, Deva Ramanan, Piotr Dolla ́r, and C. Lawrence Zitnick. Microsoft coco: Common objects in context. In ECCV, 2014.
  • [Pinheiro et al., 2015] P. O. Pinheiro, R. Collobert, and P. Dollar. Learning to segment object candidates. In NIPS, 2015.
  • [Pinheiro et al., 2016] P. O. Pinheiro, T.-Y. Lin, R. Collobert, and P. Dollar. Learning to refine object segments. In ECCV, 2016