1. 这次复现做的是什么

这次我新开了一条图像分类论文复现线,数据集选的是经典公开数据集 Fashion-MNIST,目标论文是:

  • MCNN15: Multi-Class Convolutional Neural Network for Fashion-MNIST Classification

之所以先做这个题目,原因很现实:

  • 数据公开,下载和接入成本低
  • 图像尺寸小,个人设备也能训练
  • 十分类任务边界清楚,适合做 baseline 和目标模型对比
  • 论文可以直接读,但没有现成官方源码拿来直接套
  • 很适合练一遍“无源码图像论文应该怎么复现”

这次的目标不是简单跑一个模型,而是把一条比较完整的复现链路立起来:

  1. 锁定论文和数据集
  2. 打通数据入口
  3. 自己实现 CNN baseline
  4. 自己实现 MCNN15 近似版
  5. 跑出第一轮结果
  6. 再补多 seed 和补充实验

2. 为什么我会先做 Fashion-MNIST

如果一开始就上大图像数据集,很多时候最先卡住的不是模型,而是:

  • 训练时间
  • 环境依赖
  • 显存压力
  • 结果整理成本

相比之下,Fashion-MNIST 很适合做第一条图像复现线:

  • 输入固定为 1 x 28 x 28
  • 官方划分明确
  • 60000 训练样本,10000 测试样本
  • 是标准十分类任务

简单说,它非常适合先验证:

“没有官方代码时,我能不能把一篇图像分类论文从数据到模型完整跑下来。”


3. 这次我具体做了什么

这条复现线目前主要做了四部分工作。

3.1 数据接入

当前数据入口基于:

  • torchvision.datasets.FashionMNIST

并固定了标准训练测试划分。

3.2 模型实现

这次实现了两个模型:

  • CNN baseline
  • MCNN15 近似实现

其中 MCNN15 这条线是按论文描述做的工程近似版,核心包括:

  • 15 层卷积
  • 固定 3 x 3 卷积核
  • 每层后接 BatchNorm + ReLU
  • 三个卷积组后插入池化

3.3 训练设置

目前这条线已经用到过几类训练口径:

  • 3 epochs 快速验证
  • 10 epochs 延长训练
  • 多随机种子比较
  • 补充的小 batch 敏感性实验

默认数据增强也已经接入,包括:

  • RandomHorizontalFlip
  • RandomAffine

3.4 结果整理

除了代码本身,我还把这条线的实验记录整理到了:

  • experiments/fashion-mnist-mcnn15/
  • data/fashion_mnist/reports/
  • docs/
  • literature/

所以现在它已经不是“一个想法”,而是一条已经跑出结果的复现实验线。


4. 第一轮结果:目标模型能跑通,但没有稳定赢下 baseline

先看第一轮最核心的多 seed 结果。

当前 3 epochs, 3 seeds 的平均结果是:

  • CNN

    • accuracy mean: 0.9001
    • macro-F1 mean: 0.9005
  • MCNN15

    • accuracy mean: 0.8979
    • macro-F1 mean: 0.8972

如果只看最初单次实验,MCNN15 一度看起来略优;但把多个 seed 放在一起之后,结论就变了:

  • MCNN15 不是跑不通
  • MCNN15 也不是完全没有竞争力
  • 但在当前实现和当前训练设置下,它没有稳定超过更简单的 CNN baseline

这件事其实很重要。
因为论文复现里最容易出现的问题,就是看到一次高分就急着下结论。


5. 补充实验:继续训练和小 batch 后,我看到了什么

为了不把结论建立在一组结果上,我又补了两类实验:

  1. 更长训练
  2. 小 batch 敏感性测试

5.1 更长训练并没有扭转结论

在现有结果里,seed=42 的更长训练结果显示:

  • CNN, 10 epochs

    • accuracy 0.9073
    • macro-F1 0.9079
  • MCNN15, 10 epochs

    • accuracy 0.9071
    • macro-F1 0.9062

也就是说,延长训练以后,两者都提升了,但 MCNN15 并没有明显反超。

5.2 小 batch 暴露出 MCNN15 的现实问题

我又专门补了一组 MCNN15 的小 batch 实验:

  • MCNN15, seed=42, batch_size=32, 3 epochs
    • accuracy 0.8589
    • macro-F1 0.8514

和原来的:

  • MCNN15, seed=42, batch_size=128, 3 epochs
    • accuracy 0.9022
    • macro-F1 0.9008

相比,结果掉得很明显。

这说明当前版本的 MCNN15 至少暴露出两个问题:

  • 对训练设置比较敏感
  • 在当前环境里训练成本偏高

尤其是小 batch 下,它不仅没有表现更好,训练速度反而明显更慢。


6. 当前结果图

在这里插入图片描述

图的左侧是首轮 3 epochs, 3 seeds 的平均结果,右侧是为了写结论补的几个辅助实验。

如果只看现在这一步,我会把它理解成:

  • CNN 目前仍然是更稳的实用 baseline
  • MCNN15 已经可以跑通,也有一定竞争力
  • 但它对训练设定更敏感,稳定性和性价比都还不够理想

7. 这条复现线现在算不算“复现成功”

如果严格按论文复现的标准来说,我的答案是:

还不能直接说“完整复现成功”。

原因主要有几个:

  • 当前 MCNN15 还是工程近似实现
  • 还没有证明和论文所有训练细节完全对齐
  • 结果上也没有稳定复现出“目标模型优于 baseline”的趋势
  • 不同训练设定下还存在比较明显的敏感性

但如果换一个更准确的表述,那么这条线已经可以算:

一条成立的 Fashion-MNIST 无源码论文初版复现实验。

这两句话的差别很关键。

我现在更愿意说的是:

  • 复现链路已经跑通
  • 目标模型已经搭起来
  • 初步对比实验已经成立
  • 但距离“严格意义上的论文结果复现”,还需要继续做更系统的验证

8. 我觉得这条线最值得分享的地方

对我来说,这次最有价值的地方不只是某个分数,而是它把下面这个过程完整做出来了:

  1. 选一个公开且合适的图像数据集
  2. 找一篇没有官方代码的论文
  3. 从论文里提取结构和训练细节
  4. 对没写清楚的部分做合理工程补全
  5. 先跑 baseline
  6. 再跑目标模型
  7. 最后补多 seed、补辅助实验、补图表和结论

这其实就是很多人最需要练的能力。

因为现实里的论文复现,很多时候都不是“找到仓库直接跑”,而是:

你得自己把论文翻译成工程实现。


9. 小结

一句话总结当前这条 Fashion-MNIST 复现线:

MCNN15 已经跑通,但在当前实现和当前实验设置下,还没有稳定体现出比简单 CNN baseline 更强的优势。

所以这次更准确的定位不是:

  • 我已经完整复现成功

而是:

  • 我已经完成了一版成立的无源码工程复现实验

需要资料可以私信我哟

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐