维基艺术图片: 构建模型 (3)
完整的项目地址: https://github.com/buxuele/wiki_art
1. 其他地方
todo
- 此时最大的问题, 即,爬虫,为什么一直在搜集网页内容,但是就是下载图片??令人蛋疼!
- 其实我觉得,前面爬虫有问题, 应该使用 uuid 来命名!!!
- 文件名太长了,导致匹配出错。
做的过程
聊天记录:https://aistudio.google.com/prompts/1F2vFWo3KMz5ZQ-TTxJ5dPWlf2mJa7qbI
我决定,先不加 元信息。
直接使用 图片本身来训练。
先试试看效果。
整体思路和计划
- 爬虫,爬取 大概 1000 张图片,并保存到本地。
- 标注,即删掉不喜欢的图片
- 训练模型。
人人都在追着 AI 跑。
如果赶不上火车,那么蹬着我的摩托车,走小路,走斜坡, 照样能跑。
scrapy 文件夹的名称,
外层文件夹:可以改名,但改了要同步更新 scrapy.cfg 的 project 字段。
内层文件夹:不建议改名,因为 Scrapy 默认按模块路径加载,容易出错。
对比: 小模型 vs 大模型
- 你让高中生(小模型)做100套题(多训练几轮),他能把高中的知识点掌握得滚瓜烂熟,考到很高的分数,比如95分。
- 你让大学教授(大模型)也来做这套题,他可能只看了几眼(少训练几轮),就已经理解了背后的所有原理,轻松考到99分。
2. 过程记录
在完成了数据标注,并准备好good
和bad
两个分类明确的图片文件夹后,我们进入了项目最核心的阶段:选择、训练并评估一个能理解我个人审美的AI模型。
一、 初步尝试与遇到的挑战
我们最初的计划是采用一个经典且强大的预训练模型,如eva02_base
,来进行微调(Fine-tuning)。在训练过程中,我们遇到了几个典型的机器学习问题:
-
数据不平衡:我“喜欢”的图片数量(正样本)远少于“不喜欢”的图片(负样本)。为了解决这个问题,我们在损失函数中引入了“类别权重(Class Weights)”,在算法层面给予了少数类(
good
)更高的“话语权”,从而迫使模型更努力地去学习如何识别我喜欢的图片。 -
过拟合(Overfitting):在训练的早期阶段,模型的验证集准确率一度达到一个高峰,但随着训练的继续,准确率反而开始下降。这表明模型已经学完了普适的规律,开始去记忆训练集里那些偶然的、不具推广性的细节。我们通过引入“早停(Early Stopping)”机制——即在验证集性能不再提升时自动停止训练——来确保我们能保存下模型性能最好的那个状态。
-
硬件瓶颈:在探索更强大的模型时,我们发现,像
vit_large_patch14_..._dinov2
这样的“巨兽级”模型,即使只是很小的批量大小(Batch Size),它所需要的显存也超出了我12G显卡的承受极限。这让我们意识到,选择模型不能只看理论性能,还必须考虑硬件资源的现实约束。
二、 核心任务:模型选型与对比
为了找到最适合我们任务的“引擎”,我决定进行一次“模型擂台赛”,系统性地对比几个备选模型的实际表现。我从Hugging Face的timm
模型库中,挑选了几个备受推崇的、基于Vision Transformer(ViT)架构的模型。
- timm模型库地址:https://huggingface.co/collections/timm/timm-backbones-6568c5b32f335c33707407f8
我的对比主要围绕两个核心模型展开:
facebook/dino-vitb16
(DINO Base):作为自监督学习的开创性工作,它对图像的结构和语义有深刻的理解。timm/vit_base_patch14_dinov2.lvd142m
(DINOv2 Base):作为DINO的“究极进化版”,它在更庞大、更多样化的数据集上进行了预训练,理论上拥有更强的泛化能力。
我为这两个模型分别编写了独立的、公平的训练脚本,在完全相同的硬件、数据和训练参数下,对它们进行了微调。
三、 最终选择:vit_base_patch14_dinov2.lvd142m
经过多轮的训练和评估,实验结果清晰地表明:
timm/vit_base_patch14_dinov2.lvd142m
是本次选型中表现最好的模型。
- 性能表现:在最终的测试中,DINOv2 Base模型的验证集准确率最高达到了近80%,显著优于DINO Base模型(约74%)。这证明了它更强大的预训练权重和更先进的架构,确实转化为了在我的个人审美分类任务上更强的实际性能。
- 资源平衡:虽然它对显存的占用不小(在
BATCH_SIZE=8
时,占用了我12G显存中的9G),但它依然在我的硬件能力范围之内,实现了性能与资源消耗的最佳平衡。 - 社区认可度:它在Hugging Face上每月超过百万的下载量,也从侧面印证了其作为顶级视觉特征提取器的行业地位。
因此,我最终决定,将timm/vit_base_patch14_dinov2.lvd142m
作为我们整个项目的基石模型,后续所有的预测和应用,都将基于这个经过我个人数据微调过的、强大的AI大脑来展开。