{"notes":[{"id":"classic-cnns/nin","category":"classic-cnns","legacyPath":"","legacySlug":"","legacyPaths":[],"title":"NiN","subtitle":"一乘一的伏笔","author":"Z. Yuan","paperDate":"2013-12-16","publishedOn":"2025-09-24","world":"external/network-in-network","paperTitle":"Network In Network","paperUrl":"https://arxiv.org/abs/1312.4400","bibliography":{"title":"Network In Network","authors":["Min Lin","Qiang Chen","Shuicheng Yan"],"url":"https://arxiv.org/abs/1312.4400","pdfUrl":"https://arxiv.org/pdf/1312.4400v3","codeUrl":null,"preprint":{"id":"1312.4400","submittedOn":"2013-12-16","url":"https://arxiv.org/abs/1312.4400"},"publication":null,"citation":"@misc{classiccnnsnin2013,\n  title = {{Network In Network}},\n  author = {Min Lin and Qiang Chen and Shuicheng Yan},\n  year = {2013},\n  eprint = {1312.4400},\n  archivePrefix = {arXiv},\n  url = {https://arxiv.org/abs/1312.4400}\n}\n","citationPath":"/content/papers/citations/classic-cnns/nin.db58639ac47c.bib"},"thumbnail":{"src":"/content/papers/assets/8024fc245eb852a2c0cd34b59c18c680b92766c33d621b934dbf102c1cacda13.png","width":896,"height":330},"locale":"zh-hans","path":"/content/papers/zh-hans/classic-cnns/nin.317b38a6f564.md","headings":[{"id":"定义问题","text":"定义问题","depth":2},{"id":"解决问题","text":"解决问题","depth":2},{"id":"在每个区域上跑一个小-mlp","text":"在每个区域上跑一个小 MLP","depth":3},{"id":"把全连接层换成平均","text":"把全连接层换成平均","depth":3},{"id":"整个网络","text":"整个网络","depth":3},{"id":"讨论","text":"讨论","depth":2},{"id":"cifar-10-与-cifar-100","text":"CIFAR-10 与 CIFAR-100","depth":3},{"id":"svhn-与-mnist","text":"SVHN 与 MNIST","depth":3},{"id":"全局平均池化真的有正则化效果吗","text":"全局平均池化真的有正则化效果吗？","depth":3},{"id":"最后一层真的变成置信度图了吗","text":"最后一层真的变成置信度图了吗？","depth":3},{"id":"结论","text":"结论","depth":2}],"anchorAliases":{},"guide":null,"relatedReading":[{"id":"classic-cnns/inception-v1","relation":"referenced","topic":""},{"id":"classic-cnns/resnet","relation":"referenced","topic":""},{"id":"classic-cnns/cam","relation":"referenced","topic":""}]},{"id":"classic-cnns/inception-v1","category":"classic-cnns","legacyPath":"classic-cnns/1409-inception-v1","legacySlug":"1409-inception-v1","legacyPaths":[],"title":"GoogLeNet","subtitle":"或叫做 Inception-V1","author":"Z. Yuan","paperDate":"2014-09-17","publishedOn":"2024-09-22","paperTitle":"Going Deeper with Convolutions","paperUrl":"https://arxiv.org/abs/1409.4842","bibliography":{"title":"Going Deeper with Convolutions","authors":["Christian Szegedy","Wei Liu","Yangqing Jia","Pierre Sermanet","Scott Reed","Dragomir Anguelov","Dumitru Erhan","Vincent Vanhoucke","Andrew Rabinovich"],"url":"https://arxiv.org/abs/1409.4842","pdfUrl":"https://arxiv.org/pdf/1409.4842","codeUrl":null,"preprint":{"id":"1409.4842","submittedOn":"2014-09-17","url":"https://arxiv.org/abs/1409.4842"},"publication":{"venue":"CVPR","year":2015,"kind":"conference","url":"https://doi.org/10.1109/cvpr.2015.7298594"},"citation":"@misc{classiccnnsinceptionv12014,\n  title = {{Going Deeper with Convolutions}},\n  author = {Christian Szegedy and Wei Liu and Yangqing Jia and Pierre Sermanet and Scott Reed and Dragomir Anguelov and Dumitru Erhan and Vincent Vanhoucke and Andrew Rabinovich},\n  year = {2014},\n  eprint = {1409.4842},\n  archivePrefix = {arXiv},\n  url = {https://arxiv.org/abs/1409.4842}\n}\n","citationPath":"/content/papers/citations/classic-cnns/inception-v1.3d20e0e32bcd.bib"},"thumbnail":{"src":"/content/papers/assets/254b970b1374c24267b60c2d684338760e9ba8b10dad761a5fa15f1bb8bcf6ef.jpg","width":1330,"height":394},"locale":"zh-hans","path":"/content/papers/zh-hans/classic-cnns/inception-v1.7c8c2ff19589.md","headings":[{"id":"解决问题","text":"解决问题","depth":2},{"id":"inception-模块","text":"Inception 模块","depth":3},{"id":"参数配置","text":"参数配置","depth":3},{"id":"模型架构","text":"模型架构","depth":3},{"id":"讨论","text":"讨论","depth":2},{"id":"在-ilsvrc-2014-上的表现","text":"在 ILSVRC 2014 上的表现","depth":3},{"id":"结论","text":"结论","depth":2}],"anchorAliases":{},"guide":null,"relatedReading":[{"id":"classic-cnns/resnext","relation":"comparison","topic":"分支、分组卷积与特征复用"},{"id":"classic-cnns/cspnet","relation":"comparison","topic":"分支、分组卷积与特征复用"}]},{"id":"classic-cnns/resnet","category":"classic-cnns","legacyPath":"classic-cnns/1512-resnet","legacySlug":"1512-resnet","legacyPaths":[],"title":"ResNet","subtitle":"卷积网络 100 层","author":"Z. Yuan","paperDate":"2015-12-10","publishedOn":"2024-08-08","paperTitle":"Deep Residual Learning for Image Recognition","paperUrl":"https://arxiv.org/abs/1512.03385","bibliography":{"title":"Deep Residual Learning for Image Recognition","authors":["Kaiming He","Xiangyu Zhang","Shaoqing Ren","Jian Sun"],"url":"https://arxiv.org/abs/1512.03385","pdfUrl":"https://arxiv.org/pdf/1512.03385","codeUrl":null,"preprint":{"id":"1512.03385","submittedOn":"2015-12-10","url":"https://arxiv.org/abs/1512.03385"},"publication":{"venue":"CVPR","year":2016,"kind":"conference","url":"https://doi.org/10.1109/cvpr.2016.90"},"citation":"@misc{classiccnnsresnet2015,\n  title = {{Deep Residual Learning for Image Recognition}},\n  author = {Kaiming He and Xiangyu Zhang and Shaoqing Ren and Jian Sun},\n  year = {2015},\n  eprint = {1512.03385},\n  archivePrefix = {arXiv},\n  url = {https://arxiv.org/abs/1512.03385}\n}\n","citationPath":"/content/papers/citations/classic-cnns/resnet.cf4014e8baae.bib"},"thumbnail":{"src":"/content/papers/assets/b8fe87fe757249ea6d7bb667fef3196754b9f80e28bf842a69b540ca94585d08.jpg","width":1224,"height":408},"locale":"zh-hans","path":"/content/papers/zh-hans/classic-cnns/resnet.98d0474f71e6.md","headings":[{"id":"定义问题","text":"定义问题","depth":2},{"id":"解决问题","text":"解决问题","depth":2},{"id":"什么是残差","text":"什么是残差？","depth":3},{"id":"残差学习","text":"残差学习","depth":3},{"id":"残差模块","text":"残差模块","depth":3},{"id":"网络架构","text":"网络架构","depth":3},{"id":"参数配置","text":"参数配置","depth":3},{"id":"讨论","text":"讨论","depth":2},{"id":"resnet-18-vs-resnet-34","text":"ResNet-18 vs ResNet-34","depth":3},{"id":"更深的瓶颈架构","text":"更深的瓶颈架构","depth":3},{"id":"在-imagenet-上的表现","text":"在 ImageNet 上的表现","depth":3},{"id":"结论","text":"结论","depth":2}],"anchorAliases":{},"guide":null,"relatedReading":[{"id":"classic-cnns/vgg","relation":"background","topic":"如何训练更深的卷积网络"},{"id":"classic-cnns/densenet","relation":"next","topic":"如何训练更深的卷积网络"}]},{"id":"classic-cnns/cam","category":"classic-cnns","legacyPath":"","legacySlug":"","legacyPaths":[],"title":"CAM","subtitle":"模型在看哪里？","author":"Z. Yuan","paperDate":"2015-12-14","publishedOn":"2026-01-05","world":"external/cam","paperTitle":"Learning Deep Features for Discriminative Localization","paperUrl":"https://arxiv.org/abs/1512.04150","bibliography":{"title":"Learning Deep Features for Discriminative Localization","authors":["Bolei Zhou","Aditya Khosla","Agata Lapedriza","Aude Oliva","Antonio Torralba"],"url":"https://arxiv.org/abs/1512.04150","pdfUrl":"https://arxiv.org/pdf/1512.04150v1","codeUrl":null,"preprint":{"id":"1512.04150","submittedOn":"2015-12-14","url":"https://arxiv.org/abs/1512.04150"},"publication":null,"citation":"@misc{classiccnnscam2015,\n  title = {{Learning Deep Features for Discriminative Localization}},\n  author = {Bolei Zhou and Aditya Khosla and Agata Lapedriza and Aude Oliva and Antonio Torralba},\n  year = {2015},\n  eprint = {1512.04150},\n  archivePrefix = {arXiv},\n  url = {https://arxiv.org/abs/1512.04150}\n}\n","citationPath":"/content/papers/citations/classic-cnns/cam.2ce837236f9d.bib"},"thumbnail":{"src":"/content/papers/assets/c3c6af7f1943634784331ca03a55efc3e68a7714d936d953a14f11b0828d9cf8.png","width":1372,"height":615},"locale":"zh-hans","path":"/content/papers/zh-hans/classic-cnns/cam.15140ed7296e.md","headings":[{"id":"定义问题","text":"定义问题","depth":2},{"id":"解决问题","text":"解决问题","depth":2},{"id":"把分数拆回空间","text":"把分数拆回空间","depth":3},{"id":"平均和最大差在哪里","text":"平均和最大，差在哪里","depth":3},{"id":"让最后一层的分辨率高一点","text":"让最后一层的分辨率高一点","depth":3},{"id":"从热力图到框","text":"从热力图到框","depth":3},{"id":"讨论","text":"讨论","depth":2},{"id":"去掉全连接层分类变差多少","text":"去掉全连接层，分类变差多少？","depth":3},{"id":"弱监督定位","text":"弱监督定位","depth":3},{"id":"换到其他任务","text":"换到其他任务","depth":3},{"id":"结论","text":"结论","depth":2}],"anchorAliases":{},"guide":null,"relatedReading":[{"id":"classic-cnns/nin","relation":"referenced","topic":""},{"id":"classic-cnns/zfnet","relation":"referenced","topic":""},{"id":"classic-cnns/resnet","relation":"referenced","topic":""}]}],"text":"2013 年的 ImageNet 分类赛，新加坡国立大学的队伍拿下第二名，成员中有 Min Lin 与 Qiang Chen。\n\n同年 12 月，两人和 Shuicheng Yan 发布了这篇论文，后来发表在 ICLR 2014。论文本身没有 ImageNet 的实验，只在 CIFAR、SVHN、MNIST 这些小数据集上做比较；它留下来的两个零件，却在之后几年的卷积网络里随处可见：$1\\times1$ 卷积，以及全局平均池化。\n\n这两个零件都源于同一个疑问：卷积网络里的滤波器，是不是太简单了？\n\n## 定义问题\n\n先看普通的卷积层在做什么。以 ReLU 为例，第 $k$ 张特征图在位置 $(i, j)$ 的输出是：\n\n$$\nf_{i,j,k} = \\max(w_k^T x_{i,j},\\ 0)\n$$\n\n$x_{i,j}$ 是以 $(i, j)$ 为中心的输入区域，$w_k$ 是第 $k$ 个滤波器。换句话说，每个滤波器对这块区域做一次线性内积，再过一次 ReLU。作者把它称为广义线性模型（GLM）。\n\n线性模型能分开的东西有限。假设某个滤波器想检测「斜向的边缘」，而斜向边缘在不同光照、不同粗细下的样子恰好都落在一个超平面的同一侧，那么一个滤波器就够了。可是同一个概念的各种形态，常常散布在弯曲的流形上，一个超平面切不干净。\n\n普通的卷积网络怎么处理？多放一些滤波器，每个负责一种形态。作者指出，这会把负担推给下一层：下一层得考虑上一层所有形态的组合，才能拼出更高层的概念。\n\n当时刚发表的 maxout 网络往前走了一步。它在多张仿射特征图之间取最大值：\n\n$$\nf_{i,j,k} = \\max_m\\,(w_{k_m}^T x_{i,j})\n$$\n\n几个线性函数取最大值，会得到一个分段线性的凸函数，因此能分开落在凸集里的概念。但作者认为，「概念落在凸集里」仍然是一个不一定成立的假设。\n\n那么，能不能在每个局部区域上放一个没有这种假设、能逼近一般函数的模型？\n\n卷积网络的末端还有另一个问题。最后几层通常是全连接层，作者觉得它们像一个黑箱，很难说清楚类别信息是怎么传回卷积层的；全连接层也容易过拟合，得靠 dropout 撑着。\n\n## 解决问题\n\n### 在每个区域上跑一个小 MLP\n\n作者的答案是把线性滤波器换成一个小型的多层感知机（MLP），同样滑过输入的每个位置，所有位置共享同一组权重。这种层叫做 mlpconv：\n\n[![左右两张示意图。(a) 线性卷积层：输入的局部区域经过一个线性滤波器，得到输出特征图上的一个点。(b) mlpconv 层：同一个局部区域先经过两层全连接的小网络，再得到输出上的一个点](/content/papers/assets/8024fc245eb852a2c0cd34b59c18c680b92766c33d621b934dbf102c1cacda13.png)](/content/papers/assets/8024fc245eb852a2c0cd34b59c18c680b92766c33d621b934dbf102c1cacda13.png)\n\n*原论文 Figure 1，取自 [**v3 PDF 第 2 页**](https://arxiv.org/pdf/1312.4400v3#page=2)。(a) 线性卷积层；(b) mlpconv 层，区域里多了一个小型 MLP。*\n\nMLP 有 $n$ 层时，mlpconv 的计算是：\n\n$$\n\\begin{aligned}\nf^{1}_{i,j,k_1} &= \\max\\left({w^{1}_{k_1}}^T x_{i,j} + b_{k_1},\\ 0\\right) \\\\\n&\\ \\ \\vdots \\\\\nf^{n}_{i,j,k_n} &= \\max\\left({w^{n}_{k_n}}^T f^{n-1}_{i,j} + b_{k_n},\\ 0\\right)\n\\end{aligned}\n$$\n\n第一行和普通卷积完全一样：对整个区域 $x_{i,j}$ 做内积。从第二行开始，输入换成了上一层在**同一个位置** $(i, j)$ 的输出 $f^{n-1}_{i,j}$，也就是只看这个位置上所有通道的值。\n\n只看同一个位置、把所有通道加权组合起来，这件事正是 $1\\times1$ 卷积。作者也直接写出了这个等价关系：mlpconv 等于一层普通卷积，后面接几层 $1\\times1$ 卷积。\n\n我们用 PyTorch 验证一次。输入是 2 个通道、$5\\times5$ 的特征图；小 MLP 读入每个 $3\\times3$ 区域展平后的 $2\\times3\\times3=18$ 个数，经过 18 → 4 → 3 两层：\n\n```python\nimport torch\nimport torch.nn.functional as F\n\ntorch.manual_seed(0)\nx = torch.randn(1, 2, 5, 5)            # 1 张图、2 个通道、5×5\n\n# 小型 MLP：每个 3×3 区域展平成 2×3×3 = 18 个数，经过 18 → 4 → 3\nw1, b1 = torch.randn(4, 18), torch.randn(4)\nw2, b2 = torch.randn(3, 4), torch.randn(3)\n\n# 做法一：让 MLP 滑过每个 3×3 区域\npatches = F.unfold(x, kernel_size=3)            # [1, 18, 9]：9 个位置，每个 18 维\nh = F.relu(w1 @ patches + b1[:, None])          # [1, 4, 9]\ny_mlp = F.relu(w2 @ h + b2[:, None]).reshape(1, 3, 3, 3)\n\n# 做法二：3×3 卷积，再接 1×1 卷积\nh = F.relu(F.conv2d(x, w1.reshape(4, 2, 3, 3), b1))\ny_conv = F.relu(F.conv2d(h, w2.reshape(3, 4, 1, 1), b2))\n\nprint(y_mlp.shape, y_conv.shape)\nprint(\"最大差异：\", (y_mlp - y_conv).abs().max().item())\n```\n\n```text\ntorch.Size([1, 3, 3, 3]) torch.Size([1, 3, 3, 3])\n最大差异： 4.76837158203125e-07\n```\n\n两种做法的输出形状相同，差异只有浮点误差。\n\n做法一更贴近作者的想法：每个位置都有一个小网络在判断「这里是不是某个概念」。做法二则是实现上的样子：一层 $3\\times3$ 卷积先看整个区域，之后的 $1\\times1$ 卷积只在每个位置上混合通道。作者也从通道的角度描述它：每一层 $1\\times1$ 卷积都是一次「跨通道、带参数的池化」，把上一层的特征图重新加权组合，再过 ReLU，一层接一层。\n\n\n> [!TIP]\n> \n> 后来的 GoogLeNet 在 Inception 模块里大量使用 $1\\times1$ 卷积，主要用途却换成了减少通道数，让后面的 $3\\times3$、$5\\times5$ 卷积便宜一些。\n> \n> - **[[14.09] GoogLeNet：或叫做 Inception-V1](/blog/papers/classic-cnns/inception-v1)**\n\n\n和 maxout 相比，mlpconv 的区别在于：maxout 只能逼近凸函数，mlpconv 用的 MLP 是通用函数逼近器，可以处理更多种形状的概念分布。作者选 MLP 而没有选另一种通用逼近器径向基函数网络，理由也很实际：MLP 可以和卷积网络一起用反向传播训练，而且本身就能做深。\n\n### 把全连接层换成平均\n\n第二个零件处理的是网络的末端。\n\n普通的卷积网络会把最后一层卷积的特征图展平，送进几层全连接，再接 softmax。NiN 改成这样：让最后一个 mlpconv 层输出的特征图数量**恰好等于类别数**，每张特征图取空间平均，得到的向量直接送进 softmax。这叫做全局平均池化（global average pooling，GAP）。\n\n以 CIFAR-10 为例，有 10 个类别，最后一层就输出 10 张特征图：\n\n```python\nimport torch\n\ntorch.manual_seed(0)\nfeature_maps = torch.randn(1, 10, 8, 8)    # 最后一层：10 个类别各一张 8×8 特征图\n\nlogits = feature_maps.mean(dim=(2, 3))      # 全局平均池化\nprint(logits.shape)\n\nfc_params = 10 * 8 * 8 * 10 + 10            # 如果改接全连接层到 10 类\nprint(\"全连接层参数：\", fc_params, \"，全局平均池化参数：0\")\n```\n\n```text\ntorch.Size([1, 10])\n全连接层参数： 6410 ，全局平均池化参数：0\n```\n\n这里的 $8\\times8$ 只是示意的大小。小网络的差距看起来不大，换到 AlexNet 就很明显了：它最后三层全连接（$9216\\to4096\\to4096\\to1000$），光权重就有 $9216\\times4096+4096\\times4096+4096\\times1000 = 58{,}621{,}952$ 个。\n\n作者列出了 GAP 的三个好处：\n\n1. **没有参数**，这一层本身不会过拟合。\n2. **每张特征图对应一个类别**，可以直接当成这个类别的置信度图来看，比全连接层更好解释。\n3. **把空间信息汇总掉**，对输入的平移不那么敏感。\n\n第 2 点有个前提：最后一层要真的学得出「这张图代表猫」这样的特征图。作者认为这要靠 mlpconv 更强的局部建模；用普通的线性卷积，这个要求可能太严格。后面的实验会看到这一点。\n\n### 整个网络\n\n[![NiN 的整体架构：三个 mlpconv 层依次串联，每层内含一个小型多层感知机，最后一层的多张特征图经过全局平均池化，连接到输出的类别节点](/content/papers/assets/d94aa487d35fbfcdda30993d49c170efa0980e5c28d2a718b75659cd77164e3e.png)](/content/papers/assets/d94aa487d35fbfcdda30993d49c170efa0980e5c28d2a718b75659cd77164e3e.png)\n\n*原论文 Figure 2，取自 [**v3 PDF 第 4 页**](https://arxiv.org/pdf/1312.4400v3#page=4)。本文实验中的 NiN 都是三层 mlpconv 加一层全局平均池化。*\n\n论文实验用的 NiN 叠了三层 mlpconv，每层里面是三层的感知机，最后接全局平均池化。每个 mlpconv 层后面接一个步幅 2 的最大池化；除了最后一层，mlpconv 的输出都加了 dropout，另外再加 weight decay。各层的详细参数，作者放在了补充材料里。\n\n## 讨论\n\n作者在四个数据集上做了评估：CIFAR-10、CIFAR-100、SVHN、MNIST。数据预处理和训练集、验证集的划分都沿用 maxout 论文；实现用的是 Alex Krizhevsky 的 cuda-convnet。\n\n### CIFAR-10 与 CIFAR-100\n\nCIFAR-10 是 10 类、$32\\times32$ 的彩色图像，5 万张训练、1 万张测试。作者让每个 mlpconv 层的特征图数量和 maxout 网络相同，只用验证集调了两个超参数：局部感受野大小与 weight decay。\n\n| 方法 | 测试错误率 |\n| --- | ---: |\n| Conv. maxout + Dropout | 11.68% |\n| **NIN + Dropout** | **10.41%** |\n| Conv. maxout + Dropout + 数据增强 | 9.38% |\n| DropConnect + 12 个网络 + 数据增强 | 9.32% |\n| **NIN + Dropout + 数据增强** | **8.81%** |\n\n*表：摘自原论文 Table 1。数据增强指平移与水平翻转。*\n\n不用数据增强时，NIN 比 maxout 少了 1.27 个百分点；加上平移与水平翻转，8.81% 也比用了 12 个网络的 DropConnect 低。\n\ndropout 的作用不小。作者比较了 mlpconv 层之间有没有 dropout：去掉 dropout，测试错误率是 14.51%，加上之后降到 10.41%，作者说相对降幅超过 20%。\n\nCIFAR-100 的图像格式相同，但有 100 类，每类的图像只有 CIFAR-10 的十分之一。作者没有另外调参数，只把最后一层改成输出 100 张特征图，测试错误率 35.68%，比当时不用数据增强的最好结果（36.85%）低了一个多百分点。\n\n### SVHN 与 MNIST\n\nSVHN 是门牌号码的数字识别，NIN 的错误率是 2.35%，比 maxout 的 2.47% 低。不过同一张表里，Multi-digit Number Recognition 是 2.16%，DropConnect 是 1.94%，都比 NIN 好。\n\n在 MNIST 上，NIN 是 0.47%，maxout 是 0.45%。作者的说法是 MNIST 已经被调到非常低的错误率了。\n\n### 全局平均池化真的有正则化效果吗？\n\n为了单独看 GAP 的作用，作者把它换回全连接层，其他部分不动，在 CIFAR-10 上比较：\n\n| 顶层 | 测试错误率 |\n| --- | ---: |\n| mlpconv + 全连接 | 11.59% |\n| mlpconv + 全连接 + Dropout | 10.88% |\n| mlpconv + 全局平均池化 | 10.41% |\n\n*表：摘自原论文 Table 5。*\n\n不带 dropout 的全连接层最差，加上 dropout 好一些，GAP 最好。\n\n作者接着问：普通的卷积网络换上 GAP，也有同样的效果吗？他们拿 Hinton 等人 dropout 论文中的网络（三层卷积加一层局部连接）来试。全连接层不加 dropout 是 17.56%，加 dropout 是 15.99%，换成 GAP 是 16.46%：比不加 dropout 好了约一个百分点，但输给了 dropout。作者的解释就是前面那个前提：要线性卷积加 ReLU 直接学出各类别的置信度图，要求可能太高了。\n\n### 最后一层真的变成置信度图了吗？\n\n[![两组 10 乘 10 的格子。每一行是一张 CIFAR-10 测试图像，左边是原图，右边依次是最后一层 10 个类别的特征图；对角线上用红框标出的，是图像真实类别对应的特征图，大多最亮，亮点的位置和原图中物体的位置大致相同](/content/papers/assets/c0032c1fba54d5052a18867e6bd6347143d3ba47c5cf4b353a61516107a0cf65.png)](/content/papers/assets/c0032c1fba54d5052a18867e6bd6347143d3ba47c5cf4b353a61516107a0cf65.png)\n\n*原论文 Figure 4，取自 [**v3 PDF 第 9 页**](https://arxiv.org/pdf/1312.4400v3#page=9)。最后一个 mlpconv 层的特征图，只显示前 10% 的激活；类别依次是飞机、汽车、鸟、猫、鹿、狗、青蛙、马、船、卡车，红框是图像的真实类别。左右两组只是不同的示例。*\n\n每一行是一张测试图像和它在 10 张特征图上的响应。红框是真实类别那一张，大多是整行最亮的。GAP 本来就在逼它这样，更值得看的是另一件事：真实类别那张特征图上，最亮的地方大致落在原图中物体所在的位置；作者特别提到了汽车这种结构清晰的物体。\n\n这些特征图只用类别标签训练，没有见过任何框。作者在结论中提到，这让用 NIN 做目标检测成为可能。\n\n## 结论\n\nNiN 的两个零件是一起设计的：mlpconv 让每个局部区域有更强的模型，GAP 才有办法要求最后一层的特征图直接对应类别。实验上，CIFAR-10、CIFAR-100 的成绩和 GAP 的对比都支持这个设计；在普通卷积网络上，单独使用 GAP 的效果就打了折扣。\n\nNiN 在 ImageNet 上也有成绩：根据 ILSVRC 的综述论文，2014 年检测赛（只使用所提供数据的组别）的冠军 NUS，就是在 R-CNN 框架里用了 network-in-network。\n\nNiN 的两个零件后来都被拆开来用：$1\\times1$ 卷积在 GoogLeNet 和 ResNet 的瓶颈结构里负责调整通道数，全局平均池化负责收尾，只是后面多半再接一层全连接，不再要求每张特征图对应一个类别。下次打开一个分类网络的代码，最后那行 `AdaptiveAvgPool2d(1)` 的源头，就是这篇论文。\n\n\n> [!TIP]\n> \n> ResNet 的瓶颈块用 $1\\times1$ 卷积先降后升通道数，网络末端则是全局平均池化接一层全连接：\n> \n> - **[[15.12] ResNet：卷积网络 100 层](/blog/papers/classic-cnns/resnet)**\n\n\n至于「最后一层特征图看得出物体在哪里」这件事，要到 [CAM](/blog/papers/classic-cnns/cam) 才被认真拿来用，我们在那篇里接着看。\n","imageSizes":{"/content/papers/assets/8024fc245eb852a2c0cd34b59c18c680b92766c33d621b934dbf102c1cacda13.png":{"width":896,"height":330},"/content/papers/assets/d94aa487d35fbfcdda30993d49c170efa0980e5c28d2a718b75659cd77164e3e.png":{"width":992,"height":296},"/content/papers/assets/c0032c1fba54d5052a18867e6bd6347143d3ba47c5cf4b353a61516107a0cf65.png":{"width":1078,"height":528}}}
