画像のインスタンスセグメンテーション [Mask R-CNNなど]

2+

1.概要

インスタンスセグメンテーション(Instance Segmentation)とは,画像上やRGB-D画像に写っている物体インスタンスの前景領域マスクを,各物体インスタンスを区別しながら推定する問題である.この記事では,ICCV2017 best paperであり,それ以降の基盤手法となったMask R-CNN[1]を中心にして,画像のインスタンセグメンテーションの各手法を,登場順に4世代にカテゴリー分けして紹介する.

以下の,図1に,物体検出,セマンティックセグメンテーション,インスタンスセグメンテーションの各問題設定における出力の違いが示されている.

図1 [2]のFigure 1を引用.右下の(d)がインスタンスセグメンテーション.物体インスタンス毎に個別のIDが振り分けられ,各インタンス領域の前景マスクが推定される.

同じ画素毎のクラス識別でも,2個以上の同一クラスインスタンス(図1の例だと羊が5インスタンス)が写っているときに,「セマンティックセグメンテーション」では,インスタンスの違いは区別しないで意味クラスの識別だけ行うが,「インスタンスセグメンテーション」では,それぞれ個別のインスタンス領域マスクを区別してマスクを推定するので,物体間の境界も推定するようになる.

関連記事:セマンティックセグメンテーション

この記事では,画像を入力とした2Dインスタンスセグメンテーションについて深層学習登場以降の手法をまとめる(2015年〜).画像向けの2D手法について述べていく.よって「2.5DのRGB-Dデータ(点群)」を入力とするインスタンスセグメンテーションはこの記事では取り扱わない.ロボットビジョンの分野では深層学習登場以前も3D点群データを対象に取り組まれてきたので,インスタンスセグメンテーションの問題設定自体が新しく出たわけではなく,深層学習登場後に2D画像が入力の場合でも新たに解けるようになってきたという点がポイントである.また,動画でターゲットの1物体を(追跡しながら)毎フレームでセグメンテーションし続ける研究(いわゆるVideo Object Segmentation)についても,この記事ではとりあげない.

1.1 背景:インスタンス領域分割する意義

インスタンスセグメンテーションが実現できる大きな意義は,入力データの画像上や3D点群上に「複数物体重なりあって」登場してる際に,物体インスタンスごとに区別した各セグメンテーションマスクを推定できておくと,より高次のタスクを助けることにも繋がる点にある.

たとえば,動画からの複数人物追跡(Multiple People Tracking)がその1例である.複数物体追跡では,物体検出器で検出した「矩形」をもとに,矩形内の画像特徴量を頼りに,同一人物同士のフレーム間対応づけを行うのが伝統的な解き方である.しかし,人物矩形情報までで前景マスクが無いと,人物間遮蔽中に.人物Aと人物Bのそれぞれの前景特徴を綺麗に取得しづらい.そこで,インスタンスセグメンテーションで人物毎のマスクも推定されていると「マスク上のAに対応している画素」と「マスク上のBに対応している画素」だけを綺麗に取得でき,より正確な対応付が行えるようになって複数人物追跡精度も向上する.

また,3D点群入力をよく用いる「ロボットビジョン」の観点からも考えてみよう.ばら積みされた外観検査対象物体や,テーブルや整理棚・タンスに置いてある複数の物体のうち,1つずつをロボットアームで把持したい場合を考える.このとき,綺麗な各インスタンスの領域マスクが手に入ると,把持箇所をマスクから決めるだけでなく,物体の6DoF姿勢の推定もの精度も向上する.また,野菜畑の画像で,(お互い重なり合って映る場合もある)苺やピーマンなどを1個ずつロボットアームに把持させたい場合も,ばら積み設定と同様に「同一クラスの物体が密集している」状況なので,インスタンセグメンテーションにより物体インスタンスのマスクを推定できると有用である.

1.2 手法の変遷

(深層学習ベースの)画像のインスタンセグメンメーテションは,Mask R-CNN[1](ICCV2017)で,初めて実用的な精度が達成されはじめた.初めての大規模データセットであるCOCO[2](2014)が登場し研究が行いやすくなったあと,2015年からは,ちょうど一年ごとに「新たな決定版アプローチ」が更新されていた.

そこで,この記事の2節以降では,以下のようにMask R-CNN(4章)の登場を境目として,各年で更新された代表的戦略をカテゴリー分けし,それらを時系列順で述べる:

  • 2. スライディングウィンドウによる手法 (DeepMaskなど) (2015年ごろ)
  • 3. Instance-awareなFCNを用いる手法 (2016年ごろ)
  • 4. 物体検出後に矩形内で分割する手法 (Mask R-CNN以降) (Mask R-CNNは2017年ごろ.ただしMask R-CNN以前もこのアプローチの手法はあった)
  • 5. Mask R-CNN登場以降 (2018年以降ごろ.バックボーンCNNの強化や,Mask Scoring R-CNNなど)

CVMLエキスパートガイドでは,各記事の簡潔性を優先して,重要な手法のみ優先的に紹介する記事構成にしている.したがって,この記事においても,代表的手法だけ取り上げており網羅的には述べていない点には注意されたい

2 スライディングウィンドウでのProposal Mask生成による手法

2015年のCOCOデータセット[2]の初回コンペティションで1位をとったのが,Facebook ResearchによるDeepMask[3]である.物体候補ROI検出手法にならって,スライディングウィンドウにより各位置で物体候補マスクを推定し,その候補マスクをクラス識別することで,インスタンスマスクを手に入れる戦略である.また,同グループは,改良版のSharpMask[4]も提案した.ここではそれらの[3][4]について紹介する.

2.1 DeepMask

DeepMask[3]は,スラインディングウィンドウにより,各部分画像からCNNによりMask Proposal画像を生成し,そのMask Proposal群を最後にFast-RCNNでクラス識別する手法である.Faster R-CNN[8]の前半ステージと同じProposal 生成の仕組みを採用しているが,矩形の代わりにバイナリーマスクを推定する.すなわちDeepMaskは「Proposal Mask(バイナリーマスク画像)」と「Proposalクラス識別(1 or 0)」の2タスクを,2ヘッドでマルチタスク学習するCNNである.Region Proposal Networkが出力するObject Region Proposal の(Object )マスク版と考えれば良い.

しかし,DeepMask[3]は元画像の4分の1サイズである56×56サイズのマスク画像(入力の4分の1のサイズ)を推定するCNNであるので,スライディングウィンドウで出力された各マスクを平均化した最終マスクは,解像度が4分の1で,物体のおおまかな輪郭をなぞったマスクまでしか推定できなかった.例えば人・動物などのようなArticulated Objectでは,(解像度が低い大まかなマスクなので)手などの部分をうまく輪郭として拾えない結果になりがちであり,それ以外の物体クラスについても,滑らかな輪郭部分に対して位置合わせが中途半端になりがちでった.この制限を打破するために,同チームから改善版として,次節のSharpMask[4]が次に提案される.

2.2 Sharp Mask

SharpMask[4]は,DeepMask[3]の著者ら自身による改善版である.Deep Masakのネットワークに,top-down処理による逆方向のrefienement処理を加えることでEncoder-Decoder化し,入力画像の解像度と同じで,正確なマスクをDecoder側でカスケード学習する手法である (Facebook エンジニアブログでのSharpmaskの紹介記事).

SharpMaskのネットワークでは,まず4段階の畳み込みにより,14×14の特徴マップイズまでbottom-upなエンコーディングを行う(このEncoder側はDeepMaskと同じ構成).一方,あらたに追加したDecoder側ではカスケード式にRefinementモジュールを4回用いて,低解像度マスクを元画像サイズの高解像度マスクまでスケールを上げながらRefineしていく.

Decoder側の各Refinementモジュールでは,横方向スキップ接続でbottom-up特徴と前ステージのマスクを入力として,マスクの高解像度化をTop-downにう.このカスケード処理を行うことにより,bottom-up特徴も用いながらマスクを元画像と同じ解像度までDecodeできるようになり,DeepMaskの大まかなマスクと違って,正確でSharpなマスクが推定できるようになった.

3 Instance-awareなFCNを用いる手法

この時期に並行して登場したFCN[5]を,物体検出技術と組み合わせてインスタンスセグメンテーションしたい.そこで,「各画素が物体矩形のどの相対グリッド位置に相当しているか」もFCNに学習させることで,複数インスタンスを区別する「Instance-AwareなFCNを用いた手法」が登場した.その代表的な手法としてR-FCN[6](3.1節)とFCIS[7](3.2節)の2つを取り上げる.

関連記事:セマンティックセグメンテーション「2.FCNとスキップ接続」

関連記事:物体検出

ちなみに,[6] [7]の著者グループは,そのあいだの時期に,Instance-awareなFCN路線でも少し方向性を変えて,スライディングウィンドウ方式(2節)を採用した Instance-sensitive fully convolutional networks [8]も,別途提案している.

3.1 R-FCN (Region-based Fully Convolutional Network)

R-FCN(Region-based Fully Convolutional Network)[6] は,Faster R-CNN[9]の後半ステージを,Instance-AwareなFCN[5]に拡張させる戦略を始めて提案した.これは「Faster-RCNNとFCNの統合にトライした研究」であるとも言える.

R-FCN[6]は,インスタンス物体の矩形を縦横$k \times k$のブロックとみなし,物体カテゴリ$C$種類と背景クラスの計$C+1$個のクラスを物体検出し,かつROIのマスクも推定する.ネットワーク構造はFaster-RCNN [9]に習った「Proposal検出 + ROI pooling特徴によるクラス識別/ROI回帰」の2ステージCNN構成をベースとするが,Region Proposal 用の特徴マップが完成した後もFully Convolutionalのままスコアマップを計算し続ける点が異なる.(※特徴マップがそのまま何らかのスコアとして出力される時に,「スコアマップ」と呼ばれることが多い)

FCNの結果として,各画素が「矩形の$k \times k$のどのブロックに相当しているか」を示すスコアマップを$k ¥times k \times (C+1)$チャンネル出力する.これにより,Proposal Regionごとに$k ¥times k$個のグリッド位置に敏感なセグメンテーションマスクをROI-poolingで手に入り,それらのマスクをクラス投票することで最終的な各ROIのクラスが決定される.

3.2 FCIS (Fully Convolutional Instance-aware Semantic segmentation)

前節のR-FCN[6]では,検出目的のRegion Proposal Networkと,セグメンテーション用のFully Convolutional Networkは別物のサブネットワークであった.そこで[6]のJifeng Daiらは次に,R-FCNの発展版としてEnd-to-End化して2タスク間で特徴マップも共有する設計にしたFCIS (fully convolutional instance-aware semantic segmentation)[7]を発表した.(github口頭発表動画)..

FCIS[7]では,R-FCN[6]で提案されたInstance-Awareなスコアマップの出力を,ROI内での前景領域を推定するinsideスコアマップと,ROI内の背景領域を推定するoutsideスコアマップの2つのマスクを推定する.insideマスクを画素ごとにsoftmaxすれば前景マスクが手にはいり(セグメンテーションタスク),outsideマスクを画素ごとにmaxしてクラス投票するとROIの物体クラスが推定できる(クラス識別タスク).すなわちFCISは「ROI外」「ROI内-Outside領域」「ROI内-Inside領域」の3つに分けて,FCNでスコアマップを学習する手法である.

4.Mask R-CNN : Region Proposal + Region内でのみFCN

3節で述べたように,Faster R-CNN [9]的な2ステージ物体検出手法と FCN[5](画像全体)の2つを統合するアプローチが,2016年には主流になってきていた.しかしこの方針だと,当時の最新手法FCIS[7]でも,出力にはマスク境界の誤差やアーティファクトもまだ多く発生しおり,まだ実用的な結果は得られていなかった.

そんな中,FCNは画像全体では行わず,Region Proposal内でしかFCNを行わない路線の最新手法としてMask R-CNN[1]が登場した.COCOデータセット[2]での実験結果が,実用的なレベルに近づき始めた上に,解き方もシンプルでわかりやすいことから,このMask R-CNNは決定版手法となる.

4.1 Mask R-CNN

Mask R-CNN[1]は,FAIRの物体検出と深層学習のスター著者陣による有名な研究で,ICCV2017のbest paperでもある (口頭発表動画) .

Mask R-CNN は,Faster R-CNN[9]のReigion Proposal Networkを採用し,後半処理に「FCN[5]による,ROI内の物体マスク推定ヘッド」を追加しただけのシンプルなネットワーク構成である.加えて,ROI内マスクをより正確に推定できるROIAlignを提案した.

論文中の実験の章でも可視化されているように,Mask R-CNNは旧来手法(FCIS[7]など)の弱点であった「インスタンス間の余分な誤り領域出力」がなくなり,なおかつROIAlignのおかげでマスク境界部分も正確に推定できるようになり,大幅に定量評価値・定性的評価を更新した.

ROIAlign

Faster R-CNNのROIPool[9]層は,後半ステージのROIごとの$7\times 7$のグリッドの特徴マップを,各Reigion ProposalのROIからサブピクセル精度で抽出する.しかし,各グリッドの特徴をPoolする際に,矩形内の座標が$7\times 7$のビンの位置のいずれかへ量子化(round処理)が行われ,その位置の特徴を用いるので,画素レベルで位置合わせをした特徴ベクトルは使用できない.このROIPoolは,グリッドサイズの位置ずれには強くなるのでクラス識別の学習には好ましいものの,今回の目的のように,画素単位で位置合わせして特徴に対するマスクを学習したい場合には悪影響がある.

図2 ROIAlign:緑の点線のグリッドは特徴マップ.黒の実線グリッドがROI(2×2のグリッド)で,赤点は各グリッドbin上のサンプリング点.各サンプリング点で,特徴マップ上の4近傍点から値をバイリニア補間によって得る.これによりサブピクセル精度で補間された,ROI内の特徴の値を集めて「クラス識別/ROI修正回帰/マスク推定」に使用することができる.

そこで著者らは,ROIAlign層[1]によるProposal ROI領域の特徴マップPoolingを提案した(図2:口頭発表動画でのROIAlginの図解を参照).ROIAlignはSpatial Transformer[10]層に習ったバイリニア補間サンプリングを使用し,サブピクセル精度で座標位置合わせされた特徴量をバイリニア補間でPoolingする.これにより,サブピクセル精度のROI特徴を補間生成できるので,ROIPoolよりも正確な「特徴マップ- ROIマスク」の位置合わせができるようになり,マスクの精度が高くなった(口頭発表動画)

また,[1]の論文では,最後の節にMask R-CNNの拡張として,人物クラスに対しては関節キーポイントも学習させることを提案・実験している.インスタンスマスクに加えて,$K$個の関節キーポイント位置をそれぞれ推定するバイナリーマスクも$K$チャンネル追加で学習させることで,COCOデータセット[2]の人物に対して,高精度に関節キーポイント推定もできるようになった.

関連記事:単眼画像からの人物姿勢推定(2D)

5 その後の動向

最後に,Mask R-CNN登場以降の動向を簡単にだけ触れておく.

PANet(Path Aggregation Network)[11]では,前年ごろに物体検出向けに新たに登場したFeature Pyramid Network(FPN)をバックボーンCNNに採用した.Mask R-CNNの複数スケール特徴の発展版を提案した.FPNでは対応する4スケールのうち,出力したPropsal ROIのサイズに近いサイズ1スケールの特徴マップのみROIPoolして用いる.しかし,画素単位のマスク推定には,低レベル特徴マップや中間レベルマップも貢献するので,ROI内で4レベルの特徴を全部集めたい.そこで,FPNバックボーンの後段に,更にBottom-Up層を4段追加し,4レベル全体を適応的に合成してRegion 特徴をPoolingする「adaptive feature pooling」を提案した.

Mask Scoring R-CNN [12](github)は,Mask R-CNN [1]に推定マスクの質をあらわすスコアである「(各クラスの)MaskIoU」を推定するヘッドを追加し,クラス信頼度と相関が強いマスク信頼度も追加で出力できるようになった拡張版である.元のMaskR-CNNでは,クラス識別/ボックス回帰ヘッドとマスク推定ヘッドの間ではロス関数は分離して連動性がなかったのが,MaskIoUヘッドを通じて2つのスコアが相関を持つよう学習されるので,タスク間がより連動した学習にもなり性能向上も達成された.

また,Mask-RCNN [1]のチームから,1ステージ手法としてTensorMask[13]が提案され,2ステージ手法のMask-RCNN[1]と同等の性能を達成している.

6 まとめ

この記事では,ディープラーニング時代における「画像のインスタンスセグメンメンテーション」について,初期の手法から,代表的手法となったMask R-CNNまでを紹介した.より詳しく知りたい方は,[14] などのサーベイも参考にされたい.

関連書籍

References

  • [1] K. He, G. Gkioxari, P. Doll ́ar, R. B. Girshick, Mask r-cnn, In ICCV, 2017.
  • [2] 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.
  • [3] P. O. Pinheiro, R. Collobert, and P. Dollar. Learning to segment object candidates. In NIPS, 2015.
  • [4] P. O. Pinheiro, T.-Y. Lin, R. Collobert, and P. Dollar. Learning to refine object segments. In ECCV, 2016
  • [5] J. Long, E. Shelhamer, and T. Darrell. Fully convolutional networks for semantic segmentation. In CVPR, 2015
  • [6] J. Dai, Y. Li, K. He, and J. Sun. R-FCN: Object detection via region-based fully convolutional networks. In NIPS, 2016.
  • [7] Yi Li, Haozhi Qi, Jifeng Dai, Xiangyang Ji, and Yichen Wei. Fully convolutional instance-aware semantic segmentation. In, CVPR 2017.
  • [8] J. Dai, K. He, and J. Sun. Instance-aware semantic segmentation via multi-task network cascades. In CVPR, 2016
  • [9] Shaoqing Ren, Kaiming He, Ross Girshick, and Jian Sun. Faster R-CNN: Towards real-time object detection with region proposal networks. In NIPS, 2015.
  • [10] Max Jaderberg, Karen Simonyan, Andrew Zisserman, et al. Spatial transformer networks. In NIPS, 2015.
  • [11] Shu Liu, Lu Qi, Haifang Qin, Jianping Shi, and Jiaya Jia. Path aggregation network for instance segmentation. In CVPR, 2018.
  • [12] Zhaojin Huang, Lichao Huang, Yongchao Gong, Chang Huang, and Xinggang Wang. Mask scoring R-CNN. In CVPR, 2019.
  • [13] Xinlei Chen, Ross B. Girshick, Kaiming He, and Piotr Dollar. Tensormask: A foundation for dense object segmentation. In, ICCV 2019.
  • [14] Sultana, Farhana, Abu Sufian, and Paramartha Dutta. “Evolution of image segmentation using deep convolutional neural network: A survey.” Knowledge-Based Systems (2020): 106062.

外部リンク

2+