semantic segmentation
TRANSCRIPT
Semantic Segmentationについて
ビジョン&ITラボ 皆川 卓也
自己紹介
2
テクニカル・ソリューション・アーキテクト
皆川 卓也(みながわ たくや)フリーエンジニア(ビジョン&ITラボ)「コンピュータビジョン勉強会@関東」主催博士(工学)
略歴:1999-2003年日本HP(後にアジレント・テクノロジーへ分社)にて、ITエンジニアとしてシステム構築、プリセールス、プロジェクトマネジメント、サポート等の業務に従事
2004-2009年コンピュータビジョンを用いたシステム/アプリ/サービス開発等に従事
2007-2010年慶應義塾大学大学院後期博士課程にて、コンピュータビジョンを専攻単位取得退学後、博士号取得(2014年)
2009年-現在フリーランスとして、コンピュータビジョンのコンサル/研究/開発等に従事
http://visitlab.jp
本資料について
本資料は主に以下の2つのサーベイ論文を元に内容をまとめました。
Matin Thoma, “A Suvey of Semantic Segmentation”, arXiv:1602.06541v2
Hongyuan Zhu, Fanman Meng, Jianfei Cai, Shijian Lu, “Beyond pixels: A comprehensive survey from bottom-up to semantic image segmentation and cosegmentation”
上記サーベイで紹介されている論文に対し、畳み込みニューラルネットワークを用いた手法を追記しました。
本資料作成にあたり慶應義塾大学小篠裕子先生にご助言いただきました。
Semantic Segmentationとは
各画素がどの物体に属するのかを推定する技術
タスクの分類
A.クラス数
大半が決まったクラス数によるもの。
二値(前景/背景、street/それ以外)
unsuperpisedな方法(クラス数可変)
それ以外をvoid型として分類できるもの
B. 画素のクラス数
ほとんどが1つの画素が1つのクラス
1つの画素が複数のクラスに紐づくものもある
マルチレイヤ―の領域分割
タスクの分類
C. 入力データ
色の有無
デプス情報の有無
1枚、ステレオ、Co-segmentation
2D(画像) vs 3D(ボクセル)
D:オペレーション
active (ロボット等)
passiveinteractive
automatic
データセット
Semantic Segmentation用データセット
医療系
Cityscapes 305000(fine)
20000(coarse)3(2040-2048) x (1016-1024)
LabelMe + SUNSIFT-flow datasetStanford background datasetNYU datasetPASCAL Context dataset
Cityscapes 概要
主にドイツの50の都市で取得したステレオカメラの画像シーケンスに画素単位で30クラスのラベル付けを行った
URLhttps://www.cityscapes-dataset.com/
ライセンスアカデミックまたは非商用利用のみhttps://www.cityscapes-dataset.com/license/
例:Fine Coarse
KITTI Road 概要
自動運転に関するビジョン用データセット/ベンチマークKITTIのうち道路、白線、および走行レーン領域検出用データセット
URLhttp://www.cvlibs.net/datasets/kitti/eval_road.php
ライセンスCreative Commons Attribution-NonCommercial-ShareAlike 3.0
http://creativecommons.org/licenses/by-nc-sa/3.0/
非商用利用のみ。当データセットを用いた成果は同じラインセンスで提供する必要
例:
Lane Road
MSRC v2 概要
Mircosoft Researchが提供している、鳥、車、体、顔、空、木、羊、犬、境界付近、void等、23クラスをラベル付けしたデータセット
URLhttps://www.microsoft.com/en-us/research/project/image-understanding/
ライセンスMicrosoft Research Digital Image License Agreement非商用利用のみ。
例:
Pascal VOC 概要
画像認識のコンペで使用されたデータセット。flickrの画像に対し人、車、犬、猫、椅子、など20クラスのラベル付けがされている
URLhttp://host.robots.ox.ac.uk/pascal/VOC/voc2012/
ライセンスflickr term of useに従う
https://policies.yahoo.com/us/en/yahoo/terms/utos/index.htm
元々の権利は画像をflickrへアップロードした人にある。(どの写真を誰がアップロードしたかのリストは入手可能)
例:object class
その他のデータセット LabelMe + SUN dataset
MITが公開しているLabelMeというアノテーション/ラベル付き画像データのうち、SUNが515個のオブジェクトに対して付けた45,676枚のSemantic Segmentation用サブセットデータ
21,182枚の屋内、24,494枚の屋外
画像枚数はオブジェクト毎に偏りがある
SIFT-flow datasetシーン解析用の2488枚の訓練画像、および200枚のテスト画像
33クラス
Stanford background datasetLabelMeやMSRC、PASCAL VOCからサンプリングした720枚の画像
農村、都市、港湾シーンに対して、8つのsemanticラベル(sky, tree, road, grass, water, building, mountain, foreground)と幾何学的特性ラベル(sky, vertical, horizontal)を付与
その他のデータセット
NYU dataset
屋内をRGBカメラとデプスカメラ(Kinect)で撮影したビデオ動画に対し、1449個の密なRGBとデプス間のラベルペアを作成
3都市で撮影した464個のシーンに対し、407,024枚のラベルなしフレーム
それぞれのオブジェクトにはクラス名とID(cup1, cup2, cup3, etc)
Microsoft COCO
328K画像に対し91種類の物体クラス
PASCAL Context dataset
PASCAL VOC2010データセットに対し、さらに520のクラスを追加し、全部で540クラスのSemantic Segmentation用データセットを作成
10,103枚のtraining/validation用画像
評価指標
Confusion Matrix
kクラスの識別問題で、クラス𝑖に属する画素が𝑗とラベル付けされた数𝑛𝑖𝑗を求める。
Pixel Wise Accuracy
正解画素の比率
1
𝑁σ𝑖=0𝑘 𝑛𝑖𝑖
𝑁 = σ𝑖=0𝑘 σ𝑗=0
𝑘 𝑛𝑖𝑗全画素数
Confusion matrixの例
評価指標 Mean Accuracy
例えば空や地面のように大きな領域が画像中に存在した場合、Pixel-Wise Accuracyはこれらの領域を大きく受ける。クラスごとに個別に精度を求めて平均する。
1
𝑘∙ σ𝑖=0
𝑘 𝑛𝑖𝑖
𝑡𝑖
𝑡𝑖 = σ𝑗=0𝑘 𝑛𝑖𝑗
クラスiの正解画素数
Mean Intersection over Unionクラスiに属する画素およびクラスiと判定された画素の総和(Confusion Matrixの𝑛𝑖𝑖が属する行と列の和)と、クラスiに属して正しくiと判定された画素の和の比
1
𝑘∙ σ𝑖=0
𝑘 𝑛𝑖𝑖
σ𝑗=0𝑘 𝑛𝑖𝑗+𝑛𝑗𝑖 −𝑛𝑖𝑖
評価指標
Frequency Weighted Intersection over Union
Mean Intersection over Unionに対しクラスごとの正解画素数で重みをつけたもの
1
𝑁∙ σ𝑖=0
𝑘 𝑡𝑖 ∙𝑛𝑖𝑖
σ𝑗=0𝑘 𝑛𝑖𝑗+𝑛𝑗𝑖 −𝑛𝑖𝑖
F-measure
KITTIのような二値分類問題の場合の指標。
RecallとPrecisionの調和平均で、どちらの重みを置くかを𝛽で決定する(ほとんどの場合𝛽 = 1)
𝐹𝛽 = (1 + 𝛽)2𝑡𝑝
1+𝛽2 ∙𝑡𝑝+𝛽2∙𝑓𝑛+𝑓𝑝
tp: true positive, fn: false negative, fp: false positive
Segmentationの流れ
Sliding Windowを用いた識別
Sliding Windowを用いた識別 スライディングウィンドウで画像をスキャン
ウィンドウ内の画像から特徴量を抽出
特徴量を入力として、機械学習によりウィンドウ中心画素のラベルを学習/分類
×
特徴量• Color• HOG
• SIFT• BoVW• Neural Network
• etc
機械学習
• SVM• Random Forest
• Neural Network
確率場によるPost-Processing
確率場によるPost-Processing 画像の各画素をノードとし、隣接画素間にリンクを張ったグラフとみなす。
真の画素のラベルを潜在変数y
画像から取得した特徴量を観測変数x
以下の2つの条件を元に潜在変数yを推定各画素のラベルは観測変数x「だけ」を基にした推定と一致する確率が高い隣り合う画素は同じような潜在変数を持つ確率が高い
潜在変数
観測変数
Markov Random Fields (MRF)
xとyの組み合わせ毎の確率分布を求める
𝑝 𝐱, 𝐲 ∝ exp −E 𝐱, 𝐲
E 𝐱, 𝐲 =
𝑖=0
𝑛
𝜓𝑢 𝑥𝑖 , 𝑦𝑖 +
𝑦𝑖,𝑦𝑗∈𝑁
𝜓𝑖𝑗𝑑 𝑦𝑖 , 𝑦𝑗
データ項(画素ごとに独立して識別)
平滑化項(隣り合うラベルが同じ)
Conditional Random Fields (CRF)
直接、観測xが与えられたときのyの条件付き確率を求める
𝑝 𝐲|𝐱 ∝ exp −E 𝐲; 𝐱
E 𝐲; 𝐱 =
𝑖=0
𝑛
𝜓𝑢 𝑦𝑖; 𝐱 +
𝑦𝑖,𝑦𝑗∈𝑁
𝜓𝑖𝑗𝑑 𝑦𝑖 , 𝑦𝑗; 𝐱
データ項(画素ごとに独立して識別)
平滑化項(隣り合うラベルが同じ)
全画素の特徴量を基に推定
CRFを用いた例CRFは認識対象クラスに関する知識をモデルの中に入れ込むことが可能なため、 Semantic SegmentationではCRFを用いた手法が性能的に良い。一方、SemanticでないSegmentationではMRFが用いられることが多い。 X.He, R. S. Zemel, M. A. Carreira-Perpinan, “Multiscale
Conditional Random Fields for Image Labeling”, CVPR2004 J. Shotton, J. Winn, C. Rother, A. Criminisi, “TextonBoost for
Image Understanding: Multi-Class Object Recognition and Segmentation by Jointly Modeling Texture, Layout, and Context”, IJCV2009
P. Krahenbuhl, V. Koltun, “Efficient Inference in Fully Connected CRFs with Gaussian Edge Potentials”, NIPS2011
P. Arbelaez, B. Hariharan, C. Gu, S. Gupta, L. D. Bourdev, J. Malik, “Semantic Segmentation using Regions and Parts”, CVPR2012 (非CRF)
CRF for Image Labeling (He, et al., 2004)
CRFをSemantic Segmentationへ適用した最初の論文
ローカル特徴、全体特徴、ラベル間の位置関係を考慮したモデルを構築して最適化
TextonBoost (Shotton, et al., 2009)
ソースコードhttp://jamie.shotton.org/work/code.html (C#)
各画素の周囲のテクスチャ(Texton)を元に画素のラベルを学習(Joint Boost)することで物体のコンテクストを学習
CRFを用いてテクスチャ、色、位置、エッジを考慮した学習
Fully Connected CRFs (Krahenbuhl and
Koltun, 2011)
隣接画素だけでなく、全画素同士のペアを考慮したFully Connected CRFsに対し効率的に学習させる方法を提案
ソースコードhttp://www.philkr.net/ (C++)
Semantic Segmentation using Regions and
Parts (Arbelaez, et al., 2012)
一度ざっくりとした領域分割をして、各領域において多クラスに対するスコアを算出し、それらを特徴として用いて,ラベリングをしていく。
CRFを用いず、各領域のスコアを統合して画素ごとのスコアを算出する。
SVM
Part CompatibilityGlobal AppearanceSemantic ContoursGeometrical propertiesMulti Class
ニューラルネットワークによる手法
畳み込みニューラルネットワーク
畳み込み層とプーリング層が交互に現れる
畳み込み層: 各位置で学習した特徴との類似度を計算
プーリング層: 位置ずれなどのわずかな違いを無視
・・・
・・・・・
入力画像 出力
畳み込み層 プーリング層 畳み込み層 プーリング層 全結合層
畳み込みニューラルネットワーク
畳み込み層
各特徴毎の各場所での類似度を出力する
層が上がるほど複雑な特徴になる
入力画像
実際はRGBの3チャネルが使われる
出力A
特徴A 特徴B
出力B
・・・
畳み込みニューラルネットワーク
プーリング層
近傍の情報を統合して、情報に不変性を加える
Max Pooling、Lp Pooling、Average Poolingなどがある
Max Poolingの例: 近傍領域のうち最大値を出力することで不変性を与える
畳み込み層の出力A
・・・
・・・
Max Max
畳み込み層の出力B
畳み込みニューラルネットワークの学習
誤差逆伝播法
1. ネットワークに画像を入力し出力を得る
2. 出力と教師信号を比較し、誤差が小さくなる方向へ特徴を出力層に近い方から順に更新していく
・・・
・・・・・
入力画像 出力
畳み込み層 プーリング層 畳み込み層 プーリング層 全結合層
教師
Recurrent Neural Networks (RNN)
時系列データなどの「連続したデータ」を扱うためのニューラルネットワーク 音声認識、機械翻訳、動画像認識
予測先の次元数が可変
時刻tの隠れ層の出力が時刻t+1の隠れ層の入力になる
・・・・・・
・・・
入力
出力
隠れ層
Recurrent Neural Networks (RNN)
展開すると、静的なネットワークで表せる
通常の誤差逆伝播法でパラメータを学習できる
・・・・・・
・・・
入力
出力
隠れ層
・・・・・・
・・・
・・・・・・
・・・t-1 t t+1
教師データ 教師データ 教師データ
ニューラルネットワークによる手法の例 P. H. Pinheiro, R. Collobert, “Recurrent Convolutional Neural
Networks for Scene Labeling”, ICML2014 J. Long, E. Shelhamer, T. Darrel, “Fully Convolutional Networks
for Semantic Segmentation”, CVPR2015 S. Zheng, S. Jayasumana, B. Romera-Paredes, V. Vineet, Z. Su, D.
Du, C. Huang, P. H. S. Torr, “Conditional Random Fields as Recurrent Neural Networks”, ICCV2015
H. Noh, S. Hong, B. Han, “Learning Deconvolution Network for Semantic Segmentation”, ICCV2015
G. Lin, C. Shen, A. Hengel, I. Reid, “Efficient Piecewise Training of Deep Structured Models for Semantic Segmentation”, CVPR2016
P. Isola, J. Y. Zhu, T. Zhou, A. A. Efros, “Image to Image Translation with Conditional Adversarial Networks”, arXiv:1611.67004v1, 2016
RCNN for Scene Labeling (Pinheiro and
Collobert, 2014)
ネットワークfで各画素のラ
ベルを予測し、その結果を入力に加えて繰り返しfで
予測を行うことで、段階的にラベルの予測精度を上げていく
CRFの平滑化項にあたるよ
うな、コンテクスト(ラベル間の位置関係)を評価しておらず、各画素ごとに特徴からラベルを判別しているに等しい
Fully Convolutional Networks (Long, et al.,
2015)
ピクセルごとにラベル付けされた教師信号を与える 最終の全結合層をアップサンプリングした畳み込み層に置き換え
ソースコードhttps://github.com/shelhamer/fcn.berkeleyvision.org (Caffe)
他の人が実装したChainer版やTensorFlow版もあり
CRF as RNN (Zheng, et al., 2015) Fully Connected CRFの平均場近似による学習と等価なRNNを構築
特徴抽出部分にFCN(Fully Convolutional Networks)を用いることで、end to endで誤差逆伝播法による学習が行えるネットワークを構築
平均場近似の一回のIterationを表すCNN
ネットワークの全体像
ソースコード
https://github.com/torrvision/crfasrnn (Caffe)
Deconvolution Network for Semantic
Segmentation (Noh, et al., 2015)
Deconvolution Networkを学習させることで、FCNよりも詳細にラベルごとの尤度を推定し、それを元にFully Connected CRFでPost-Processing
ソースコード
https://github.com/HyeonwooNoh/DeconvNet (Caffe + Matlab)
Deep Structured Models for Semantic
Segmentation (Lin, et al., 2016)
CRFのデータ項および平滑化項のエネルギー関数をそれぞれCNNで表現CRFへの入力はFeatMap-NetというCNNの特徴マップCRFの学習を通してエネルギー関数のCNNを学習平滑化項が、よりsemanticな性質を帯びる
pix2pix (Isola, et al., 2016) 2つの画像の対応関係を学習する汎用的なConditional Adversarial
Networks入力から出力を生成するネットワークと、その入出力ペアが本物かを判定するネットワークを互いに競わせて学習Semantic Segmentationの他にエッジ抽出やグレースケール画像の色付けなどにも応用可能
ソースコードhttps://github.com/phillipi/pix2pix (Torch)
他の人が実装したChainer版もあり
まとめ
CRFを用いた手法がほぼデファクトだったが、最近はCNNを用いた手法がデファクトになっている
CNNが良い性能を上げるのは、単純に識別性能が高いためと思われる
CNN単体の手法だと境界部分や小さい領域などに弱い
CNN+CRFの組み合わせによってさらに精度を上げるアプローチも多い
複数の特徴を簡単に入れ込みたいときはRegion and Partsを使った非CRFの手法は検討の価値がある
Generative Adversarial Network (GAN)はここ数年急激に研究が進んだ分野なので、今後も注視する必要