1行定義
DenseNetとは、ブロック内の各層に、それより前のすべての層の出力をチャネル方向に連結して入力する、密な結合をもつCNNのことです。
くわしく
DenseNet(Dense Convolutional Network)は、Gao Huangらが2017年の国際会議CVPRで発表したCNNです。論文の初版は2016年に公開されました。Denseは「密な」という意味で、層どうしを密につなぐ構造を表しています。
前のすべての層とつなぐ
通常のCNNでは、各層は直前の層の出力だけを受け取ります。DenseNetでは、Dense Blockと呼ぶまとまりの中で、各層がそれより前のすべての層の出力を受け取ります。受け取った出力は足し合わせず、チャネル方向に並べてつなぎます。これを連結といいます。会議で、それまでに発言した全員のメモを、書き直さずに束ねて次の人へ渡すイメージです。
層がL個あるとき、通常のCNNでは層どうしの直接のつながりはL本ですが、DenseNetではL(L+1)/2本になります。
ResNetとの違い
ResNetもスキップ結合で離れた層をつなぎますが、入力を出力に足し合わせます。足すと、元の情報と新しい情報が混ざり合います。DenseNetは連結するので、前の層で作った特徴を、後の層がそのままの形で使えます。これを特徴の再利用といいます。
少ないパラメータで済む理由
前の特徴を使い回せるので、各層は新しい特徴を少しだけ足せば十分です。各層が新たに出力するチャネル数を成長率(growth rate)と呼び、12や32のような小さな値が使われます。その結果、ResNetと同程度の精度を、より少ないパラメータで達成しました。誤差の勾配も入力に近い層へ直接届くため、勾配消失が起きにくくなります。
連結するには、特徴マップの縦横のサイズがそろっている必要があります。そのため、縦横を縮める処理は、ブロックの間に置いた遷移層で行います。
覚え方
「ResNetは足す、DenseNetは束ねてつなぐ」と覚えます。
G検定での出題
出題のされ方
前の層の出力をチャネル方向に連結する仕組みと、加算でつなぐResNetとの違いが中心に問われます。特徴を再利用することで、少ないパラメータで高い精度を得られる点も論点です。
混同しやすい用語
| 用語 | 意味 |
|---|---|
| DenseNetこのページの用語 | ブロック内の各層に、それより前のすべての層の出力をチャネル方向に連結して入力する、密な結合をもつCNN |
| ResNet | 数層ごとに入力を出力へ直接足し合わせるスキップ結合を使い、100層を超える深さでも学習できるようにしたCNN |
◯×チェック
次の文が正しいか、誤りかを選んでください。
-
DenseNetの成長率(growth rate)は、ブロック内の各層が新たに出力するチャネル数を表すハイパーパラメータである。
答えを見る
答え ◯ 正しい
成長率をkとすると、ブロック内で層を1つ進むごとに、次の層への入力のチャネル数がkずつ増えます。論文では、12のような小さな値でも高い精度が得られています。
-
DenseNetは、ResNetより多くのパラメータを使うことと引き換えに、精度を高めたモデルである。
答えを見る
答え × 誤り
前の層の特徴を再利用できるため、各層を細くできます。ImageNetでは、約2,000万個のパラメータのDenseNet-201が、4,000万個を超えるResNet-101と同程度の誤差でした。
-
DenseNetでは、ブロックとブロックの間に、1×1の畳み込みとプーリングで特徴マップを小さくする遷移層が置かれる。
答えを見る
答え ◯ 正しい
ブロック内の層どうしを連結するには、特徴マップの縦横がそろっている必要があります。縦横を縮める処理は、ブロックの間の遷移層(バッチ正規化、1×1の畳み込み、2×2の平均値プーリング)で行います。
この用語の練習問題
出典
- G検定 試験出題範囲(シラバス2024)第1.4版 (技術分野 項目26 画像認識)
- Gao Huang, Zhuang Liu, Laurens van der Maaten, Kilian Q. Weinberger, Densely Connected Convolutional Networks, CVPR 2017, arXiv:1608.06993 (1 Introduction、3 DenseNets、4.4 Classification Results on ImageNet)