1. 这次复现做的是什么这次我没有换数据集而是在原来的Fashion-MNIST复现线上继续往前走了一步。上一条线我做的是CNN baselineMCNN15这次我想验证的是如果把模型换成更新一点的Vision Transformer在同一个小型公开图像数据集上会不会更容易体现出优势。当前选择的论文是Enhancing Fashion Classification with Vision Transformer (ViT) and Developing Recommendation Fashion Systems Using DINOv2这里我没有一上来就碰论文里的推荐系统扩展而是先把最核心、也最适合复现起步的分类分支单独拿出来做。2. 为什么继续用 Fashion-MNIST这条线我依然保留Fashion-MNIST原因其实很简单数据集公开十分类任务边界清楚图片尺寸小适合个人设备做迭代可以直接和已有MCNN15结果做横向比较也就是说这次的变量不是“换一个更大的数据集”而是在同一个 benchmark 上把模型从传统卷积推进到更现代一点的ViT。这对复现来说很有意义因为它更容易看清是模型变了还是训练策略变了或者只是工程代价变高了3. 这次我具体做了什么这条ViT复现线目前主要做了三部分工作。3.1 保留已有 Fashion-MNIST 数据入口数据入口没有重造继续使用torchvision.datasets.FashionMNIST这样做的好处是保持和上一条MCNN15线的数据口径一致更方便比较模型而不是被数据处理差异干扰3.2 新增 ViT 模型线这次新增的是ViT而不是继续只在卷积模型内部做小修小补。但和很多“直接贴个 ViT 名字就开跑”的做法不一样这次我还额外做了一个工程判断不自己手写一套 transformer 结构直接切到timm3.3 把 timm 引进来最后我把实现底座换成了timm这里面最重要的几个原因是它有统一的视觉模型工厂接口可以方便切换不同ViT / DeiT / 其他变体不用自己维护很多 transformer 细节后面如果继续升级到更强模型改动更小换句话说这次不只是“跑一个新模型”而是把这条线的工程底座也升级了。4. 为什么我最后没有坚持用标准 224 输入理论上说很多标准ViT都是按224 x 224输入来设计的。所以一开始我也试了比较标准的timm ViT口径。但实际一跑很快就碰到一个现实问题在本地环境里这个代价太高了。主要问题不是代码不通而是全量Fashion-MNISTViT224 x 224resize放在一起以后首轮正式实验的训练成本明显偏大不适合作为这条线的第一轮复现口径。所以后面我做了一个比较务实的调整继续保留timm的ViT路线但把输入改成64 x 64这个调整的意义是保住ViT模型家族和后续扩展能力同时把本地训练成本压到可以接受的范围这其实也是论文复现里很典型的一步不是所有标准论文设置都适合原封不动搬到本地第一轮实验里。5. 这次用 timm 有什么优势这一点我觉得很值得单独讲。很多人做论文复现容易陷入一个误区为了“显得是自己实现”把所有结构都手写一遍。但对于ViT这种模型我这次更倾向于直接用成熟库原因是5.1 模型切换成本低通过统一接口可以比较方便地切换ViTDeiT其他视觉 transformer 变体5.2 实现更成熟比起自己维护一套本地 transformer 模块timm的实现更稳也更省掉很多低价值 bug。5.3 更适合后续升级如果后面我还想试预训练权重更强 backbone其他 transformer 族模型改动会很小。5.4 更适合写成持续更新的复现线这条Fashion-MNIST线如果后面继续写文章不会只停留在MCNN15或一个单独ViT模型上。有了timm后面很自然就能扩成CNNMCNN15ViTDeiT这种连续比较线。6. 第一轮正式结果ViT 并没有短训即赢先看最关键的一轮正式对比。当前可用的第一轮结果是CNN,5 epochsaccuracy0.8885macro-F10.8901ViT,5 epochs,64 x 64accuracy0.8162macro-F10.8063这个结果说明一件很现实的事ViT并不会因为“模型更新”就自动在短训练里赢过简单CNN。这点我觉得非常值得讲因为很多时候大家默认会有一个印象架构更新模型更现代结果就应该更高但在Fashion-MNIST这种小型图像任务上事情没有这么简单。7. 更长训练 调度器之后ViT 确实有提升为了确认问题是不是“训练还不够”我又补了一轮更正式的ViTViT,10 epochs,64 x 64,cosine scheduleraccuracy0.8544macro-F10.8515和前一轮相比ViT 5 epochsaccuracy0.8162ViT 10 epochs cosineaccuracy0.8544这个提升幅度其实已经很明显了。所以这次更准确的判断不是ViT 不行而是ViT对训练时长和调度策略更敏感在小数据集上它没有像小型CNN那样容易短时间起效但即便如此这一轮它还是没有超过CNN 5 epochs 0.8885也就是说当前最客观的结论仍然是ViT已经能跑通也能通过更合理的训练策略显著提升结果但在这版本地实现和当前预算下还没有打过简单CNN baseline。下面这张图是结果图8. 这条线现在最有价值的地方是什么对我来说这次最值得分享的不是“我又用了一个新模型”而是下面这个过程在同一个数据集上延续复现线从卷积模型升级到ViT引入timm作为更成熟的工程底座发现标准224口径本地代价过高调整到64 x 64的务实版本通过更长训练和cosine scheduler验证ViT的提升空间最后得到一个不夸张、但很真实的结论这比一句“我跑了 ViT”更有参考价值。因为真正做论文复现时很多时候最关键的不是模型名字而是你怎么做工程折中你怎么判断实验是否成立你怎么区分“模型不行”和“训练没给够”9. 这条 ViT 线现在能不能算成功如果问我能不能说“我已经成功复现出 ViT 优于 CNN 的结论”那答案还是不能。因为当前证据还不支持这个说法。但如果换个更准确的表述那么这条线已经可以算一条成立的Fashion-MNIST ViT无源码论文初版复现实验。现在能确定的事情包括ViT链路已经跑通timm工程底座已经接入224口径在本地第一轮实验里代价过高64 x 64务实口径可以正式训练更长训练和调度器对ViT有明显帮助但当前结果还没有超过简单CNN所以它现在的定位应该是新模型复现线已经建立而不是新模型已经证明更强10. 小结一句话总结这次Fashion-MNIST ViT复现模型确实更新了复现链路也已经成立但在当前本地可承受的训练设置下ViT还没有立刻赢过简单CNN。不过这条线最有价值的地方也恰恰在这里。它提醒我一件很重要的事更现代的模型不等于在小数据集上短训就一定更强。如果你也想做一条“数据集不变、模型逐步升级”的论文复现线Fashion-MNIST确实是一个很合适的起点。它的价值不只是训练快而是它能把很多模型与训练策略之间的真实差异暴露得很直接。需要资料的私信我哟