インスタンスセグメンテーション(Instance Segmentation)

1 インスタンスセグメンテーション(Instance Segmentation)の概要

画像のインスタンスセグメンテーション(Instance Segmentation) [2] とは,画像上やRGB-D画像に写っている物体インスタンスの前景領域マスクを,各物体インスタンスを区別しながら推定する問題である.

この記事では,それ以降の基盤手法となったMask R-CNN [1] の説明を中心として,インスタンセグメンテーションの各手法を,登場順に4世代にカテゴリー分けして紹介する.

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

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

同じ画素毎のクラス識別の中ででも,2個以上の同一クラス複数インスタンス(図1の例だと,羊が5インスタンス)が写っている際にセマンティックセグメンテーションでは,インスタンスの違いは区別しないで意味クラスの識別だけ行う.一方,インスタンスセグメンテーションでは,それぞれ個別のインスタンス領域マスクを区別してマスクを推定するので,物体間の境界も推定する.2つのタスクが混ざっているので,複数タスクの損失関数の重み付け和を用いて,いっぺんに最適化するマルチタスク学習として問題を解くことが多い.

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

動画中でターゲットの1物体を(追跡しながら)毎フレームでセグメンテーションし続ける問題設定(いわゆるVideo Object Segmentation)の技術についても,この記事では取り上げない.

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

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

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

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

1.2 記事の構成

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

そこで,2節以降では,Mask R-CNN(4節)の登場を境目とみなした上で,各年で更新された代表的戦略をカテゴリー分けした手法を,時系列順で述べる:

  • 2. マスク候補生成を用いた手法 (DeepMask, SharpMask) (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など)
  • 6. まとめ

2 マスク候補生成を用いた手法

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

2.1 DeepMask

DeepMask [3] は,スラインディングウィンドウで,各部分画像からCNNによりマスク候補(Mask Proposal) 画像を生成し,それらマスク候補全部をFast R-CNNでクラス識別することで,インスタンスセグメンテーションを達成する手法である.

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

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

2.2 Sharp Mask

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

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

このカスケード処理によって,bottom-up特徴も用いながらマスクを元画像と同じ解像度までDecodeできるようになったことで,DeepMask [3] の大まかな出力マスクは異なり,正確でSharpなマスクが推定できるようになった.

3 「Instance-aware なFCN」を用いた手法

この時期に登場した 完全畳み込みネットワーク(FCN: Fully Convolutional Network)[5]を物体検出技術に組み合わせることで,インスタンスセグメンテーションを達成しようという動機を持つ研究チームがいくつか登場してきた.その中で,「各画素が,物体矩形のどの相対グリッド位置に相当しているか」もFCNに学習させることにより,複数インスタンスを区別する「Instance-AwareなFCN」を用いた手法が登場した.ここでは,その代表例としてR-FCN [6] (3.1節)と FCIS [7] (3.2節)の2つを取り上げておきたい.

ちなみに [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 R-CNNとFCNの統合にトライした研究」であるとも言える.

R-FCN[6]は,インスタンス物体の矩形を縦横$k \times k$のブロックとみなし,物体カテゴリ$C$種類と背景クラスの計$C+1$個のクラスを物体検出し,かつROIのマスクも推定する.

ネットワーク構造はFaster R-CNN [9]に習った「領域提案検出 + ROI pooling特徴によるクラス識別/ROI回帰」の2ステージCNN構成をベースとするが,Region Proposal 用の特徴マップが完成した後もFully Convolutionalなまま,スコアマップを計算し続ける点が異なる(※ 出力層手前の特徴マップのサイズどおりのサイズで,最終的に何らかのスコアを出力する時に,その出力マップを「スコアマップ」と呼ぶことが多い)

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

3.2 FCIS (Fully Convolutional Instance-aware Semantic segmentation)

FCISのオーラル発表動画

前節の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: Instance Segmentationの可能性を大きく広げた決定版手法

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

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

4.1 Mask R-CNNの概要: Region Proposal + 各領域内でのみFCNで畳み込む手法

Mask R-CNN [1] は,FAIR(Facebook AI Research)の,物体検出と深層学習のスター著者陣による有名な研究である(ICCV2017のbest paper).Faster R-CNNのシンプルな拡張手法でありながらも,その後の物体認識やセグメンテーション,物体キーポイント推定の流れを全て変えることになった重要な研究である.

前半処理には,Faster R-CNN [9]の 領域提案ネットワーク(RPN)を採用し,後半処理には「FCN [5] による,ROI内の物体マスク推定ヘッド」を追加しただけの,シンプルなネットワーク構成である.加えて [1] では,[9]のROI Poolingを使うよりも,ROI 内の物体マスクをより正確に推定できる ROI Align が提案された.

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

Mask R-CNN の論文では,CNNバックボーンとして当時の最先端であった ResNet/ResNeXtFeature Pyramid Networks により拡張したものが採用されている.

4.1.2 ROI Align : Instance Segmentation 向けの領域プーリング

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

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

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

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

関連記事:人物姿勢推定 (Human Pose Estimation)

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 R-CNN [1] のチームから,1ステージ手法としてTensorMask [13] が提案され,2ステージ手法のMaskR-CNN [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.

外部参照リンク

関連記事