画像を「ピクセル単位」で塗り分けるセマンティックセグメンテーション。その代表的モデルがGoogleのDeepLabシリーズです。この記事では、核となる膨張(Atrous)畳み込みの仕組みと、v1からv3+までの進化の流れを解説します。
📖 ひと言でいうと
DeepLabとは、画像内のすべてのピクセルに「道路」「人」「空」といったクラスラベルを割り当てるセマンティックセグメンテーションのための深層学習モデルです。カーネルの間隔を広げて視野を拡大する膨張畳み込み(dilated convolution/Atrous畳み込み)を核とし、Googleの研究チームがv1からv3+まで改良を重ねてきました。
たとえるなら、塗り絵を「線からはみ出さずに」塗り分ける職人です。物体を四角い枠で囲む物体検出と違い、セグメンテーションは物体の輪郭ぴったりの塗り分けが求められます。DeepLabは「広い視野で全体の文脈を見る工夫」でこの精密作業を得意にしたモデル群です。
🖼 1枚でわかるDeepLab
📘 公式テキストの説明
DeepLabは、画像認識分野でセマンティックセグメンテーションを行うための深層学習モデルである。セマンティックセグメンテーションとは、画像内の各ピクセルに対して特定のクラスラベルを割り当てる技術であり、物体の境界を精密に識別することが求められる。DeepLabシリーズは、Googleの研究チームによって開発され、複数のバージョンを経て進化してきた。初期のDeepLab v1およびv2では、膨張畳み込み(dilated convolution)を導入し、受容野を効果的に拡大することで、広範囲のコンテキスト情報を収集する設計が採用された。これにより、物体の境界をより正確に捉えることが可能となった。さらに、DeepLab v2では、異なる膨張率を持つ複数の畳み込みを並列に適用する「膨張空間ピラミッドプーリング(ASPP)」が提案され、マルチスケールの情報を効率的に活用する手法が確立された。その後、DeepLab v3では、ASPPモジュールの改良が行われ、後処理として用いられていた条件付きランダムフィールド(CRF)を廃止し、エンドツーエンドの学習が可能となった。これにより、モデルのシンプルさと性能が向上した。さらに、DeepLab v3+では、エンコーダ・デコーダ構造を採用し、特に物体の境界付近のセグメンテーション精度が向上した。エンコーダ部分では、Xceptionモデルを活用し、深さ方向に畳み込みを分解する「深さ方向分離可能畳み込み(depthwise separable convolution)」を適用することで、計算効率と精度の両立が図られている。
情報量が多いので、「タスク=セマンティックセグメンテーション」「開発元=Google」「核技術=膨張畳み込み」の3点をまず固定し、あとはバージョンごとの追加要素(v2=ASPP、v3=CRF廃止、v3+=エンコーダ・デコーダ+Xception+深さ方向分離可能畳み込み)を積み上げて覚えるのが効率的です。
🔍 しっかり理解する
核技術 — 膨張(Atrous)畳み込みとは
セグメンテーションには構造的なジレンマがあります。CNNは通常、プーリングで特徴マップを縮小しながら広い範囲の情報(文脈)をつかみますが、縮小すればするほど位置情報が粗くなり、ピクセル単位の塗り分けが苦手になります。「広く見たい、でも細かさは失いたくない」という矛盾です。
膨張畳み込みはこの矛盾への答えです。畳み込みカーネルの要素の間に隙間(穴=フランス語でtrous)を空けて配置し、たとえば3×3のカーネルを間隔2で適用すると、パラメータ数は9個のまま5×5相当の範囲を見られます。プーリングで解像度を落とさなくても受容野(1つの出力が参照する入力範囲)を広げられるため、位置の細かさと広い文脈の両立が可能になります。
- 縮小を重ねて受容野を拡大
- 解像度が下がり位置情報が粗くなる
- ピクセル単位の予測には不利
- カーネルの間隔を空けて受容野を拡大
- 解像度を保ったまま広い文脈を収集
- パラメータ数は増やさない
ASPP — 大小さまざまな物体への対応
画像の中の物体は、手前の大きな車から遠くの小さな歩行者までスケールがばらばらです。DeepLab v2で提案されたASPP(膨張空間ピラミッドプーリング)は、膨張率の異なる複数の膨張畳み込みを並列に適用し、その結果を統合します。小さい膨張率は細部を、大きい膨張率は広い文脈を捉えるため、1つのモジュールでマルチスケールの情報を効率的に扱えます。
v1からv3+への進化
初期のDeepLabは、CNNの出力を条件付きランダムフィールド(CRF)という別の統計手法で後処理し、境界を整えていました。v3ではこの後処理を廃止し、ニューラルネットワークだけで入力から出力まで一気通貫で学習するエンドツーエンド構成となり、シンプルさと性能を両立します。v3+ではさらに、粗くなった特徴マップを段階的に復元するデコーダを追加したエンコーダ・デコーダ構造を採用し、エンコーダにはXceptionベースの深さ方向分離可能畳み込み(空間方向とチャンネル方向に畳み込みを分解して計算量を削減する手法)を使って、境界付近の精度と計算効率を高めました。
💡 具体例で考える
自動運転の周辺認識では、カメラ映像を「走行可能な路面」「歩道」「歩行者」「車両」などにピクセル単位で塗り分ける必要があります。物体検出の四角い枠では路面の形状までは分からないため、DeepLabのようなセグメンテーションモデルが使われます。遠くの小さな歩行者と目の前の大きなトラックを同時に扱うこの用途は、ASPPのマルチスケール設計がまさに活きる場面です。
また医療分野では、臓器や腫瘍の領域をMRI・CT画像から輪郭ごと切り出す用途にセグメンテーションが不可欠です。境界の精密さが診断や手術計画の質に直結するため、v3+の境界精度向上のような改良が実用上の大きな意味を持ちます。
⚠️ よくある誤解・紛らわしい用語
- 物体検出モデルではない — Fast R-CNNやYOLOは物体を矩形(バウンディングボックス)で囲む物体検出、DeepLabはピクセル単位で塗り分けるセマンティックセグメンテーションのモデルです。出力の形式がまったく違います。
- セマンティックとインスタンスの区別 — セマンティックセグメンテーションは同じクラスの物体を区別しません(人が3人いても全員「人」で一塊)。個体ごとに分けるのはインスタンスセグメンテーション(Mask R-CNNなど)です。DeepLabは前者です。
- 膨張畳み込み=プーリングの一種ではない — プーリングは解像度を下げて受容野を広げますが、膨張畳み込みは解像度を保ったまま受容野を広げる畳み込みの変種です。目的は似ていても操作は別物です。
- CRFは「最初からなかった」わけではない — v1・v2ではCRFが境界を整える後処理として使われ、v3で廃止されました。「どのバージョンで何が変わったか」のすり替えに注意しましょう。
📝 試験でのポイント
- 「セマンティックセグメンテーションを行う深層学習モデルはどれか」という形で、物体検出モデル(Fast R-CNN・YOLO・SSD)や分類モデル(AlexNet・DenseNet)と並べて出題されることが想定されます。
- 「膨張畳み込み(dilated convolution)により受容野を拡大」という記述はDeepLabを特定するキーワードです。
- バージョンと改良点の対応(v2=ASPP提案、v3=CRF廃止・エンドツーエンド化、v3+=エンコーダ・デコーダ+Xception)は入れ替え問題の材料になります。
- ASPP=「異なる膨張率の畳み込みを並列適用しマルチスケール情報を活用」という定義文の正誤判定に備えましょう。
📚 まとめ
- DeepLabは、Googleが開発したセマンティックセグメンテーション(全ピクセルへのクラス割り当て)のための深層学習モデルシリーズです。
- 核となるのは、解像度を保ったまま受容野を広げる膨張(Atrous)畳み込みで、v2のASPPにより異なるスケールの物体への対応力を確立しました。
- v3でCRF後処理を廃止してエンドツーエンド化し、v3+でエンコーダ・デコーダ構造と深さ方向分離可能畳み込みにより境界精度と計算効率を高めました。
- 物体検出(枠で囲む)やインスタンスセグメンテーション(個体を区別)との違いを整理しておきましょう。
