DenseNetとは?仕組み・メリット・ResNetとの違いをわかりやすく解説

DenseNetとは?仕組み・メリット・ResNetとの違いをわかりやすく解説

AIの初心者

DenseNetはResNetを発展させたモデルだと聞きました。接続方法はどう違うのですか?

AI専門家

ResNetは離れた層の特徴を足し合わせますが、DenseNetは前にある全層の特徴マップを連結し、後の層へ渡します。

AIの初心者

最初の層で見つけた特徴も、ずっと後の層が直接使えるということですか?

AI専門家

その通りです。この密な接続によって特徴を再利用しやすくなり、深いネットワークでも学習信号を届けやすくなります。

DenseNetとは。

DenseNet(Densely Connected Convolutional Network)は、各層がそれ以前の全層から特徴マップを受け取る畳み込みニューラルネットワークです。画像認識に用いられ、特徴量を効率よく再利用できる密結合構造に大きな特徴があります。

DenseNetとは

DenseNetで前の各層が後続層へ密に接続されるイメージ

DenseNetは、2017年に発表された代表的なCNN(畳み込みニューラルネットワーク)です。名前にある「Dense」は密な接続を意味し、ある層の出力を、それより後にあるすべての層へ直接渡す構造を採用しています。

一般的なCNNは、層を順番に通過しながら輪郭、模様、形といった特徴を段階的に抽出します。ネットワークを深くすると複雑な特徴を学べる一方、初期層の情報や学習に必要な勾配が遠い層まで届きにくくなることがあります。DenseNetは多数の短い伝達経路を設け、前の層で得た特徴を後の層が直接参照できるようにしました。

DenseNet-121、DenseNet-169、DenseNet-201などの名称に含まれる数字は、モデルを構成する層数のおおよその違いを表します。層数が多いほど常に優れるわけではなく、データ量、入力解像度、推論速度、利用できるGPUメモリを考えて選ぶ必要があります。

DenseNetの仕組み

複数層の特徴マップをチャネル方向に連結するDense Blockの概念図

DenseNetの中心は、複数の層を密に接続したDense Blockです。ブロック内の第\(l\)層は、それ以前にある特徴マップ\(x_0, x_1, \ldots, x_{l-1}\)をまとめて受け取ります。

\(x_l = H_l([x_0, x_1, \ldots, x_{l-1}])\)

角括弧は足し算ではなく、特徴マップをチャネル方向へ連結する操作を表します。\(H_l\)は、Batch Normalization、ReLU、畳み込みなどを組み合わせた変換です。実装によっては、1×1畳み込みでチャネル数を絞ってから3×3畳み込みを行うボトルネック構造も使われます。

4層を例にすると、第1層の出力は第2・第3・第4層へ、第2層の出力は第3・第4層へ、第3層の出力は第4層へ届きます。「すべての層が双方向につながる」のではなく、前の層から後の層へ一方向に接続する点が重要です。

各層が新しく生成する特徴マップの数をgrowth rate(成長率)\(k\)と呼びます。Dense Blockへ入る特徴マップが\(k_0\)枚なら、\(l\)層を通過した時点のチャネル数は概ね\(k_0 + kl\)となります。各層の出力を小さく抑えながら、過去の特徴を再利用する設計です。

Dense Blockの間にはTransition Layerが置かれます。一般に1×1畳み込みとプーリングを使ってチャネル数や空間サイズを減らし、特徴マップが増え続けるのを抑えます。出力チャネルをどの程度減らすかをcompression(圧縮率)で調整する構成はDenseNet-C、ボトルネックも使う構成はDenseNet-BCと呼ばれます。

DenseNetが高精度を狙える理由

DenseNetで特徴量と勾配が複数経路を通って伝わるイメージ

第一の理由は、特徴量を再利用しやすいことです。初期層が捉えたエッジや色の変化を後続層が直接利用できるため、似た特徴を各層で何度も作り直す必要が減ります。それぞれの層は、過去の特徴を土台にして新しい特徴を追加することへ集中できます。

第二の理由は、勾配を初期層へ届ける経路が多いことです。深いネットワークでは誤差逆伝播の途中で勾配が極端に小さくなる「勾配消失」が学習を難しくします。DenseNetでは後段から前段への短い経路が多数あるため、初期層にも学習信号が伝わりやすくなります。中間層が最終的な損失と近い経路で結ばれるため、deep supervisionに近い効果が得られるとも説明されます。

第三の理由はパラメータ効率です。growth rateを小さく設定し、既存の特徴を再利用することで、幅の広いネットワークより少ないパラメータで高い表現力を得られる場合があります。ただし、パラメータ数が少ないことと、計算時間や実行時メモリが必ず少ないことは同じではありません。連結した中間特徴を保持するため、実装や入力サイズによってはメモリ負荷が大きくなります。

ResNetとDenseNetの違い

ResNetの加算とDenseNetの連結を比較したイメージ

ResNetとDenseNetはいずれも、スキップする経路を設けて深いCNNを学習しやすくします。決定的な違いは、前の特徴を後の特徴へどのように統合するかです。

比較項目 ResNet DenseNet
統合方法 要素ごとに加算 チャネル方向に連結
主な接続 残差ブロックをまたぐ接続 Dense Block内で前の全層から接続
特徴マップ 同じ形状を保ちやすい 層を進むとチャネル数が増える
強み 単純な加算で実装・最適化しやすい 特徴の再利用と短い伝達経路が多い
注意点 非常に深い構成では計算量が増える 中間特徴の保持でメモリを使いやすい

たとえば同じ高さ・幅を持つ64チャネルの特徴マップが二つある場合、ResNetの加算後は通常64チャネルのままです。一方、DenseNetで連結すると128チャネルになります。この違いから、ResNetは「新旧の特徴を重ね合わせる」、DenseNetは「過去の特徴を残したまま束ねる」と考えると理解しやすいでしょう。

精度はデータセットや学習条件に左右されるため、DenseNetがResNetより常に高精度とは限りません。既存実装の充実度や推論速度を重視するならResNet、比較的コンパクトなパラメータで特徴を積極的に再利用したいならDenseNet、という観点が選択の出発点になります。

DenseNet-121の代表的な構成

よく使われるDenseNet-121は、最初の畳み込みとプーリングで画像の空間サイズを縮小した後、4つのDense Blockを通します。各ブロックの間にはTransition Layerが入り、最後にグローバル平均プーリングと全結合層で分類結果を出力します。

段階 役割 初心者が見るポイント
Stem 初期の畳み込みとプーリング 画像を扱いやすい特徴マップへ変換
Dense Block 特徴の生成と再利用 前の全層の出力を連結して受け取る
Transition Layer チャネル数と空間サイズを調整 計算量・メモリ増加を抑える
分類ヘッド 特徴をクラス確率へ変換 用途に応じて出力クラス数を変更

転移学習では、学習済みDenseNet-121の分類ヘッドを目的のクラス数に合わせて交換し、まず新しいヘッドを学習します。その後、必要に応じて一部または全体を小さな学習率で微調整します。データが少ない課題では、最初から全パラメータを学習するより安定しやすい方法です。

DenseNetの主な活用例

画像分類・物体検出・領域分割・医療画像解析におけるDenseNetの活用例

DenseNetは画像分類のバックボーンとして利用されるほか、別の検出器やデコーダーと組み合わせることで、物体検出やセマンティックセグメンテーションにも応用できます。細かな特徴を後段まで残しやすいため、局所的な違いを捉えたい画像課題と相性がよい場合があります。

医療画像研究でも、X線、CT、MRI、病理画像などの分類や所見候補の抽出にCNNのバックボーンとして使われます。ただし、モデルの出力だけで診断できるわけではありません。施設や装置が変わったときの性能、見逃しと過検出、データの偏り、説明可能性を検証し、専門家の判断を支援する仕組みとして評価する必要があります。

自動運転や製造検査などでも画像特徴抽出器として利用できますが、実システムでは精度だけでなく遅延、消費電力、耐障害性、保守性も重要です。DenseNetを採用するかは、軽量モデルやResNet系モデルを含む複数候補を同じ条件で計測して決めます。

DenseNetを使うときの注意点

最大の注意点は、中間特徴マップの増加です。密な連結は情報を再利用しやすい反面、各層の出力を後続層で使うために保持します。高解像度画像、大きなバッチサイズ、長いDense Blockを組み合わせるとGPUメモリが不足しやすくなります。

  • growth rateを確認する:大きくすると各層の表現力は増えますが、チャネル数と計算負荷も増えます。
  • 入力前処理を合わせる:学習済みモデルを使う場合は、画像サイズ、画素値の範囲、正規化方法を提供元の設定に合わせます。
  • 転移学習の範囲を調整する:データが少ないときに全層を大きな学習率で更新すると、学習済み特徴を壊す可能性があります。
  • 速度を実機で測る:パラメータ数だけではレイテンシやメモリ消費を判断できません。利用するGPU、CPU、推論エンジンで測定します。
  • 比較条件をそろえる:ResNetなどと比べる際は、入力解像度、データ拡張、学習回数、評価指標をそろえます。

また、元記事で触れられていた自然言語処理への応用は、DenseNetの中心的な用途とは言いにくい点に注意が必要です。密結合という発想は他分野にも応用できますが、一般に「DenseNet」と呼ぶ場合は画像を扱うCNNアーキテクチャを指します。

まとめ

DenseNetは、Dense Block内の各層が前にある全層の特徴マップを受け取るCNNです。ResNetが特徴を加算するのに対し、DenseNetはチャネル方向へ連結します。この違いにより、特徴の再利用、勾配の伝わりやすさ、パラメータ効率が期待できます。

一方で、中間特徴の保持によるメモリ負荷や、実装によって計算効率が変わる点には注意が必要です。仕組みを学ぶときは「Dense Block」「growth rate」「Transition Layer」の3点を押さえ、実務ではResNetや軽量CNNと同じ条件で速度と精度を比較しましょう。

更新履歴

日付 内容
2025年1月31日 初回公開
2026年7月21日 連結構造とgrowth rateを補い、ResNetとの計算上の違いを明確化