機械学習とかコンピュータビジョンとか

CVやMLに関する勉強のメモ書き。

TensorMask: A Foundation for Dense Object Segmentationを読んだのでメモ

はじめに

TensorMask: A Foundation for Dense Object Segmentationを読んだのでメモ.

気持ち

色々と細かく書いてあるが内容としては単純で,一言で言えばMask R-CNNのone-stage版と言ったところ.通常の矩形のみで検出するタスクではSSDやYOLOといったsingle shotの手法が多数存在するのに対し,Instance SegmentationではR-CNN構造をベースとした候補領域検出->マスク推定という2段階処理になっている.なので今回はsingle shotなInstance Segmentation手法を提案したというところ.

TensorMask

矩形での検出タスクにおけるsingle shotタスクは基本的にFCN構造で出力のマップのチャネル次元がBBの4次元+クラスカテゴリ次元として定義されていた.それに対し,今回は出力の次元を推定するマスクの領域次元+クラスカテゴリ次元(+BBの4次元)として定義.

論文中での数式の表現を用いれば,出力の特徴マップの解像度をH\times W,特徴マップの各ピクセルが持つマスクの解像度をV\times Uとして表現されている.特徴マップは画像と同様左上を原点とした座標系を考えるため,(y,x)\in[0,H)\times[0,W)の範囲で定義され,マスクはこの論文では中心を原点としているため,(u,v)\in[-\frac{V}{2},\frac{V}{2})\times[-\frac{U}{2},\frac{U}{2})の範囲で定義.

モデルの構造としては通常の物体検出のネットワークと同じものを想定しているため,入力画像より出力の特徴マップの解像度の方が小さい.論文では入出力の解像度の違いを\sigmaを使って表現していて,\sigma=1の時は入力と等しいスケールを表し,\sigma=2の場合は入力に対して1/2スケールであることを意味する.基本的に特徴マップとマスクの解像度の解像度の値\sigma_{HW}, \sigma_{VU}は異なってよい.論文3章では入出力,マスクと特徴マップの解像度の違いのつじつま合わせ方法や,マスクと特徴マップの座標の取り方のつじつま合わせ方法について細かく説明されているが,ここで書くと煩雑になりそうなので割愛.

SSD等と同様,TensorMaskでも検出対象物体のサイズに合わせて,検出に用いる特徴マップを変えることを想定.基本的に,解像度が低い(\sigma_{HW}が大きい)特徴マップでは大きな物体を検出することを想定しているため,推定するマスクのサイズもそれに合わせて大きくするというのが自然な考え.そのため,基本的に出力の次元は(2^kV,2^kU,\frac{H}{2^k},\frac{W}{2^k})のように変化させていく.これの意味するところは,出力の解像度は1/2ずつ低下していくが,推定されるマスクの解像度は一定ということ.

実験

やはりMask R-CNNと比べるとAPは若干の低下.また,速度面に関しても矩形での検出とは違いTensorMaskの方が遅い.論文曰くV100を使ってMask R-CNNは1枚あたり0.09sに対し,TensorMaskは0.38s.

まとめ

論文のConclusionにも書いてあったが,この研究はsingle shotで行うInstance Segmentationの一例を示したもので,今後の研究に期待といったところ.やはりsingle shotでやろうとすると背景領域も含めdenseにマスクを出すためどうしても計算コストがかかってしまうのが難点.