フィルタの要素の間にあえて「隙間」をあけて畳み込む——それだけで、計算量を増やさずに広い範囲を見渡せるようになります。今回はセマンティックセグメンテーションなどで活躍するDilated Convolution(拡張畳み込み)を、仕組みから丁寧に解説します。

📖 ひと言でいうと

Dilated Convolutionとは、畳み込みフィルタの要素間に隙間(dilation)を設けて、飛び飛びの画素に適用することで、パラメータ数を増やさずに受容野(ネットワークが一度に見渡せる入力の範囲)を広げる手法です。Atrous Convolutionという別名でも呼ばれ、両者は同じ手法を指します。

身近な例えでは、5本の指を閉じて紙に手を置くと狭い範囲しか覆えませんが、指を開けば同じ5本のままずっと広い範囲に触れられます。指の本数(パラメータ数)は増やさず、間隔を広げてカバー範囲を拡大する——これがDilated Convolutionの発想です。厳密には、フィルタの重みの個数は3×3=9個のまま、適用する画素の間隔(拡張率)を2、3と広げていくイメージです。

🖼 1枚でわかるDilated Convolution

Dilated Convolution=隙間で受容野を広げる
  • 仕組み — フィルタ要素間に隙間を設け、画素間隔を拡張して適用
  • 別名 — Atrous Convolutionと同じ手法(呼び名が違うだけ)
  • 効果 — パラメータ・計算コストを増やさず受容野を拡大
  • 強み — プーリング不要で解像度を保ったまま大域情報を取得
  • 活躍の場 — セマンティックセグメンテーション(DeepLab等)
つくもち屋「G検定対策」SUMMARY

📘 公式テキストの説明

Dilated Convolution(Atrous Convolutionとも呼ばれる)は、通常の畳み込みのフィルタ要素間に「隙間」を設けることで、画素間隔を拡張して適用する手法である。これにより、追加のパラメータや計算コストを増やすことなく受容野を拡大でき、広範囲の特徴を捉えながらも解像度を低下させずに空間的な情報を保持することが可能になる。プーリング層によるダウンサンプリングを伴わず大域的な情報を取得できるため、特にセマンティックセグメンテーションのようなピクセル単位の予測タスクで有効に機能する。

かみ砕くと、ポイントは3つです。第1に「フィルタに隙間をあける」という単純な操作であること。第2に、重みの数は変わらないので計算コストが増えないこと。第3に、プーリングのように画像を縮小しないため、細かい位置情報を保ったまま広い範囲の文脈を捉えられることです。この3点が、ピクセル1つ1つにラベルを付けるセグメンテーションと相性抜群の理由になっています。

🔍 しっかり理解する

Atrous Convolutionとの関係——同じ手法の2つの名前

最初に混乱しやすい点を整理します。Dilated ConvolutionとAtrous Convolutionは、G検定シラバスでは別キーワードとして並んでいますが、指している手法は同じものです。「Atrous」はフランス語の「à trous(穴あきの)」に由来する呼び名で、「Dilated(拡張された)」は英語圏の論文でよく使われる呼び名です。試験で「Dilated ConvolutionはAtrous Convolutionとも呼ばれる」という記述が出たら正しい、と覚えてください。隙間の広さは「dilation rate(拡張率)」というパラメータで指定し、拡張率1のときは通常の畳み込みと一致します。

なぜ受容野を広げたいのか

CNNの畳み込みフィルタは3×3など小さなサイズが主流で、1層だけでは画像のごく狭い範囲しか見えません。画像全体の文脈(この領域は道路なのか空なのか、など)を理解するには受容野を広げる必要があります。従来の方法は2つありました。

💡 ポイント
  • フィルタを大きくする — 5×5、7×7と大きくすればよいが、パラメータ数と計算量が急増する
  • プーリングで縮小する — 特徴マップを半分に縮めれば相対的に広く見えるが、解像度が落ちて細部の位置情報が失われる

Dilated Convolutionは、この2つの欠点を同時に回避します。3×3フィルタに拡張率2を設定すると、重み9個のままで5×5相当の範囲をカバーでき、しかも特徴マップのサイズは縮みません。

🅰 通常の畳み込み+プーリング
  • 受容野拡大にはプーリングで縮小が必要
  • ダウンサンプリングで解像度が低下
  • 細部の位置情報が失われやすい
  • 画像分類には十分
🅱 Dilated Convolution
  • フィルタの隙間だけで受容野を拡大
  • 解像度を保ったまま広範囲を見渡せる
  • パラメータ・計算コストは増えない
  • ピクセル単位の予測タスクに有効

セマンティックセグメンテーションでの威力

セマンティックセグメンテーションは、画像の全ピクセルに「人」「車」「道路」などのラベルを割り当てるタスクです。プーリングで解像度を落とすと、物体の輪郭がぼやけてピクセル単位の精度が出ません。かといって受容野が狭いと、目の前の緑色が「芝生」なのか「木の葉」なのか、周囲の文脈から判断できません。Dilated Convolutionなら解像度と広い文脈を両立できるため、このタスクの定番技術になりました。代表例がDeepLabシリーズで、異なる拡張率のDilated Convolutionを並列に並べて多スケールの特徴を同時に捉えるASPP(Atrous Spatial Pyramid Pooling)という構造も生まれています。

💡 具体例で考える

自動運転車のカメラ映像処理を考えてみましょう。走行可能な路面領域をピクセル単位で塗り分けるには、「このピクセルはアスファルトの質感か」という局所情報と、「ここは車線の内側で、周囲に歩道がある」という大域的な文脈の両方が必要です。Dilated Convolutionを使ったセグメンテーションモデルは、解像度を犠牲にせずこの2つを両立できるため、車載AIの認識部分で広く使われています。

また、医療画像解析でも有効です。CT画像から腫瘍領域を抽出するタスクでは、境界の1ピクセルのずれが診断支援の品質に直結します。プーリングで縮小しないDilated Convolutionベースのモデルは、こうした精密なピクセル単位予測が求められる場面に適しています。

⚠️ よくある誤解・紛らわしい用語

💡 ポイント
  • 「Atrous Convolutionとは別の手法」は誤り — 同一の手法の別名です。シラバス上はキーワードが分かれていますが、内容は共通と理解してください。
  • ストライドとの混同 — ストライドは「フィルタ自体の移動間隔」を広げる設定で、出力サイズが小さくなります。Dilated Convolutionは「フィルタ内部の要素間隔」を広げるもので、出力の解像度は保たれます。「何の間隔を広げるか」が違います。
  • Depthwise Separable Convolutionとの混同 — あちらは計算量削減が目的、こちらは受容野拡大が目的です。目的を入れ替えた誤答選択肢が定番です。
  • 「隙間をあけるから情報が失われる」わけではない — 1つの層では飛び飛びの画素しか見ませんが、層を重ねたり複数の拡張率を併用したりすることで、広い範囲を効率よくカバーする設計になっています。

📝 試験でのポイント

💡 ポイント
  • 「フィルタ要素間に隙間を設けて画素間隔を拡張する」「Atrous Convolutionとも呼ばれる」という定義の正誤判定が最頻出パターンです。
  • 「パラメータや計算コストを増やさずに受容野を拡大できる」という利点は、そのまま選択肢の文言になりやすい要注意ポイントです。
  • 「プーリングによるダウンサンプリングなしで大域情報を取得」→「セマンティックセグメンテーションで有効」という因果の流れで覚えると、応用シーン問題に対応できます。
  • ストライド・パディング・Depthwise Separable Convolutionと並べて「どれが受容野拡大の手法か」を選ばせる対比問題を想定しておきましょう。

📚 まとめ

Dilated Convolution(Atrous Convolutionとも呼ばれる)は、フィルタの要素間に隙間を設けて画素間隔を拡張して適用する畳み込みです。重みの数はそのままに受容野だけを広げられるため、追加コストなしで広範囲の特徴を捉えられます。プーリングと違って解像度を落とさないので、ピクセル単位の予測が必要なセマンティックセグメンテーションで特に有効です。「隙間・受容野拡大・解像度維持・セグメンテーション」の4点セットで押さえておきましょう。