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

記事を共有する:

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

インスタンスセグメンテーション (Instance Segmentation)とは,画像上やRGB-D画像に写っている「物体クラスの実例 (Instance)」の前景マスクを,各インスタンスごとに区別して検出する問題である.このサイトでは,インスタンスセグメンテーションを実例分割とも,翻訳しておきたい.

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

1.1 記事の構成

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年ごろ).
  • 6. まとめ

深層学習ベースの画像のインスタンセグメンメーテションは,Mask R-CNN [He et al., 2017] が登場した頃から,初めて実用的な精度が達成されはじめた.

初の大規模データセットである COCOデータセット (2014) が登場したおかげで,インスタンスセグメンテーションの研究が行いやすくなった.その後は,上記のリストの用に,2015年以降ちょうど一年単位で「新たな決定版アプローチ」が更新され,潮流が変化していた.

1.2 インスタンスセグメンテーションの問題設定

インスタンスセグメンテーション (Instance Segmentation), 実例分割
図1. インスタンスセグメンテーション (Instance Segmentation), 実例分割

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

物体認識 物体検出
セマンティックセグメンテーション インスタンスセグメンテーション

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

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

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

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

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

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

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

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

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

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

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) [Long et al., 2015] を,物体検出技術に組み合わせることで,インスタンスセグメンテーションを達成しようという動機を持つ研究(チーム)がいくつか登場してきた.

その中で,「各画素が,物体矩形のどの相対グリッド位置に相当しているか」も 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シリーズに習った,2ステージ構成「(1)領域提案検出 →(2) ROI pooling特徴による[クラス識別 + ROI 矩形のオフセット回帰]」を基本構造としている.しかし,領域提案用の特徴マップが完成した後も,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ステージ目)と,セグメンテーション用のFCN (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] を発表した (FCISの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 の 領域提案ネットワーク(RPN)を採用し,後半処理には「FCN による,ROI内の物体マスク推定ヘッド」を追加しただけの,シンプルなネットワーク構成である.加えてMask R-CNNでは,ROI Pooling の,空間位置合わせ具合を改善した ROI Align が提案された.これにより,領域候補内の特徴が,より一合わせされたかたちで2ステージ目に受け渡せるようになった.

論文中の実験の章でも可視化されているように,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

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

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

図3での,ROI Alignによる特徴集約手順を,もう少し詳しく説明する.緑の点線のグリッドは特徴マップ.黒の実線グリッドがROI (2 × 2 のグリッド)で,赤点は各グリッドbin上のサンプリング点を示す.各サンプリング点において,特徴マップ上の4近傍点から,バイリニア補間によって特徴値を得る.よって,サブピクセル精度で特徴値が補間された「ROI矩形内の特徴の値」を集約することができ,その補間・集約された特徴マップを,2ステージ目で「クラス識別/ROIオフセット回帰/マスク推定」の3タスクヘッドの予測にそれぞれ使用できる.

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

また,Mask R-CNN の論文 [He et al., 2017] では,最後の節で,Mask R-CNNの拡張として「人物クラスに対しては,関節キーポイントも同時に学習させて人物姿勢推定も学習させる」ことも,提案・実験している.

インスタンスマスクに加えて,$K$ 個の関節キーポイント位置をそれぞれ推定するバイナリーマスクも $K$ チャンネル追加で学習させることで,COCOデータセットの人物に対して,高精度に関節キーポイント推定 (=人物姿勢推定)もできるようになった.以降は,人物姿勢推定の観点でも,Mask R-CNNの「2ステージ・マルチタスクヘッド構造」が重要な技術となっていった.

5. その後の動向

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

PANet (Path Aggregation Network) [Liu et al., 2018]では,前年ごろに物体検出向けに新たに登場したFeature Pyramid Network(FPN)をバックボーンCNN拡張に採用した,Mask R-CNNの複数スケール特徴の発展版を提案した.FPNでは対応する4スケールのうち,出力した領域提案矩形に近いサイズの1スケールの特徴マップのみを, ROI Poolingして用いる.しかし,画素単位のマスク推定には,低レベル特徴マップや中間レベルマップも貢献するので,ROI矩形内で4レベルの特徴を全て集めたい.そこで,FPNの後段に,更にBottom-Up層を4段追加し,4レベル全体を適応的に合成して,領域特徴をプーリングする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.
  • [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.
  • [Jaderberg et al., 2015] Max Jaderberg, Karen Simonyan, Andrew Zisserman, et al. Spatial transformer networks. In NIPS, 2015.
  • [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

外部参照リンク