CNN(畳み込みニューラルネットワーク)とは?意味・仕組みと主な論文(2026年11月時点)
CNN(畳み込みニューラルネットワーク)(しーえぬえぬ)
畳み込みニューラルネットワーク / Convolutional Neural Network / ConvNet
CNN(畳み込みニューラルネットワーク)とは、小さなフィルターを画像の上で少しずつずらして計算する畳み込み層などを重ね、画像の特徴を取り出すニューラルネットワークのこと。
要するに
- 同じフィルターを画像のどこでも使い回し、全結合よりパラメータを大きく減らす
- 2012年の AlexNet が画像の分野に広め、ResNet は ImageNet で152層まで深くした
- ViT の登場後も、ConvNeXt などの CNN が論文で Transformer と並ぶ結果を出した
最終確認

CNN の主な論文
- U-Net 論文の解説:少数の顕微鏡画像から輪郭を学ぶU-Net: Convolutional Networks for Biomedical Image Segmentation
- ResNetの原論文を読む 深くしても学べる画像認識へDeep Residual Learning for Image Recognition
- MobileNet 論文の解説:端末上の画像認識を軽くするMobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications
- CNNは形より質感を見ていた 画像認識の手掛かりを検証ImageNet-trained CNNs are biased towards texture; increasing shape bias improves accuracy and robustness
- EfficientNet 論文の解説:画像モデルの拡大方法を組み合わせるEfficientNet: Rethinking Model Scaling for Convolutional Neural Networks
- Vision Transformerの原論文を読む 画像をパッチで扱うAn Image is Worth 16x16 Words: Transformers for Image Recognition at Scale
目次8
ひとことで言うと
CNN(畳み込みニューラルネットワーク)は、画像のように縦と横に値が並んだデータを扱うためのニューラルネットワークだ。小さなフィルター(学習で決める、縦と横が数画素の重みの組)を画像の上で少しずつずらし、場所ごとに計算して特徴を取り出す。英語では Convolutional Neural Network、略して ConvNet とも呼ぶ。
身近な例でいえば、郵便番号の数字を読む仕組みがある。スタンフォード大学の講座 CS231n は、CNN を最初にうまく使った例として1990年代の Yann LeCun の仕事を挙げ、中でもよく知られた LeNet は郵便番号や数字を読むのに使われたとしている。
仕組み
CS231n は CNN を作る主な層を畳み込み層、プーリング層、全結合層の3つとしている。簡単な例では、入力、畳み込み、活性化関数、プーリング、全結合の順に並べる。
- 畳み込み層:小さなフィルターを画像の縦と横にずらしながら、フィルターと画像の一部の値を掛けて足す。結果はフィルターごとに1枚の地図(活性化マップ)になる。CS231n によると、最初の層は向きのある線や色のかたまりに反応するフィルターを学び、上の層では蜂の巣や車輪のような模様に反応するようになる。
- 活性化関数:ReLU のような活性化関数を値ごとにかける。
- プーリング層:縦と横の大きさを段階的に縮め、パラメータと計算の量を減らす。最もよく使う形は、2×2の範囲を2画素ずつずらしながら最大の値だけを残すもので、値の75%を捨てる。プーリング層は学習で決めるパラメータを持たない。
- 全結合層:最後に、前の層のすべての値をつないで、種類ごとの点数を出す。
畳み込みでパラメータが減る理由は、同じフィルターを画像のどこでも使い回すことにある。CS231n は、ある場所で役に立つ特徴は別の場所でも役に立つ、という仮定を置いている。2012年の AlexNet の最初の畳み込み層では、使い回さなければパラメータは1億570万5,600個になるが、使い回すと3万4,944個で済む。
フィルターをずらす幅(ストライド)や、画像の周りに0を足す幅(パディング)は、人が決める設定だ。CS231n は3×3のフィルターを1画素ずつずらし、周りに1画素分の0を足す設定をよく使う例に挙げている。CS231n によると、CNN はこうした層で元の画素の値を1層ずつ変換し、最後に種類ごとの点数にする。
表で見る最新の状況
上の「CNN の主な論文」は、TRAIL が解説した論文から、CNN を使うか CNN と比べた6本を、発表の古い順に並べたものだ。確認日は2026年11月6日。
2015年5月の U-Net は、画像を縮めながら文脈を読む経路と、細部の位置を戻す経路をつなぎ、画素ごとに切り分ける。顕微鏡の画像で結果を示した。2015年12月の ResNet は、層の入力との差分(残差)を学ばせる。ImageNet で最大152層のネットワークを評価し、複数のモデルを組み合わせた結果が ILSVRC 2015 の分類部門で1位になった。
2017年4月の MobileNet は、畳み込みをチャネルごとの空間の畳み込みと1×1の畳み込みに分けて計算を減らす。ImageNet での精度は、通常の畳み込みの版の71.7%に対し70.6%だった。パラメータは2,930万から420万に減った。2018年11月の質感への偏りの研究では、形と表面の模様が別の物を指す画像で、標準の ResNet-50 が模様の側を77.9%選んだ。人は正しい判断の95.9%で形の側を選んだ。
2019年5月の EfficientNet は、深さ、幅、入力の解像度を一緒に大きくする方法だ。B7 は ImageNet で84.4%の精度を6,600万パラメータで出した。2020年10月の Vision Transformer は、画像を小さな区画に分け、CNN に頼らずに Transformer で分類した。
歴史の流れでいえば、CS231n は2012年の AlexNet を、CNN を画像認識などの画像の分野に広めた最初の仕事としている。AlexNet は ILSVRC 2012 で上位5つの答えの誤り率16%を出し、2位の26%を大きく下回った。論文の要旨によると、AlexNet は130万枚の画像を1,000種類に分ける CNN で、パラメータは6,000万、畳み込み層は5つだった。学習を速くするために GPU を使った。
TRAIL が選んだ6本のうち、2015年から2019年の5本は CNN を使うか調べた研究だ。ResNet は層を深くする工夫、MobileNet は軽くする工夫、EfficientNet は大きくするときの比率の工夫を示した。2020年の Vision Transformer は、CNN に頼らない作りを示した。
CNN と Vision Transformer の違い
| 項目 | CNN | Vision Transformer(ViT) |
|---|---|---|
| 画像の見方 | 小さなフィルターをずらし、近くの画素どうしをまとめて計算する | 画像を区画に分け、区画の並びを文章の単語のように扱う |
| 作りに入っている前提 | 近くの画素の関係(局所性)と、場所がずれても同じ特徴を見つける性質 | 原論文は、こうした前提の一部を持たないとしている |
| 学習データとの関係 | ViT の原論文では、強い正則化なしに ImageNet 程度のデータで学ぶと、同じ大きさの ResNet が ViT を数ポイント上回った | 1,400万〜3億枚で事前に学習すると、複数の画像認識のベンチマークで最高水準に近づくか上回った |
| 主な例 | AlexNet、ResNet、EfficientNet、ConvNeXt | ViT、Swin Transformer |
ViT は2020年10月22日に公開された。原論文の要旨によると、大量の画像で事前に学習してから中小規模のベンチマークに使うと、最新の CNN と比べて優れた結果を、学習に使う計算量を大幅に減らして出した。2022年1月10日に公開された ConvNeXt の論文は、ViT がすぐに CNN に代わって画像分類で最も高い性能のモデルになったと書いている。
ただし、ConvNeXt の論文は課題も挙げている。論文によると、素の ViT は物体の検出や画像の切り分けに使うと難しさがあり、Swin Transformer のような階層型のトランスフォーマーは CNN の前提をいくつか取り入れ直した。ConvNeXt は畳み込みだけで組み、ImageNet で87.8%の精度(top-1)を出し、COCO での物体の検出と ADE20K での切り分けで Swin Transformer を上回った。2023年10月25日の論文「ConvNets Match Vision Transformers at Scale」は、大規模な画像のデータセット JFT-4B で事前に学習した CNN(NFNet)が、ImageNet で微調整したあと、同じ程度の計算量の ViT の報告値に並んだとしている。
仕事でどう関係するか
画像の検査や分類の仕組みを選ぶとき
提案されたモデルの名前から、CNN か Transformer かが分かる。PyTorch の画像用のライブラリ torchvision 0.29 の分類モデルには、ResNet や ConvNeXt のような CNN と、VisionTransformer や SwinTransformer が並んでいる。torchvision は用意したすべての型に学習済みの重みを付けている。
提案いただいた画像の検査モデルについて、次を教えてください。
1. モデルの名前と、CNN か Transformer か
2. 事前学習に使ったデータと、当社の画像で学び直す枚数
3. 当社の画像で測った見逃しの割合端末や現場の機器で動かすとき
モデルの大きさと計算量を比べる。torchvision の表では、ImageNet の精度とパラメータの数は、MobileNet V3 Small が67.668%・250万、ResNet-50(IMAGENET1K_V2 の重み)が80.858%・2,560万、ViT-B/16 が81.072%・8,660万だ。計算量は順に0.06、4.09、17.56 GFLOPS だった。TRAIL の MobileNet の解説は、演算の回数は実際の機器での待ち時間と同じではないとしている。対象の機器で速さを測ってから決める。
学習用の画像が少ないとき
ViT の原論文は、Transformer には CNN が持つ前提の一部がなく、学習のデータが足りないとうまく一般化できないとしている。この論文の結果では、データの量によって CNN と ViT を比べた結果が変わった。学習済みのモデルを自社の画像で学び直す進め方は、転移学習で解説している。
注意点と限界
CNN は形よりも表面の模様で判断することがある。TRAIL が解説した論文では、標準の ResNet-50 が、形と模様が食い違う画像で模様の側を77.9%選んだ。
フィルターを使い回す前提が合わない画像もある。CS231n は、中央にそろえた顔の画像では、場所ごとに違う特徴を学ぶ方がよい場合があるとしている。
ImageNet の精度は、自社の画像での精度を表さない。TRAIL の MobileNet の解説は、現場の画像で精度と見逃しを測るよう書いている。
CNN と ViT を比べた結果は、事前学習のデータの量と計算量の条件で変わる。ViT の原論文では、ImageNet 程度のデータでは同じ大きさの ResNet が上回った。2023年の論文は、JFT-4B で事前に学習した CNN が、同じ程度の計算量の ViT の報告値に並んだとしている。
よくある質問
CNN とニューラルネットワークは何が違うか
CNN はニューラルネットワークの一種だ。CS231n は CNN も重みとバイアスを学習するニューロンでできており、ふつうのニューラルネットワークとよく似ているとしている。違いは、入力が画像だという前提を作りに入れ、パラメータを大きく減らした点だ。
今も CNN は使われているのか
今もライブラリで用意され、研究も続いている。torchvision 0.29 は ResNet や ConvNeXt などの CNN を学習済みの重みつきで用意している。2022年の ConvNeXt と2023年の NFNet の論文は、CNN が Transformer と並ぶ結果を出したと報告した。
画像以外にも使えるか
使える。PyTorch には、1次元の信号に畳み込みをかける Conv1d が用意されている。なお CS231n の説明は、入力が画像だという前提で書かれている。
プーリング層は必ず要るのか
必ずではない。CS231n は、プーリング層をなくし、畳み込みのずらす幅を大きくして画像を縮める作りを提案した論文を紹介している。そのうえで、今後の作りではプーリング層がほとんど使われなくなりそうだと書いている。
「畳み込み」では何を計算しているのか
フィルターと画像の一部の値を掛けて足す計算を、場所を変えながらくり返している。CS231n は、同じ重みを画像のどこでも使うため、この計算が重みと入力の畳み込みとして書けることが名前の由来だと説明している。PyTorch の Conv2d のドキュメントは、この層の計算を2次元の相互相関(cross-correlation)と書いている。
関連する用語
出典
- CS231n: Convolutional Neural Networks (CNNs / ConvNets)Stanford University
- Conv2d(PyTorch 2.15 documentation)PyTorch
- Conv1d(PyTorch 2.15 documentation)PyTorch
- Models and pre-trained weights(Torchvision 0.29 documentation)PyTorch
- ImageNet Classification with Deep Convolutional Neural Networks(NIPS 2012)Alex Krizhevsky、Ilya Sutskever、Geoffrey E. Hinton
- Deep Residual Learning for Image Recognition(arXiv:1512.03385)Kaiming He ほか
- An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale(arXiv:2010.11929)Alexey Dosovitskiy ほか
- A ConvNet for the 2020s(arXiv:2201.03545)Zhuang Liu ほか
- ConvNets Match Vision Transformers at Scale(arXiv:2310.16764)Samuel L. Smith、Andrew Brock、Leonard Berrada、Soham De
- 公開
- 執筆
- TRAIL編集部(編集方針)