# NOAI2025教学测试第2题：真假图像识别任务

**简介：此为NOAI2024第二轮试题的第2题，也是NOAI2025教学测试样题**

## 一.  题目概述

CIFAR10是一个常用的图像分类数据集，每张图像是3x32x32彩色图像。其中，3为颜色通道数，32x32为图片尺寸。我们在CIFAR10中选取了5000张训练图像，1000张测试图像，这6000张图像为拍照得到的图像，定义为“真实”图像。

扩散模型（Diffusion Model）是一个非常强大的图像生成模型，可以用于生成“虚假”图像。我们在CIFAR10上使用了一个扩散模型，生成了6000张“虚假”图像，其中5000张“虚假”图像为训练集，1000张为测试集。测试集的样本在比赛过程中无法访问。

## 二.  数据集

（1）训练集地址：[训练集](https://bohrium.dp.tech/competitions/2623226705?tab=datasets) 

​	train/cifar  文件夹中存储训练集的真实图片

​	train/uvit  文件夹中存储测试集的虚假图片

（2）测试集（比赛过程中无法直接下载）：

​	test/cifar 文件夹中存储测试集的真实图片

​	test/uvit 文件夹中存储测试集的虚假图片

## 三.  任务

请使用PyTorch设计一个**卷积神经网络**，实现模型训练和测试，用于区分哪张图片是“真实”图片，哪张图片是“虚假”图片。

具体要求如下：

（1）在训练过程中，请自行将“真实”图片的Label设定成0，“虚假”图片的Label设定成1；

（2）模型的class取名为MyModel()，使用其他名字可能无法提交；

（3）至少包括2个卷积层（nn.Conv2d）和2个max pooling层(nn.MaxPool2d)；不得使用其他方法定义卷积层和池化层；请直接搭建神经网络，不要使用nn.sequential()嵌套，评分系统内无法检测到nn.sequential内的网络结构，会直接判0分；

（4）最多只能包括2个线性层（nn.Linear）；请直接搭建神经网络，不要使用nn.sequential()嵌套，评分系统内无法检测到nn.sequential内的网络结构，会直接判0分；

（5）每一层的激活函数只能从nn.ReLU, nn.Sigmoid, nn.Tanh, nn.ELU, nn.LeakyReLU, nn.PreLU中选取；

（6）损失函数（Loss Function）、优化器（Solver）、学习率（Learning Rate）可以自由选取。 



## 四.  提交

请提交submission.zip的压缩文件，解压后包含模型文件submission_model.py和模型的参数文件submission_dic.pth。具体要求如下：

（1）将模型的class定义和需要的先导库，保存在submission_model.py中；

（2）将训练好的模型参数保存在submission_dic.pth中，评分时会加载模型参数；

（3）可以参考baseline.ipynb的方法在平台上生成submission.zip文件进行提交；也可以将数据集下载到本地，训练好模型后再打包成一个submission.zip文件再提交。

​	注：由于平台正在调试，提交.zip文件时请选择本地上传。

​    baseline.ipynb地址：[NOAI2025教学测试第2题_baseline](https://bohrium.dp.tech/notebooks/38659372597)



## 五.  评分

1.当神经网络的线性层个数和神经元数目满足要求时，分数的计算方法如下：

（1）网络复杂度分数：Network_Simplicity_Score = 1 / (Num_Linear + Num_Conv + 1)

其中Num_Linear为线性层数目；Num_Conv为卷积层数目；

（2）模型在测试集上的准确率：Accuracy；

（3）最终得分：Score = (Network_Simplicity_Score + Accuracy)* 3/4。

2.当神经网络的线性层个数和神经元数目不满足要求时，分数为0。 

备注：A榜使用测试集中50%的数据，在比赛过程中可以实时显示，帮助比赛选手调试模型；B榜使用测试集中剩下50%的数据，在比赛结束后进行计算，B榜的分数为最终的分数。