セマンティック セグメンテーション。 [画像認識]画像分類、画像検出、セマンティックセグメンテーション

猫画像から猫部分のみを抽出する(matting/semantig segmentation)

セマンティック セグメンテーション

はじめに セマンティック セグメンテーションでは、イメージの各ピクセルにクラスでラベル付けします。 セマンティック セグメンテーションの適用例の 1 つに、森林被覆の時間的変化である森林伐採の追跡があります。 環境保護機関は、森林伐採を追跡し、地域の環境的生態学的健全性を評価し測定します。 深層学習ベースのセマンティック セグメンテーションにより、高解像度の航空写真から植被を正確に測定できます。 課題の 1 つに、視覚的に類似した特性のクラスを切り分けること、たとえば緑のピクセルを草、低木または樹木として区別することがあります。 分類の精度を高めるために、一部のデータ セットには各ピクセルに関する追加情報を提供するマルチスペクトル イメージが含まれています。 たとえば、ハームリン ビーチ州立公園のデータ セットでは、クラスをより明確に分離する近赤外チャネルでカラー イメージが補完されています。 この例では、深層学習ベースのセマンティック セグメンテーション手法を使用して、マルチスペクトル イメージ セットから領域の植被率を計算する方法を説明します。 データのダウンロード この例では、ネットワークに学習させるために、高解像度のマルチスペクトル データ セットを使用します [1]。 このイメージ セットはニューヨーク州のハームリン ビーチ州立公園の上空でドローンを使用して撮影されました。 このデータには、18 個のオブジェクト クラス ラベルの付いた、ラベル付き学習セット、検証セットおよびテスト セットが含まれます。 データ ファイルのサイズは~ 3. 0 GB です。 補助関数 downloadHamlinBeachMSIData を使用して、データセットの MAT ファイル バージョンをダウンロードします。 この関数は、この例にサポート ファイルとして添付されています。 チャネルが 3 番目の次元になるようにデータを形状変更するには、補助関数 switchChannelsToThirdPlane を使用します。 この関数は、この例にサポート ファイルとして添付されています。 Road Markings 2. Tree 3. Building 4. Vehicle Car, Truck, or Bus 5. Person 6. Lifeguard Chair 7. Picnic Table 8. Black Wood Panel 9. White Wood Panel 10. Orange Landing Pad 11. Water Buoy 12. Rocks 13. Other Vegetation 14. Grass 15. Sand 16. Water Lake 17. Water Pond 18. "LifeguardChair", "PicnicTable", "BlackWoodPanel",... "WhiteWoodPanel", "OrangeLandingPad", "Buoy", "Rocks",... カラー バーをイメージに追加します。 png' ; 学習用ランダム パッチ抽出データストアの作成 ランダム パッチ抽出データストアを使用して、ネットワークに学習データを供給します。 このデータストアは、グラウンド トゥルース イメージとピクセル ラベル データを含むイメージ データストアとピクセル ラベル データストアから、対応する複数のランダム パッチを抽出します。 パッチは、大きなイメージに対するメモリ不足を防ぎ、利用可能な学習データの量を効果的に増やすための一般的な手法です。 mat' から に格納することから始めます。 MAT ファイル形式は非標準イメージ形式であるため、イメージ データを読み取るために MAT ファイル リーダーを使用しなければなりません。 学習データから最初の 6 つのチャネルを抽出し、マスクを含む最後のチャネルを除外する補助 MAT ファイル リーダー matReader を使用できます。 この関数は、この例にサポート ファイルとして添付されています。 U-Net では、最初の一連の畳み込み層に最大プーリング層が点在し、入力イメージの解像度を逐次下げていきます。 これらの層に、一連の畳み込み層が続き、その中にアップサンプリング演算処理が点在し、入力イメージの解像度を逐次上げていきます [2]。 U-Net の名前は、このネットワークが文字「U」のように対称の形状で描けることに由来しています。 この例では、畳み込みに対する入力と出力が同じサイズになるように、U-Net を変更して、畳み込みでゼロパディングを使用します。 補助関数 createUnet を使用して、数個のハイパーパラメーターが事前に選択された U-Net を作成します。 この関数は、この例にサポート ファイルとして添付されています。 関数 を使用して SDGM 用ハイパーパラメーター設定を指定します。 深いネットワークの学習には時間がかかります。 高い学習率を指定して学習を加速します。 ただし、これによりネットワークの勾配が発散つまり制御できないほど増大し、ネットワークを正常に学習させることができない場合があります。 勾配を意味のある範囲に維持するには、 'GradientThreshold' を 0. 05 として指定することで勾配のクリップを有効にし、 'GradientThresholdMethod' を指定して勾配の L2 ノルムを使用します。 'InitialLearnRate',initialLearningRate,... 'Momentum',0. 'L2Regularization',l2reg,... 'MaxEpochs',maxEpochs,... 'MiniBatchSize',minibatchSize,... 'LearnRateSchedule', 'piecewise',... 'Shuffle', 'every-epoch',... 'GradientThresholdMethod', 'l2norm',... 'GradientThreshold',0. 05,... 'Plots', 'training-progress',... 'VerboseFrequency',20 ; ネットワークの学習 学習オプションとランダム パッチ抽出データストアを構成した後、関数 を使用して U-Net ネットワークに学習させます。 ネットワークを学習させるには、以下のコードで doTraining パラメーターを true に設定します。 学習には、Compute Capability 3. 次のコードで doTraining パラメーターを false のままにしておくと、この例は事前学習済みの U-Net ネットワークを返します。 ご使用の GPU ハードウェアによっては、さらに長い時間がかかる可能性もあります。 mat'], 'net', 'options' ; else load fullfile imageDir, 'trainedUnet', 'multispectralUnet. mat' ; end ここで U-Net を使用して、マルチスペクトル イメージを意味ごとにセグメント化できます。 テスト データでの結果の予測 学習済みネットワークでフォワード パスを実行するには、補助関数 segmentImage で検証データセットを使用します。 この関数は、この例にサポート ファイルとして添付されています。 segmentImage は、関数 を使用してイメージ パッチのセグメンテーションを実行します。 Done. 植被率の計算 この例の最終目標は、マルチスペクトル イメージで植被率を計算することです。 植生としてラベル付けされたピクセルの数を求めます。 またマスク イメージの ROI のピクセル数を合計することにより、有効なピクセル数の合計を求めます。 学習データをダウンロードし、形状を変更します。 学習データをネットワークに供給する を作成します。 U-Net ネットワークの各層を定義します。 学習オプションの指定。 関数 を使用してネットワークを学習させます。 U-Net ネットワークの学習後、または事前学習済みの U-Net ネットワークの読み込み後、この例では検証データのセマンティック セグメンテーションを実行し、セグメンテーションの精度を測定します。 参照 [1] Kemker, R. , C. Salvaggio, and C. Kanan. "High-Resolution Multispectral Dataset for Semantic Segmentation. 01918. 2017. [2] Ronneberger, O. , P. Fischer, and T. Brox. "U-Net: Convolutional Networks for Biomedical Image Segmentation. 04597. 2015. 参考 関連するトピック• Deep Learning Toolbox 外部の Web サイト•

次の

猫画像から猫部分のみを抽出する(matting/semantig segmentation)

セマンティック セグメンテーション

セマンティックセグメンテーションは、画像系ディープラーニングの一種で、画素レベルでそれが何かを認識するタスクを行う手法です。 やっていることは割りと簡単で、画像分類のタスクでは、画素情報をクラスの次元に落とし込んでいましたが、セマンティックセグメンテーションでは、それを画素(ピクセル)単位で行うようにしているだけです。 画像分類を実装したことがある人であれば、仕組みはすぐ理解できると思います。 ただし、当然教師あり学習ですので、上記のように、ピクセルごとにそれが何かをラベル付け(アノテーション)されていないと学習できません。 例えば、公開されているデータセットではなく、社内データなどでこういった教師データを作成したい場合には、大変な作業になると思います。 そこで、完全自動化までは不可能でも、教師なし学習である程度アノテーションの補助はできるようにならないかを考えてみます。 例えば、RGB情報(色)でのクラスタリングや、学習済みモデルによる転移学習で、ある程度、画素レベルの特徴分けができるかをやってみます。 今回は、上記のようなドライブレコーダーの画像において、 白線を教師なしでアノテーションできるか実装してみます。 まぁ色々と調べた結果、車には色々とセンサーが組み込まれており、白線に関してもセンサーを用いる方が確実なようですが、今回もただの興味本位ですので、ひとまず画像で頑張ってみます。 plt. show こういった画像の画素情報からうまく特徴を掴んで白線をアノテーションできるか頑張ってみます。 ところで、ここのデータセットはライセンス情報が見当たらないのですが、商用利用は可能なのだろうか。 ブログでやっている分には多分大丈夫だと思うんですが…。 スーパーピクセル色平均による白線認識 まずはRGB情報でクラスタリングできるか考えてみます。 ただし、ピクセル単位だと要素が細かすぎるため、スーパーピクセルを使ってみます。 スーパーピクセルは、画像のエッジ情報を考慮して、構造的に意味のある一連の領域に大まかに分割することができます。 Pythonでのスーパーピクセル化は、scikit-imageを使って行うことができます。 import skimage import skimage. util. segmentation. imshow superpixcels axs[2]. imshow skimage. segmentation. segmentation. slic skimage. util. show from sklearn. segmentation. slic skimage. util. size axs[0]. astype np. mode, size, 'black' overlay. imshow overlay axs[2]. segmentation. slic skimage. util. astype np. mode, size, 'black' overlay. 3 plt. imshow blended plt. show plt. show アノテーションの補助ができればというレベルで良いと考えれば、そこまで変では無さそうな感じでしょうか? もちろん、完全自動化がアウトなのは、この時点で一目瞭然ですが笑 さて、これを何枚かに実施してみます。 「これは割りとマシかな?」と思えるものをピックアップしてみました。 ただし、全体的には、やはりうまくいかないものが多く、補助といえば補助になりそうですが、もう少し力を上げたいところです。 そこで今度は、ある程度画像の特徴を捉えることができる学習済みモデルによる転移学習を試してみます。 ResNet152 今回使うモデルはResNetにしました。 ResNet(Deep Residual Net)は、Microsoftが開発したモデルで、ILSVRC2015という物体認識コンペで最高性能を出したモデルになります。 論文が下記になります。 ResNetの仕組みの解説などについては、下記などが参考になると思います。 このモデルについても、Chainerで実装されていますので、今回もChainerから使ってみます。 学習済みモデルの重みについては、以下からダウンロードできます。 重みファイルをChainer指定のフォルダに配置して、モデルインスタンスを作成することができます。 model. vision. resnet. keys : print k, layers[k]. data. shape """ pool5 1, 2048 res5 1, 2048, 7, 7 res3 1, 512, 28, 28 res4 1, 1024, 14, 14 conv1 1, 64, 112, 112 res2 1, 256, 56, 56 """ from sklearn. model. vision. resnet. data. squeeze. resize size axs[j]. segmentation. slic skimage. util. size axs[0]. model. vision. resnet. data. squeeze. resize size axs[1]. astype np. mode, size, 'black' overlay. imshow overlay axs[3]. segmentation. slic skimage. util. astype np. model. vision. resnet. data. squeeze. astype np. mode, size, 'black' overlay. 3 plt. imshow blended plt. show plt. show 何枚か実施してみた結果… 自信のあるところをカッチリと取るようになってきたような気がします。 まとめ 以上、スーパーピクセルと色の特徴量や学習済みモデルの特徴量を使って、教師なしでセグメンテーションをやってみました。 といっても、うまくいっているものを表示させていましたので、実はかなり酷いものもたくさんあります。 そのあたりも含め、より精度を高められる方法があればなーと思いました。 今回の白線のような、周囲と明らかに色が異なるものに関しては、色の特徴量は有効なように思います。 としても、冒頭に述べたように、やはり教師あり学習をさせたいところですので、アノテーションの補助ぐらいに使うのが良いのかなと思いました。

次の

深層学習を使用したマルチスペクトル イメージのセマンティック セグメンテーション

セマンティック セグメンテーション

はじめに こんにちは、AIシステム部でコンピュータビジョンの研究開発をしている唐澤です。 我々のチームでは、常に最新のコンピュータビジョンに関する論文調査を行い、部内で共有・議論しています。 今回は Segmentation 編として唐澤 拓己 、葛岡 宏祐 、宮澤 一之 が調査を行いました。 過去の他タスク編については以下をご参照ください。 論文調査のスコープ 2018年11月以降にarXivに投稿されたコンピュータビジョンに関する論文を範囲としており、その中から重要と思われるものをピックアップして複数名で調査を行っております。 今回は主に Segmentation 技術に関する最新論文を取り上げます。 前提知識 Segmentation segmentation とは領域分割という意味で、画像を入力としてピクセルレベルで領域を分割しラベルを付けていくタスクです.そのラベリングの意味合いから、画像上の全ピクセルをクラスに分類する Semantic Segmentation、物体ごとの領域を分割しかつ物体の種類を認識する Instance Segmentation、最後にそれらを組み合わせた Panoptic Segmentation というタスクに大別されます。 特に、最後の Panoptic Segmentationは ECCV 2018で新しく導入されたタスクです。 Semantic Segmentation 塗り絵のように画像上全てのピクセルに対して、クラスカテゴリーをつけるタスクです。 画像を入力とし、出力は入力の画像と同じサイズで、各ピクセルに対してカテゴリーラベルがついたものとなります。 特徴として、空や道といった物体として数えられないクラスの領域分割も行える一方で、車や人のような数えられるクラスに対して、同クラス間で重なりがある場合、同クラスの領域として認識するため、物体ごとの認識・カウントができません。 評価指標としては mIoU(mean intersection over union)が使われています。 このタスクのネットワークは、Fully Convolutional Network [1] が発表されて以来、FCN 構造が基本となっています。 Instance Segmentation Object detection のような物体の認識をピクセルレベルで行うタスクです。 画像を入力とし、出力は物体の存在する領域を、ピクセルレベルで検出したものとなります。 Semantic Segmentationと異なり、重なりのある同一物体などを正しく別々に検出する一方、物体候補領域、すなわち RoI(region of interest)に対して segmentation を行うので、画像全てのピクセルに対してラベルを振ることは行いません。 評価指標としては物体検出と同様に mAP(mean average precision が使われています。 アプローチは、detection 手法を用いて instance 領域を取得後、それぞれの領域に対して mask を予測する detection ベースのアプローチ、まずそれぞれの pixel をラベリングした後ピクセル群をグルーピングする segmentation ベースのアプローチの二つに大別されます。 高精度な手法は特に前者に見られる印象で、Mask R-CNN(ICCV2017)[9] は有名なネットワークです。 他にも DeepMask(NIPS 2015) [10]、FCIS(ICCV2017)[11]、MaskLab(arXiv2017)[12] などがあります。 後者のアプローチとしては境界検出を利用した Instancecut [13] や、watershed algorithm を使用した手法 [14] が存在します。 Panoptic Segmentation Semantic Segmentation と Instance Segmentation を足し合わせたようなタスクです。 入力は画像で、出力には Semantic Segmentation のように、全てのピクセルにラベルが振られ、かつ数えられる物体に関しては、個別で認識した結果が返されます。 数えられるクラス(車や人)を Thing クラスといい、数えられないクラス(空や道)を Stuff クラスといいます。 Thing クラスに対して Instance Segmentation、Stuff クラスに対してSemantic Segmentation を行うタスクと考えればわかりやすいです。 評価指標には、後述するPQ(panoptic quality)を使っています。 こちらは比較的新しいタスクのため、提案されているネットワークの数が他の segmentation タスクと比べ少ないのですが、本記事では CVPR で発表されたものを数本紹介します。 関連データセット• Cityscapes:semantic segmentation、instance segmentation、panoptic segmentationを含む。 PASCAL VOC:semantic segmentation を含む。 segmentation だけでなく detection 等も含む。 ADE20K:semantic segmentation を含む。 COCO:instance segmentation、panoptic segmentation を含む。 segmentationだけでなく、detection等も含む。 論文紹介:Semantic Segmentation Auto-DeepLab: Hierarchical Neural Architecture Search for Semantic Image Segmentation(CVPR 2019 oral) 論文: 要約 semantic segmentation のような、解像度に対して sensitive なタスクに対して有効性を発揮しなかった NAS(neural architecture search) においてセルの探索だけでなくネットワークレベルでの探索を行う階層的なアーキテクチャ探索を提案。 提案内容• 従来の cell レベルの構造の探索に加え network レベルの構造の探索をすることを提案。 これにより階層的な探索空間を形成。 Darts [15] により提案された continuous relaxation を network レベルにも拡張した、gradient-based なアーキテクチャ探索を提案。 アーキテクチャ探索空間:cell(小さい fully convolutional module)レベル• cell は、内部の B 個の block で構成され、それぞれの出力を順に結合し cell の出力とする。 block:2ブランチ構造。 2つの入力から出力を行う。 (I1, I2, O1, O2, C)で表現。 I1, I2:入力の組み合わせ。 取りうる選択肢は一つ前のセルの出力、二つ前のセルの出力、一つ前のセル中のそれぞれのブロックの出力• O1, O2:それぞれI1, I2に対応して行われる処理。 取りうる選択肢は、• C:それぞれのブランチの出力を組み合わせ block としての出力を行う処理。 論文中ではelement-wise な足し算のみ。 図1:cell レベルの探索空間の結合関係。 H は各出力。 H の右上の添字は cell の番号、H の右下の番号は block の番号。 左上の添字 s は解像度を表し下記の network レベルの空間にて用いる。 アーキテクチャ探索空間:network レベル• 多様なアーキテクチャに共通する二つのルールを元に探索空間を構築。 各層の次の層の解像度は二倍、半分、同じ、のいずれか。 図2:network レベルの探索空間。 横軸がレイヤーのインデックス、縦軸がダウンサンプリングの倍率を表す。 最適化方法• continuous relaxation により gradient ベースで最適化可能に。 学習データを二つに分け、ネットワークの重みとアーキテクチャの重みを交互に更新。 損失関数は cross-entropy。 Continuous Relaxation• cell architecture:O H は重み付け和で近似(continuous relaxation)。 この重み alpha を gradient ベースで最適化する。 重みは非負で総和1。 softmax で実装。 network architecture:• network レベルの探索は、各レイヤが解像度により最大4つの隠れ状態を持つ。 各解像度の出力は cell レベルの出力を重み付け和で以下のように近似(continuous relaxation)。 この重み beta を gradient ベースで最適化。 重みは非負で総和1。 同様にsoftmaxで実装。 beta は、もちろんレイヤー・解像度ごとに存在するが、alpha は全てのブロックで共通。 探索後のアーキテクチャのデコーディング• cell architecture:各入力に対するオペレーションは argmax で選択。 入力の二つの選択は、各入力に対応する no connnection のオペレーションを除いた全オペレーションに対する alpha らの最大値が大きいものから二つ選択。 network architecture:beta は状態遷移確率とみなせるため、最適な状態系列(最適経路)をを求めるアルゴリズム、Viterbi アルゴリズムを用いる。 Cityscapes データセットに対してアーキテクチャサーチを行い獲得したモデルを用いて、Cityscapes、PASCAL VOC 2012、ADE20K データセットを用いて評価を行った。 アーキテクチャサーチ実装詳細• 局所最適を防ぐため、alpha, beta は 20 epoch 後から学習。 図4:Cityscapes に対する実験で実際に得られた探索結果。 左図のグレーの破線矢印は各ノード間の重みが最大となる矢印を表す。 atr: atrous convolution. sep: depthwise-separable convolution。 実装詳細• シンプルなエンコーダデコーダ構造を使用。 エンコーダ:上記のアーキテクチャサーチで獲得したモデル• "stem"部分は 3つの 3x3 convolutions (1つめと3つめはstride 2)• モデルの多様性に関する ablation study。 フィルター数を制御するハイパラFを増やすと計算コストは大きくなるが良いパフォーマンスとなる。 図5:異なった多様性をもったモデルの validation に対する結果。 フィルター数を制御するハイパラFを変化させたときの比較。 ImageNet のカラムは ImageNet で pretrain したかを表す。 Cityscapes データセットを用いての他手法との比較。 pretraining なしで、ベストなモデル(Auto-DeepLab-L)はFRRN [16]、GridNet [17] を大きく上回る。 また、PASCAL VOC 2012、ADE20K に対しても ImageNet での pretrain なしで他手法に匹敵するスコア。 図6:Cityscapes test set に対する実験結果。 ImageNet のカラムは ImageNet で pretrain したかを表す。 Coarse は coarse annotation を使用したかを表す。 Devil is in the Edges: Learning Semantic Boundaries from Noisy Annotations(CVPR 2019 oral) 論文: 、github: 要約 Semantic Segmentation に類似した課題である Semantic Edge Detection において、アノテーションのノイズにより検出エッジが厚みを持ってしまうことを指摘。 この課題に対しエッジ細線化のための新たなレイヤを導入すると共に、アノテーションを自動的に補正して高精度化する手法も提案。 提案内容 Semantic Segmentation の双対問題である Semantic Edge Detection(画像からエッジを検出すると共に、各エッジがどの物体の境界なのかをラベル付けする)において、従来手法では検出されるエッジが厚みを持ってしまうという問題がある(図1右の中央列が従来手法による結果)。 本論文では、これは学習データにおいて真値として与えられている物体境界が不正確であることが一因であると指摘(図1左)。 図1:アノテーション誤差(左)と、エッジ検出結果の従来手法との比較(右) この問題に対し、提案手法ではまず、エッジを細線化するための Boundary Thinning Layer と呼ばれる新たなレイヤを提案している(図2中央の黄色領域)。 このレイヤでは、CNN が出力したエッジマップにおいて、エッジ上の各点で法線方向にサンプリングを行い、SoftMax を適用することでエッジ以外の点で値が大きくなることを抑制している。 これにより、従来手法よりも細く正確なエッジを得ることが可能となる(図1右端列) 図2:提案手法の概要 また、本論文では学習データにおける不正確なアノテーションを補正する手法も提案している。 これを Active Alignment と呼び、具体的には動的輪郭モデルを用いて真の物体境界に近付くようにアノテーション境界を徐々に移動させていく(図2右の青色領域)。 動的輪郭モデルとしてはレベルセット法を採用しており、学習時にエッジ検出のための CNN のパラメータ更新と、レベルセット法による輪郭の高精度化の2つを交互に繰り返すことで検出モデルと学習データの両面からの改善を実現している。 実験結果 SBD(semantic boundary dataset)と Cityscapes を用いて、従来手法としてよく知られている CASENet およびその改良手法(CASENet-S、SEAL)との比較を行なっている。 実験結果を図3に示す。 Semantic Edge Detection は検出問題であるため、物体検出などと同じように precision と recall での評価が可能であり、図3における MF(maximum F-measure)とは PR カーブの各点におけるF値の最大値である。 MF、AP(average precision)のいずれにおいても、提案手法は従来手法よりも高い精度を達成している。 図4はSBDにおける検出結果を定性的に比較したものであるが、提案手法で検出されたエッジは従来手法よりも大幅に細く正確であることがわかる。 図3:実験結果(上:SBD、下:Cistyscapes) 図4:SBDにおけるエッジ検出結果(左から順に、入力画像、CASENetによる結果、提案手法による結果、真値) また、Active Alignment の効果を図5に示す。 図5上段が初期値として与えた不正確なアノテーションであり、下段が Active Alignment により補正を実施した後の結果である。 Active Alignment により物体境界が高精度化されていることがわかる。 図5:Active Alignmentの効果(上:補正前、下:補正後) 論文紹介:Instance Segmentation Mask Scoring R-CNN(CVPR 2019 oral) 論文: 要約 従来の instance segmentation 手法は、出力結果の信頼度を classification confidence として出力しているが mask の信頼度と一致していないことを指摘。 mask の confidence を出力するブランチを Mask R-CNN [9] に加え適切な mask の信頼度を使用することを提案。 提案内容• 従来の classification confidence を用いた信頼度の出力の不適切さを指摘。 object detection でも言及される問題点。 参考: 図1:mask があまり良い結果でないにもかかわらず高い classification score を出力してしまっている例。 (MS R-CNNは提案手法が出力するスコアで mask confidence も考慮された上で出力されている。 IoU(Intersection over Union)を直接学習する MaskIoU Head と呼ばれるブランチを Mask R-CNN [9] に追加した、Mask Scoring R-CNN(MS R-CNN)を提案。 MaskIoU Head により出力される IoU の予測値を MaskIoU と呼ぶ• 単に分岐するブランチではなく、RoI Aligin により抽出された特徴マップに加えて予測された mask も加えて入力する。 出力の次元数はクラス数。 各クラスで IoU を予測する。 学習:予測されたマスクを閾値0. 5で二値化したマスクと正解マスクの IoU を ground truth として L2損失で学習。 推論:MaskIoU を出力し、MaskioU と classification score を掛け合わせることによって各 instance への適切なscoreを出力する。 図2:Mask Scoring R-CNN 全体のアーキテクチャ。 実験結果• COCO 2017 に対して実験を行い、バックボーンの種類に依存せず、また FPN(feature pyramid network)や DCN(deformable convolution network)の使用の有無に依存せず安定してスコアを改善することを示した。 (図3, 図4) 図3:複数のバックボーンに対する Mask Scoring R-CNN の実験結果の比較。 APm は instance segmentation の結果。 APb は object detection の結果。 (COCO 2017 validation 結果) 図4:FPN、DCN の使用に対する Mask Scoring R-CNN の実験結果の比較。 APm は instance segmentation の結果。 APb は object detection の結果。 (COCO 2017 validation 結果)• 他手法との比較については図5のように掲載されている。 論文中で優劣についての考察は言及されていない。 図5:他手法との instance segmentation 結果の比較。 (COCO 2017 test-dev 結果) 論文紹介:Panoptic Segmentation Panoptic Segmentation(CVPR 2019) 論文: 要約 新しいタスクとして、Panoptic Segmentation を提案した論文。 新たな評価指標として、Panoptic Quality(PQ)を提案し、既存のセグメンテーションネットワークに事後処理を加え、PQ を出し、人間との精度比較やベンチマークを構築した。 提案内容 Instance Segmentation と Semantic Segmentation を足し合わせた新しいタスク、Panoptic Segmentation を提案。 Semantic Segmentation 同様、出力は、入力画像と同じサイズで、各 pixel にクラスのラベルが振られているもの。 ただし Semantic Segmentation と異なり、Thing クラスに対しては、個々の物体を正しく pixel レベルで認識する。 Instance Segmentation では、物体間での overlap は発生するが、Panoptic Segmentation では、1つの pixel が2つのクラスカテゴリーを持つことはない。 図1:異なる Segmentation の比較。 右上から Semantic Segmentation 左下に Instance Segmentation、そして右下に、それらを統合した Panoptic Segmentation。 新しい評価指標として、Panoptic Quality(PQ)が提案された。 PQとは数式では以下のように表される。 Recognition Quality(RQ)は物体検出などで使われる、F1 スコアで、SQ は Semantic Segmentation で使われる、mIoU となっており、それらを掛け合わせたものが、PQ となっている。 図2:新タスクの評価指標として提案された、PQ。 Instance Segmentation の精度を表現する RQ と Semantic Segmentation の精度を表現するSQから成る。 実験結果 既存の Instance Semgmentation と Semantic Semgmentation のネットワークを使用し、Cityscapes, ADE20k, Vistas データセットでの評価をし、ベンチマークを構築し、人間のアノテーション精度と比較を行った。 図3:Cityscapes データセットで、Semantic Segmentation に PSPNet [4]、Instance Segmentation に Mask R-CNN [9] を使い比較をした結果 図4:ADE20k データセットで、2017 Places Challenge の優勝者の手法を使い、精度の比較をした結果 図5:Vistas データセットで、LSUN 17 Segmentation Challenge の優勝者の手法を使い、精度を比較した結果 Panoptic Feature Pyramid Network(CVPR 2019 oral) 論文: 要約 既存の Panoptic Segmentation ネットワークは backbone を統一していないネットワークが多いが、Mask R-CNN [9] に少し改良を加えることによって、Semantic Segmentation に応用できるということを主張し、結果的に backboneの統一を行い、end-to-end なPanoptic Segmentation ネットワークを作った。 提案内容 Mask R-CNN [9] に Semantic Segmentation Branch と言う新しいブランチを付けることによって、Instance Segmentation だけでなく、Semantic Segmentation にも対応できるようにした。 最後にサイズが同じの特徴マップに対して、1x1 conv, blinear upsampling、最後に softmax を行い、入力画像のサイズと同じにすることによって、pixel レベルでの classification を行う。 図1:Semantic Branchの構成図。 Lossの定義は• Classification Loss: Instance Branch• Bounding Box Loss: Instance Branch• Mask Loss: Instance Branch• 前半で紹介したPanoptic Segmentationの論文と同様に、結果がOverlapした場合には、以下のポリシーを用いて処理している。 1 Instance同士でのOverlapでは、NMS同様Confidence Scoreを元に片方を抑制する 2 ThingクラスとStuffクラスでOverlapが発生した場合は、Instanceの結果を優先する 実験結果 Mask R-CNN に Semantic Branch を付けた Semantic FPN と、既存 Semantic Segmentation モデルでの精度比較と、提案手法と既存 Panoptic Segmentation モデルでの精度比較を、COCO, Cityscapes のデータセットを用いて行なった。 Semantic FPN と既存手法での精度比較を Cityscapes で行った結果、下の図の様に、既存手法と同等の精度が出ることが確認された。 既存手法の多くに dilated conv が使われている中、Semantic FPN は Semantic Segmentation 特有のオペレーションを使用していないため、比較的に少ないメモリー使用量で、backbone 選択の制約を低くした。 図2:Semantic Branch を Mask R-CNN に付け、既存の Semantic Segmentation のネットワークと mIoU を用いて性能比較をした結果。 backbone 中にある「D」は dilated conv を指す。 最終的に COCO を用いて PQ で評価した結果、既存の single network を大幅に上回る精度が出た。 特に Thing クラスでの精度向上が大きく、これはベースとなっている Mask R-CNN が Instance Segmentation のネットワークだからと著者は言っている。 図3:既存 single network と PQ を用いて性能評価をした結果。 特に Thing クラスでの性能向上が大きく、統合された結果では 8. 8pt 向上している。 最後に、定性的に評価した結果は以下の様になっている。 図4:COCO(図上)とCityscapes(図下)に対して Panoptic Segmentation を行なった結果。 UPSNet: A Unified Panoptic Segmentation Network(CVPR 2019 oral) 論文: 要約 Mask R-CNN [9] に新しい Head を追加し、Semantic Segmentation に応用し、双方の結果をマージするために新しい Parameter-free Head、Panoptic Head を提案した。 既存の single network と separated network と性能を比較したところ、同等、もしくは既存手法より高い精度を end-to-end のネットワークで出した。 提案内容 deformable conv を使った Segmentation Head を提案し、Instance Segmentation モデルの Mask R-CNN [9] を Semantic Segmentation に応用した。 Semantic Head と Instance Head の出力は parameter を必要としない、Panoptic Head によってマージされ、それらの結果が最終的な出力となる。 図1:全体の構成図。 Mask R-CNN に新たに Semantic Head を追加することによって、Semantic Segmentation を行い、それらの結果をマージする Panoptic Head を新たに提案し end-to-end なネットワークを作った。 Semantic Head の目的は、Stuff クラスを正しく認識し、かつ Thing クラスの精度向上にも貢献することである。 全ての特徴マップのサイズを揃えた後、チャンネル方向に concat、1x1 conv 最後に softmax を行い、pixel レベルの classification を行う。 図2:Semantic Head の詳細図。 これらの結果が Stuff クラスと Thing クラスの予測に使われる。 Instance Head は Mask R-CNN と同じで、それら両方の結果が Panptic Head によって統合される。 Semantic Head の出力は、Thing クラスの予測と Stuff クラスの予測に分かれ、Xthing と Xstuff として下の図では表現されている。 Xstuff はそのままPanoptic Logits にマッピングされ、Xthing は GT の bounding box 座標をもとに cropping され、Xmask として Thing クラスの予測に使われる。 Xmask と Yi は同じサイズに揃えた後、element-wise に足し、その結果が Panoptic Logits の Thing クラスの予測にマッピングされる。 図3:Panoptic Head の詳細図。 Xthing と Xstuff は Semantic Head の出力で、Yi は Instance Head の出力。 それらの結果は統合され、最終的に Panoptic Logits として出力される。 実験結果 COCO データセットを用いた、既存 Panoptic Segmentation との性能を比較。 図4:COCO2018 test-dev での性能比較の結果。 上の3つは leader board の上位3つのモデル。 Cityscapes データセットを用いた、既存 Panoptic Segmentation との性能を比較。 図5:Cityscapes データセットでの 既存 Panoptic Segmentation との性能比較。 COCO と書いてあるモデルは、COCO で pre-train 済みのモデルを使用。 おわりに 今回は Semantic Segmentation、Instance Segmentation、Panoptic Segmentation を含めた segmentation に関する最新論文をご紹介しました。 segmentation タスクへの手法が発達してきたことで、Panoptic Segmentation といったより高難易度な新しいタスクへのアプローチの提案が行われてきており、興味深いです。 DeNA CVチームでは引き続き調査を継続し、最新のコンピュータビジョン技術を価値あるサービスに繋げていきます。 参考文献 [1] J. Long, et. Fully convolutional networks for semantic segmentation. CVPR 2015 [2] O. Ronneberger, et. U-net: Convolutional networks for biomedical image segmentation. MICCAI 2015 [3] V. Badrinarayanan, et. Segnet: A deep convolutional encoder-decoder architecture for image segmentation. arXiv 2015 [4] H. Zhao, et. Pyramid scene parsing network. CVPR 2017 [5] L. Chen, et. Semantic Image Segmentation with Deep Convolutional Nets and Fully Connected CRFs. ICLR 2015. [6] L. Chen, et. Deeplab: Semantic image segmentation with deep convolutional nets, atrous convolution, and fully connected crfs. TPAMI 2017 [7] L. Chen, et. Rethinking atrous convolution for semantic image segmentation. arXiv 2017 [8] L. Chen, et. Encoder-decoder with atrous separable convolution for semantic image segmentation. ECCV 2018 [9] K. He, et. Mask rcnn. ICCV 2017 [10] P. Pinheiro, et. Learning to segment object candidates. NIPS 2015 [11] Y. Li, et. Fully convolutional instance-aware semantic segmentation. ICCV 2017 [12] L. Chen, et. Masklab: Instance segmentation by refining object detection with semantic and direction features. arXiv 2017 [13] A. Kirillov, el. Instancecut: from edges to instances with multicut. CVPR 2017 [14] M. Bai and R. Urtasun. Deep watershed transform for instance segmentation. CVPR 2017 [15] H. Liu, et. Darts: Differentiable architecture search. ICLR 2019 [16] Z. Yu, et. CASENet: Deep Category-Aware Semantic Edge Detection. CVPR 2017 [17] T. Pohlen, et. Full-resolution residual networks for semantic segmentation in street scenes. CVPR 2017 [18] D. Fourure, et. Residual conv-deconv grid network for semantic segmentation. BMVC 2017.

次の