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

1. インスタンスセグメンテーション(Instance Segmentation) とは [概要]

インスタンスセグメンテーション(Instance Segmentation) とは,画像上やRGB-D画像に写っている物体インスタンス(Instance)の前景領域マスクを,各物体インスタンスをお互いに別の物と区別しながら推定する問題である.前景領域マスクとは,[1 or 0]の 2値により「前景物体 or 背景」を表現するものである.前景背景の2値マスク画像処理の「2値画像処理」や「前景マスク画像(=背景マスク画像)」に,伝統的に使用されているものである.

この記事では,それ以降の基盤手法となった Mask R-CNN [He et al., 2017] の説明を最終目的として,畳み込みニューラルネットワーク(CNN)を用いたインスタンセグメンテーション手法を,登場順に序盤かから4世代 (2〜5節)にカテゴリー分けして紹介する.

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

図1には,複数物体・複数クラス画像が映る入力画像に対する,以下の4つの問題の,出力の違いを描画し,それぞれ比較できるようにした:

同じ画素毎のクラス識別の中において,2個以上の同一クラスの複数インスタンスが写っている際に,セマンティックセグメンテーションでは,インスタンスの違いは区別せず「意味クラスの識別」だけをおこなう(図1-c).従って,図1-c のように,2つの「dog」インスタンス同士が物体間遮蔽している場合だと,それらの境界は判別できず,1領域につながった状態で各領域が推定される.

一方,インスタンスセグメンテーションでは,それぞれ個別のインスタンス領域マスクを区別するので,物体間の境界も区別して,各物体インスタンスのマスクを推定する(図1-d).従って,図1-dのように,物体間遮蔽した犬同士も個別に別領域としてマスクを推定する問題設定である.また,遮蔽していない場合も,「cat1」「cat2」のように,物体検出と同様,各インスタンスを区別してマスクを出力する.セマンティックセグメンテーションでは,cat領域の推定だけ行うので,cat1とcat2を区別しない(図1-c).

このように,インスタンスセグメンテーションは,物体検出(図1-b)とその物体のセマンティックセグメンテーション(図1-c)の2つのタスクが混ざった「2タスクを同時に解く問題」であるともみなせる.したがって,複数タスクの損失関数の重み付け和を用いて,いっぺんに最適化するマルチタスク学習として問題を解くことが多い.

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

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

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

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

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

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

1.2 記事の構成

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

そこで,2節以降では,Mask R-CNN(4節)の登場を「境目」かつ「ランドマーク」とみなした上で,それまでに各年(2015~2018)で更新された代表的な戦略カテゴリーを,時系列順に各節で述べる(2〜5節):

  • 2. マスク候補生成を用いた手法(2015年ごろ)
  • 3. Instance-awareなFCNを用いる手法(2016年ごろ)
    • 3.1 R-FCN
    • 3.2 FCIS
  • 4. 領域提案を検出後に,矩形内でマスク分割する手法 (Mask R-CNN 2017 以降)
    • ただしMask R-CNN以前もこのアプローチはあった
  • 5. その後の動向 [Mask R-CNN 登場以降] (2018~2019年ごろ).
    • バックボーンCNNの強化や,PANet, Mask Scoring R-CNNなど
  • 6. まとめ

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

2015年のCOCOデータセット [Lin et al., 2015] の初回コンペティションで1位をとったのが,FAIRによるDeepMask [Pinheiro et al., 2016] である.物体候補ROI検出手法にならって,スライディングウィンドウにより各位置で物体候補マスクを推定し,その候補マスクをクラス識別することで,インスタンスマスクを手に入れる戦略である.

ただDeepMaskはまだ低解像度マスクであったので,そのマスクをシャープ(高解像度)にできるように,Decoderを後半に追加し,U-Net構造化をおこなったSharpMask [Pinheiro et al., 2016] を同チームが翌年提案した.このU-Net化により,SharpMaskは,精密でシャープな物体境界を推定できるようになった.

3. Instance-aware FCN を用いた手法

この時期に登場した FCN(Fully Convolutional Network) を,物体検出技術に組み合わせることで,インスタンスセグメンテーションを達成しようという動機を持つ研究(チーム)がいくつか登場してきた.

その中で,「各画素が,物体矩形のどの相対グリッド位置に相当しているか」も FCNへ同時に学習させることにより,複数インスタンスを区別するInstance-Aware FCNを用いた手法が登場した.ここでは,その代表例としてR-FCN [Dai et al., 2016a] (3.1節)と FCIS [Li et al., 2017] (3.2節)の2つを取り上げておきたい.

ちなみに [Dai et al., 2016a], [Li et al., 2017] の研究グループは,その狭間の時期にも,少し方向性を変えて,スライディングウィンドウ方式 (2節))を採用した Instance-sensitive FCN[Dai et al., 2016b] も,別途提案している(この記事では紹介しない).

3.1 R-FCN

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

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

ネットワーク構造はFaster R-CNNに習った「領域提案検出 + ROI pooling特徴による[クラス識別 +ROI回帰]」の,2ステージCNN構成をベースとする.しかし,領域提案用の特徴マップが完成した後も,Fully Convolutionalなまま,スコアマップを計算し続ける点が異なる(※).

※ 出力層手前の特徴マップのサイズどおりのサイズで,最終的に何らかのスコアを出力する時に,その出力マップを「スコアマップ(Score Map)」と呼ぶことが多い.セグメンテーション系問題以外だと,人物姿勢推定などでもスコアマップを用いる.

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

3.2 FCIS

FCISのオーラル発表動画

前節のR-FCN では,検出目的のRPN(1ステージ目)と,セグメンテーション用のFully Convolutional Network(2ステージ目の)は,別物で分離していたので.そこで,R-FCN [Dai et al., 2016] のJifeng Daiらグループは次に,R-FCNをEnd-to-End化して2タスク間で特徴マップも共有する設計に統合・改善した,FCIS (fully convolutional instance-aware semantic segmentation) [Li et al., 2017] を発表した.(github).

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

4. Mask R-CNN: 決定版手法の登場

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

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

4.1 概要: 領域提案ネットワーク + 各領域内でのみFCN.

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

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

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

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

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

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

Mask R-CNNの著者らは,ROI Poolingよりも「 特徴マスク – ROI 」間の位置合わせ(alignment)が正確な ROI Align層を提案した(図3:口頭発表動画でのROI Alginの図解も参照).

ROI Align は Spatial Transformer [Jaderberg et al., 2015] 層に習ったバイリニア補間サンプリングを使用し,サブピクセル精度で座標位置合わせされた特徴量を,バイリニア補間でプーリングする.これにより,サブピクセル精度のROI領域内特徴を補間生成できるので,ROI Poolingよりも「特徴マップ- ROIマスク」間の位置合わせが正確に行うことができ,領域提案内のマスクの推定精度も高くなった.

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

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

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

5. その後の動向

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

PANet (Path Aggregation Network) [Liu et al., 2018]では,前年ごろに物体検出向けに新たに登場した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 [Huang et al., 2019](github)は,Mask R-CNN に推定マスクの質をあらわすスコアの「(各クラスの)Mask IoU」を推定するヘッドを追加し,クラス信頼度と相関が強いマスク信頼度も追加で出力できるようになった拡張版である.元のMask R-CNNでは,クラス識別/ボックス回帰ヘッドとマスク推定ヘッドの間ではロス関数は分離して連動性がなかったのが,Mask IoUヘッドを通じて2つのスコアが相関を持つよう学習されるので,タスク間がより連動した学習にもなり性能向上も達成された.

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

6. まとめ

この記事では,ディープラーニング時代における「画像のインスタンスセグメンメンテーション」について,初期の手法からMask R-CNN あたりまで紹介を行った.

より詳しく知りたい方は [Farhana et al., 2020] のサーベイも参考にされたい.

参考書籍

References

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

外部参照リンク