深度嵌入聚类 (DEC) 算法实现,详见 dec.py
🚀 本项目的工作包括:
- 用 DINOv2 模型生成图片 Embeddings
- 用 FastAPI 开发 DINOv2 批量推理服务,支持分 batch 和 模型结果归一化
- 训练 DEC 模型的三阶段:训练降噪自编码器、初始化聚类中心、训练 DEC
- 开发集成的 DEC 训练框架,支持训算推存,详见 dec.py
- 在我的数据集上,对比 DEC 与传统聚类算法的效果:与 K-Means 接近
- 介绍 DEC 的创新点:软分配策略和目标分布优化
- 在线学习探索:尝试两种思路,对 DEC 模型做小幅度的增量更新
- 从 huggingface 下载模型文件
- 计算图片 Embedding
- 批量计算图片 Embedding
- 在 CPU 上批量推理
- 在 GPU 上批量推理
- 批量推理服务化
- 启动服务端
- 运行客户端
- 下载 CIFAR-100 数据集
- 图片转 Embedding
- 加载 Embedding 数据
- 训练 DEC 模型
- 初始化配置:初始化设备;定义评估指标函数
- 定义降噪自编码器:支持加入掩蔽噪声或高斯噪声;添加了 L2 归一化
- 定义主要组件:target_distribution, ClusterAssignment, DEC
- 阶段一:训练降噪自编码器
- 阶段二:初始化聚类中心
- 阶段三:训练 DEC
- 保存最优模型
- 计算指标
- 推理新数据
- 评估
- 加载数据
- 评估函数
- K-means 算法
- DBSCAN 算法
- 结论
- 模型的创新点
- 聚类中心初始化
- 软分配策略
- 目标分布优化
- 模型训练
- 训练阶段
- 聚类标签匹配问题(匈牙利算法)
- 模型推理和优化
- 模型推理
- 模型优化
- 初次训练 DEC 模型
- 生成新样本
- 增量训练
- 原模型在新数据集上的效果
- 思路一:移动聚类中心
- 思路二:重训练拟合目标分布的阶段