NOAI 2024 复赛第2题 | 一张32×32的图,怎么看出是AI画的?

NOAI 2024 复赛第2题 | 一张32×32的图,怎么看出是AI画的?

本文核心观点
NOAI 2024 复赛第 2 题知识拆解:用真假图像识别题,讲清 CNN、卷积、池化的本质,以及"层数越多分数越低"背后的评分逻辑。

NOAI 2024 复赛第2题 | 一张32×32的图,怎么看出是AI画的?

计算机视觉 CNN

用NOAI复赛真题,构建孩子的AI知识图谱

每个知识点后续都会单独展开讲解,欢迎先关注收藏

这道题在做什么

5,000张真实照片,5,000张AI用扩散模型生成的假照片,每张只有32×32像素。你要训练一个卷积神经网络(CNN),判断一张图是真拍的还是AI生成的。

特别的是,评分不只看准确率——网络越简单,分数越高。层数多一层,准确率至少要高好几个百分点才能回本。

知识全景

这道题的知识链路和2024年第1题(投篮命中率预测)有重叠(监督学习、损失函数、优化器等),但新增了一整块内容:图像处理与卷积神经网络

阶段 知识点
理解任务 ① 图像的数字表示
认识数据 ② 生成模型与AI图像
搭建模型 ③ 卷积运算   ④ 卷积核与特征提取   ⑤ 池化   ⑥ 卷积神经网络(CNN)
提升模型 ⑦ 数据增强   ⑧ 批归一化(BatchNorm)
设计策略 ⑨ 模型复杂度与评分权衡

2024年第1题涵盖的监督学习、损失函数、梯度下降、过拟合等基础知识在这道题中同样适用,不再重复展开。

① 图像的数字表示

在计算机眼里,一张图片就是一堆数字。

一张32×32的彩色图片,由3层数字矩阵组成——红(R)、绿(G)、蓝(B)各一层。每一层的每个格子里是一个0到255的数字,表示这个像素在该颜色通道上的亮度。

所以这张图的数据形状是 3×32×32:3个通道、32行、32列,总共3,072个数字。

灰度图只有1个通道。视频是一连串图片。不管多复杂的视觉数据,底层都是数字矩阵。

理解"图片=数字矩阵"是所有计算机视觉任务的起点。

② 生成模型与AI图像

这道题里的"假图片"是用扩散模型(Diffusion Model)生成的。

扩散模型的思路很直觉:先把一张真实图片逐步加噪声,加到最后变成一团纯噪声。然后训练一个神经网络,学会"把噪声一步步去掉,还原成图片"。学会之后,从纯噪声出发,就能生成出看起来像真实照片的新图片。

这类能"创造新数据"的模型统称生成模型。扩散模型是目前最主流的一种,MidjourneyStable DiffusionDALL-E都基于这个思路。

但生成的图片和真实照片在细节纹理上有差异。人眼在32×32的分辨率下很难分辨,但CNN可以——这就是这道题存在的前提。

③ 卷积运算

2024年第1题用的MLP把所有输入拉成一条长向量,丢失了像素之间的空间关系。对图像来说,"这个像素旁边是什么"非常重要——这正是卷积运算要解决的问题。

卷积的操作是这样的:拿一个小的数字方块(比如3×3),在图片上从左到右、从上到下滑动。每滑到一个位置,把小方块和它覆盖的图片区域做逐元素乘法再求和,得到一个数字。滑完整张图,就产生了一张新的数字矩阵。

这个小方块叫卷积核(也叫滤波器)。它的大小(3×3、5×5等)决定了每次"看"多大一块区域。

关键的好处是:卷积核在整张图片上共享参数。不管图片多大,一个3×3的卷积核只有9个参数。而MLP对每个像素都有独立的权重——32×32的图片就需要1,024个权重连接到一个神经元。这让卷积对图像任务来说远比MLP高效。

④ 卷积核与特征提取

不同的卷积核提取不同的特征。

一个卷积核可能对横线敏感——在横线出现的地方输出大数字,其他地方输出小数字。另一个卷积核可能对竖线敏感,还有的对斜线、角点、纹理变化敏感。

浅层卷积核提取的是低级特征:边缘、线条、颜色变化。深层卷积核把低级特征组合起来,形成高级特征:形状、纹理模式、局部结构。

这道题里,CNN不需要认出"图片里是什么东西"。它只需要捕捉到纹理层面的统计差异——AI生成的图片在像素过渡上往往更平滑,缺少真实照片中相机传感器带来的细粒度噪声。这种差异恰好是浅层卷积核擅长提取的。

这也解释了为什么这道题只需要2层卷积就能达到不错的效果。

⑤ 池化

卷积之后,特征图(Feature Map)的尺寸和输入一样大(如果用了padding的话)。为了减小数据量、提取更宏观的信息,需要池化

最常用的是最大池化(Max Pooling):把特征图划分成不重叠的小块(比如2×2),每个小块只保留最大值。一次2×2的最大池化,特征图的宽和高都减半。

池化的作用

缩小尺寸:减少后续层的计算量

提取主要特征:只保留局部最显著的响应

增加平移不变性:特征稍微移动几个像素,池化后的结果不变

这道题要求至少2个MaxPool2d层。每次2×2池化将尺寸减半——32×32经过两次池化变成8×8

⑥ 卷积神经网络(CNN)

把卷积层、激活函数、池化层、线性层组合起来,就构成了卷积神经网络

一个典型的CNN结构:

输入图片 → [卷积 → 激活 → 池化] × N → 展平 → 线性层 → 输出

卷积+激活+池化这个组合重复若干次,逐步提取越来越抽象的特征,同时缩小尺寸

展平(Flatten)把最终的特征图从三维(通道×高×宽)拉成一维向量

线性层把特征向量映射到最终的分类结果

CNN是计算机视觉领域的基础架构。从2012年AlexNetImageNet上大幅领先传统方法开始,CNN一直是图像识别的核心工具。

后来出现了更复杂的CNN变体(ResNetVGGEfficientNet等),但基本组件都是一样的:卷积+池化+全连接。

⑦ 数据增强

训练数据越多,模型越不容易过拟合。但如果训练集就那么大怎么办?

数据增强在不增加真实数据的情况下,人为制造更多样的训练样本。对图像来说,常见的增强方式包括:

随机水平翻转:左右镜像

随机裁剪:裁掉边缘的一小部分,再缩放回原尺寸

颜色抖动:微调亮度、对比度、饱和度

随机旋转:小角度旋转

每个epoch里,同一张图片经过不同的随机变换,模型看到的都是"稍微不一样"的版本。这迫使模型学习真正有用的特征,而不是记住训练图片的具体样子。

注意:数据增强只在训练时使用,测试时不用——测试时你希望得到稳定、可重复的结果。

⑧ 批归一化(BatchNorm)

2024年第1题讲了数据归一化——在输入数据进入网络之前做一次缩放。批归一化把这个思路推广到了网络内部:在每一层的输出上也做归一化。

为什么需要这样做?随着训练的进行,每一层的输入分布会不断变化(因为前面的层在更新参数)。下一层刚适应了上一层的输出分布,上一层参数一更新,分布又变了。这让训练不稳定,需要更小的学习率和更多的epoch。

BatchNorm在每一层之后把输出标准化为均值0、标准差1,然后再学两个参数把它缩放到合适的范围。这相当于在每一层都"重置"了数据的分布,让训练更稳定、收敛更快。

在这道题的评分公式中,BatchNorm不算作卷积层或线性层,不影响复杂度分。它是一个"免费"的性能提升。

⑨ 模型复杂度与评分权衡

这道题的评分公式把准确率和模型简单性放在一起考量:

最终得分 = (1/(卷积层数+线性层数+1) + 准确率) × 3/4

这不只是一个做题技巧——它反映了机器学习中一个核心问题:模型复杂度与性能的权衡

更复杂的模型(更多层、更多参数)理论上能表达更复杂的关系。但复杂度的代价是:

计算成本:更多参数意味着更慢的训练和推理

过拟合风险:参数多了更容易记住训练数据的噪声

部署难度:在手机、嵌入式设备等资源有限的环境下,大模型可能跑不动

在实际工程中,一个轻量但准确率95%的模型,往往比一个庞大但准确率97%的模型更有价值。这道题的评分公式就是在训练这种思维:不是越大越好,而是用最少的资源达到最好的效果

这道题把战场从"二维坐标"搬到了"图像",核心武器从MLP换成了CNN。理解卷积的本质——用小窗口在图上滑动提取局部特征——就抓住了计算机视觉最重要的一个思想。

微信二维码

扫码备注【NOAI】加交流群