深層学習を用いたセグメンテーションの紹介　セグメンテーションシリーズ①

こんにちは。スキルアップAI編集部です。

セグメンテーション(segmentation)は、コンピュータビジョンの主要なタスクの1つで、医療画像分析、自動運転、映像監視システムなど、幅広い分野で応用されています。本記事では、深層学習を用いたセグメンテーションについて、概括的に解説していきます。

<目次>
1.セグメンテーションとは
2.主要なアプローチ
3.セグメンテーションに関する技法
4.セグメンテーションの今後
5.もっと詳しく学びたい方へ
6.参考文献

# 1. セグメンテーションとは
セグメンテーションとは、日本語で「分割」という意味で、機械学習においては、画像をいくつかのオブジェクトに分割するタスクのことを指します。現在、セグメンテーションには、大きく分けて3つのタスクがあります。図1にそれぞれのセグメンテーションの例を示します。
<img width="600" alt="" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/55afa21f-a0b3-1e9d-6f14-bb72f249e082.png">
図1. セグメンテーションの例
(参考文献[1]より引用)

図1の(b)はセマンティックセグメンテーションと呼ばれるタスクで、画像中の全ての画素に対して、クラスラベルを予測することを目的とします。
図1の(c)はインスタンスセグメンテーションと呼ばれるタスクで、画像中の全ての物体に対して、クラスラベルを予測し、一意のIDを付与することを目的とします。セマンティックセグメンテーションとの主な違いは、重なりのある物体を別々に検出する点や、空や道路などの定まった形を持たない物体などはクラスラベルの予測を行わない点があります。また、各物体に対して一意のIDを付与するため、例えば、1つの画像に複数の車が写っている場合、それぞれの車を別々の物体と認識します。
図1の(d)はパノプティックセグメンテーションと呼ばれるタスクで、上の2つのセグメンテーションを組み合わせたタスクです。画像中の全ての画素に対して、クラスラベルを予測し、一意のIDを付与することを目的とします。

# 2. 主要なアプローチ
ここでは、深層学習を用いたセグメンテーション分野における代表的なアプローチを紹介します。

1. 全層畳み込みネットワーク(FCN)
2. エンコーダ・デコーダ構造のモデル
3. ピラミッド構造のモデル
4. R-CNNベースのモデル
5. 再帰型ニューラルネットワーク(RNN)ベースのモデル

これらのアプローチは、場合によっては組み合わせられることもあります。ここからは、この5個のアプローチそれぞれについて、簡単に解説していきます。

**2-1.全層畳み込みネットワーク(FCN)**
全層畳み込みネットワーク(Fully Convolutional Networks ; FCN)は、Longら[2]によって提案されたセマンティックセグメンテーションのための手法です。FCNでは、VGG16などの画像分類の分野で優れた成果を上げているモデルの全結合層を畳み込み層に置き換えます。図2にCNNとFCNの模式図を示します。
モデルの最後の畳み込み層で得られた特徴マップを入力画像と同じサイズまで大きく(アップサンプリング)することでピクセルごとのクラス確率を出力します。同様のアプローチをしているものにParseNet[11]があります。
<img width="600" alt="" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/01b6f0ab-6173-54a2-69dc-309258c9da77.png">
図2. CNNとFCNの模式図
(参考文献[2]より引用)

**2-2.エンコーダ・デコーダ構造のモデル**
エンコーダ・デコーダ構造のモデルは、畳み込み層によって画像から特徴を抽出するエンコーダと、抽出した特徴を受け取り確率マップを出力するデコーダで構成されます。確率マップでは、どのクラスに属しているかという確率をピクセル単位で表現します。
このモデルはセマンティックセグメンテーションに用いられます。エンコーダ・デコーダ構造の代表的なモデルであるSegNet[4]の構造を図3に示します。同様のアプローチをしているものに、U-Net[12]やHRNet[13]があります。
<img width="600" alt="" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/97cdd57a-19b1-6f7c-154e-136546cac91b.png">
図3. SegNetの構造
(参考文献[4]より引用)

**2-3.ピラミッド構造のモデル**
ピラミッド構造の代表的なモデルであるFPN[5]の模式図を図4に示します。画像データにおいて、検出対象の物体の大きさは大小様々です。そのため、画像の倍率を変えて複数回推論し、結果を統合するというアプローチは深層学習が登場する以前からありました。このアプローチはマルチスケール分析と呼ばれますが、深層学習では計算量やメモリ消費の問題があったため避けられていました。
これに対しFPNでは、特徴マップをピラミッド型に伝播させていくことで、この問題を解決しました。同様のアプローチをしているものに、PSPNet [14]があります。
<img width="600" alt="" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/9e4df852-d25a-31c0-4080-d4e908159faa.png">
図4 左:深層学習以前のマルチスケール分析、 右:FPNの模式図
(参考文献[5]より引用)

**2-4.R-CNNベースのモデル**
Region-Convolutional Neural Network(R-CNN)は元々、物体検出のために考案されたモデルで、後にインスタンスセグメンテーションに応用されました。R-CNNをインスタンスセグメンテーションに応用した代表的なモデルであるMask R-CNN[6]の模式図を図5に示します。
R-CNNでは、画像から物体が存在する領域の候補(Region-of-Interest; RoI)を抽出し、それらに対してバウンディングボックスと呼ばれる物体を囲む長方形の枠とクラスを予測します。
Mask R-CNNではそれに加えて、それぞれのバウンディングボックスについて、ピクセルごとのクラスを予測します。同様のアプローチをしているものに、PANet[15]があります。
<img width="600" alt="" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/69b7507e-f05a-3d7e-3e45-f8b46ad777cf.png">
図5. Mask R-CNNの模式図
(参考文献[6]より引用)

**2-5.再帰型ニューラルネットワーク(RNN)ベースのモデル**
再帰型ニューラルネットワーク(Recurrent Neural Network; RNN)は、連続的な情報を持つデータを扱うのが得意な手法です。RNNは、時系列データやテキストデータに対して適用されることが多いですが、画像データに適用することも可能です。
RNNを画像に適用した場合、画像の垂直方向や水平方向の連続性をモデル化できます。RNNを画像に適用した場合の特徴抽出の模式図を図6に示します。図6では垂直方向と水平方向にそれぞれ2方向ずつ、全部で4方向の連続性をモデル化しています。RNNベースの代表的なセグメンテーションのモデルとしてReSeg[17]があります。RNNベースのモデルは、セマンティックセグメンテーションに用いられます。
<img width="" alt="400" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/db546a8e-2d13-611e-17bb-ff65edd29eea.png">
図6. RNNによる特徴抽出の模式図

# 3. セグメンテーションに関する技法
ここでは、セグメンテーションに関する様々な技法を紹介します。ここで紹介する技法は、セグメンテーションの様々なモデルに適用することができます。

**3-1.条件付き確率場**
セグメンテーションのモデルが出力した確率マップに対して、条件付き確率場(Conditional Random Field; CRF)という確率モデルを適用することで、物体境界をはっきりさせることができます。
CRFを用いたときの出力例を図7に示します。図7の左から、正解(Image/G.T)、CRF適用前(DCNN output)、CRFを1回適用した結果(CRF Iteration 1)、CRFを2回適用した結果(CRF Iteration 2)、CRFを10回適用した結果(CRF Iteration 10)です。CRFを適用することによって境界がはっきりすることがわかります。この手法はセマンティックセグメンテーションで用いられます。
<img width="600" alt="" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/adc28433-006d-98a3-7262-1a3d91bb0def.png">
図7. CNNの出力と条件付き確率場の出力
(参考文献[3]より引用)

**3-2.ダイレイト畳み込み**
ダイレイト畳み込み(Dilated Convolution)は、フィルタの適用範囲を広げながら畳み込む手法です。通常の畳み込みよりも受容野が広くなります。ダイレイト畳み込みの模式図を図8に示します。
ダイレイト畳み込みによって、少ないパラメータで大域的な特徴を捉えることができるため、パラメータ数が多くなりがちなセグメンテーションのモデルでよく用いられます。ダイレイト畳み込みを用いたモデルとして、DeepLab[16]があります。
<img width="600" alt="" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/68b223ab-da0f-bf28-b58f-02c89b0bacd1.png">
図8. ダイレイト畳み込みの模式図

**3-3.注意機構**
注意機構(attention mechanism)は、データのどこに注目すべきかを学習させる仕組みであり、深層学習全般で用いられます。この注意機構がコンピュータビジョンにおいて用いられた場合は、特徴マップのどこに注目すべきかを学習させることになります。
セグメンテーションの分野では、解像度が異なる複数の入力画像から得られた特徴を混ぜ合わせることで予測精度が向上することが知られています。注意機構を用いることで混ぜ合わせる際の重みづけを自動的に決めることができます。
図9にセグメンテーションにおける注意機構適用例を示します。図の例では、拡大率0.5の画像では子供(ピンクの円)に注目し、拡大率1の画像では大人(緑の円)に注目しています。
注意機構は各種セグメンテーションで用いることができます。注意機構を用いた代表的なモデルとしてDFN[18]があります。
<img width="600" alt="" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/9f8641c1-2b68-7861-0b66-48ad056526d1.png">
図9. セグメンテーションにおける注意機構適用例
(参考文献[7]より引用)

**3-4.敵対的トレーニング**
[敵対的生成ネットワーク(Generative Adversarial Networks; GAN)](https://www.skillupai.com/blog/mldl-tips-1/)は生成モデルの1つですが、このGANの学習方法をセグメンテーションに適用した例があります。
GANとセグメンテーションの組み合わせの例を図10に示します。図10の例において、SegmentorはGANにおける生成器にあたり、Adversarial networkはGANにおける識別器にあたります。Adversarial networkは、Segmentorが出力した予測の確率マップ(Class predictions)と正解の確率マップ(Ground truth)をうまく識別できるように学習が進みます。Segmentorは、Adversarial network を騙せるような確率マップを出力できるように学習が進みます。この学習方法により、予測の確率マップ(Class predictions)の細かな間違いがSegmentorにフィードバックされるようになり、Segmentorの性能が向上します。
この手法は、各種セグメンテーションのモデルに適用できる学習方法です。
<img width="600" alt="" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/0d23d191-e572-a39f-8e0f-bf8c32518e07.png">
図10. 敵対的ネットワークとセグメンテーションの組み合わせの例
(参考文献[8]より引用)

**3-5.CNNと動的輪郭モデルの組み合わせ**
動的輪郭モデルは物体の輪郭を検出する古典的な手法ですが、最近、この動的輪郭モデルとCNNを組み合わせる研究が関心を集めています。その一例を図11に示します。図11の例では、動的輪郭モデルによって得られる輪郭の長さや領域の面積を損失関数に組み込んでいます。一般に、セグメンテーションの学習で用いられるクロスエントロピー誤差関数は、予測と正解をピクセル単位で比較しているため、大域的な特徴を比較できていません。
これに対して、動的輪郭モデルを損失関数に組み込んだ場合は、輪郭などの大域的な特徴を比較することができ、セグメンテーションの精度向上が期待できます。この手法は、各種セグメンテーションのモデルに適用できます。
<img width="600" alt="" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/5b30c3ad-8a9b-f7ad-09dc-885c0142adb0.png">
図11. CNNと動的輪郭モデルの組み合わせ
(参考文献[9]より引用)

# 4. セグメンテーションの今後
深層学習の発展によって、2次元画像のセグメンテーションの性能は飛躍的に向上しました。しかしまだまだ課題はあります。例えば、近年のセグメンテーションの研究では、主に次のようなテーマが注目されています。

・3次元の画像や点群データへの応用
・より推論速度が速く、メモリ効率がいいモデルの開発
・より少ない画像数で学習可能なモデルの開発

今後は、このようなテーマに関連する手法が多く提案されると思われます。

# 5. もっと詳しく学びたい方へ
本記事では、深層学習を用いたセグメンテーションについて、概括的に解説しました。スキルアップAIの[現場で使えるディープラーニング基礎講座](https://www.skillupai.com/deep-learning/)では、様々な深層学習の手法について、仕組みや実装方法を学ぶことができます。ぜひ受講をご検討ください。

セグメンテーションシリーズ②「U-Netとは」は[こちら](https://qiita.com/skillup_ai/items/94d5dbccee20aaf3c54f)

# 6. 参考文献
[1] [A. Kirillov, K. He, R. Girshick, C. Rother, and P. Dollar: Panoptic segmentation, In ´ Computer Vision and Pattern Recognition, (2019)](https://openaccess.thecvf.com/content_CVPR_2019/papers/Kirillov_Panoptic_Segmentation_CVPR_2019_paper.pdf)
[2] [J. Long, E. Shelhamer, and T. Darrell: Fully convolutional networks for semantic segmentation, In conference on computer vision and pattern recognition, pp. 3431– 3440, (2015).](https://arxiv.org/pdf/1605.06211.pdf)
[3] [L.C. Chen, G. Papandreou, I. Kokkinos, K. Murphy, and A. L. Yuille: Semantic image segmentation with deep convolutional nets and fully connected crfs, arXiv preprint arXiv:1412.7062, (2014).](https://arxiv.org/pdf/1412.7062.pdf)
[4] [V. Badrinarayanan, A. Kendall, and R. Cipolla: Segnet: A deep convolutional encoder-decoder architecture for image segmentation, IEEE transactions on pattern analysis and machine intelligence, vol. 39, no. 12, pp. 2481–2495, (2017).](https://arxiv.org/pdf/1511.00561.pdf)
[5] [T.Y. Lin, P. Dollar, R. Girshick, K. He, B. Hariharan, and S. Belongie: Feature pyramid networks for object detection, In Proceedings of the IEEE conference on computer vision and pattern recognition, pp. 2117–2125, (2017)](https://arxiv.org/pdf/1612.03144.pdf)
[6] [K. He, G. Gkioxari, P. Dollar, and R. Girshick: Mask r-cnn, In IEEE international conference on computer vision, pp. 2961–2969, (2017)](https://arxiv.org/pdf/1703.06870.pdf)
[7] [L.C. Chen, Y. Yang, J. Wang, W. Xu, and A. L. Yuille: Attention to scale: Scale-aware semantic image segmentation, In Proceedings of the IEEE conference on computer vision and pattern recognition, pp. 3640–3649, (2016).](https://arxiv.org/pdf/1511.03339.pdf)
[8] [P. Luc, C. Couprie, S. Chintala, and J. Verbeek: Semantic segmentation using adversarial networks, arXiv preprint arXiv:1611.08408, (2016).](https://arxiv.org/pdf/1611.08408.pdf)
[9] [X. Chen, B. M. Williams, S. R. Vallabhaneni, G. Czanner, R. Williams, and Y. Zheng: Learning active contour models for medical image segmentation, In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, pp. 11 632–11 640,(2019).](https://openaccess.thecvf.com/content_CVPR_2019/papers/Chen_Learning_Active_Contour_Models_for_Medical_Image_Segmentation_CVPR_2019_paper.pdf)
[10] [S. Minaee, Y. Boykov, F. Porikli, A. Plaza, N. Kehtarnavaz, and D. Terzopoulos: Image segmentation using deep learning: A survey, arXiv preprint arXiv:2001.05566 (2020).](https://arxiv.org/pdf/2001.05566.pdf)
[11] [W. Liu, A. Rabinovich, A. C. Berg: PARSENET: LOOKING WIDER TO SEE BETTER: arXiv preprint arXiv: 1506.04579 (2015).](https://arxiv.org/pdf/1506.04579.pdf)
[12] [O. Ronneberger, P. Fischer, and T. Brox: U-net: Convolutional networks for biomedical image segmentation: in MICCAI, (2015).](https://arxiv.org/pdf/1505.04597.pdf)
[13] [K. Sun, B. Xiao, D. Liu, and J. Wang: Deep high-resolution representation learning for human pose estimation: In Proc. IEEE Conf. Comp. Vis. Patt. Recogn., (2019).](https://arxiv.org/pdf/1902.09212.pdf)
[14] [H. Zhao, J. Shi, X. Qi, X. Wang, and J. Jia: Pyramid scene parsing network: in Proceedings of the IEEE conference on CVPR, (2017).](https://arxiv.org/pdf/1612.01105.pdf)
[15] [S. Liu, L. Qi, H. Qin, J. Shi, and J. Jia: Path aggregation network for instance segmentation: in Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, (2018).](https://arxiv.org/pdf/1803.01534.pdf)
[16] [L.-C. Chen, G. Papandreou, I. Kokkinos, K. Murphy, and A. L. Yuille: Deeplab: Semantic image segmentation with deep convolutional nets, atrous convolution, and fully connected crfs: in IEEE transactions on pattern analysis and machine intelligence, (2017).](https://arxiv.org/pdf/1606.00915.pdf)
[17] [F. Visin, M. Ciccone, A. Romero, K. Kastner, K. Cho, Y. Bengio, M. Matteucci, and A. Courville: Reseg: A recurrent neural network-based model for semantic segmentation: in Proceedings of the IEEE Conference on CVPR Workshops, (2016).](https://arxiv.org/pdf/1511.07053.pdf)
[18] [C. Yu, J. Wang, C. Peng, C. Gao, G. Yu, and N. Sang: Learning a discriminative feature network for semantic segmentation: in Proceedings of the IEEE Conference on CVPR, (2018).](https://arxiv.org/pdf/1804.09337.pdf)
# 25卒向け！AIエンジニアになるための長期インターンプログラム参加者募集中！
25卒学生向けに、AIの基礎を学びながら就活も一括サポートする無料カリキュラムを提供しています。
修了するとE資格の受験資格も獲得できるプログラムとなっています！

<img width="700" alt="長期インターン" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/bfce4c26-1ebe-c54d-bacb-e804048a7a08.png">

**特長①AIエンジニアやデータサイエンティストの基礎が身に付く**
AIジェネラリスト基礎講座や機械学習のためのPython入門講座など、市場価値向上のための基礎を習得。

**特長②AI・データ分析領域の優良求人を紹介**
非公開求人や選考直結型インターンをご紹介し、早期内定の獲得をサポート。

**特長③長期インターンプログラム専用の学生コミュニティ参加可**
学生同士で就活情報をシェアしたり、学習を進めるうえでアドバイスをしあったりできるコミュニティに参加可能。

＞＞[長期インターン詳細](https://bit.ly/3pXW5JM)

☆☆☆
スキルアップAIのメールマガジンでは会社のお知らせや講座に関するお得な情報を配信しています。
配信を希望される方は[こちら](https://share.hsforms.com/1_XlReV-4Te-zcxCl9lhffA2mtef)

また、SNSでも様々なコンテンツをお届けしています。興味を持った方は是非チェックしてください♪
Twitterは[こちら](https://twitter.com/SkillupAi)
Facebookは[こちら](https://www.facebook.com/skillupai)
LinkedInは[こちら](https://www.linkedin.com/company/skillup-ai)