面向 50 类服饰的离线识别应用。提供训练脚本、模型导出与 Android 端集成,主打“简约、稳定、可落地”。
- 应用名:服饰识别
- 核心特性:
- 50 类服饰识别、离线 ONNX 推理、Material 3 现代化界面
- 设置即时生效:语言切换(中文/English)、性能优先(多线程)、主题模式(跟随系统/浅色/深色)、结果展示密度、默认摄像头选择
- 相机功能:前后摄切换、从相册选择图片、手势对焦(双指缩放、双击对焦)
- 历史记录:结果保存、收藏功能、筛选(类别/置信度/时间)、搜索、分享(文字/图片)
- 其他:保存图片到相册、页面切换动画、历史记录管理
- 训练与模型:PyTorch 训练 → 导出 ONNX,应用内使用 ONNX Runtime 推理
Clothing-Classification/
├── DeepFashionClassifier/ # Android 应用(应用名:服饰识别)
│ ├── app/src/main/java/com/deepfashion/classifier/
│ │ ├── MainActivity.kt # 首页
│ │ ├── CameraActivity.kt # 拍摄页(底部:历史 | 相册 | 拍照 | 翻转)
│ │ ├── ResultActivity.kt # 结果页(保存到历史)
│ │ ├── HistoryActivity.kt # 历史列表
│ │ ├── SettingsActivity.kt # 设置(即时生效)
│ │ └── DeepFashionClassifier.kt # ONNX 推理
│ ├── app/src/main/assets/models/deepfashion_classifier.onnx
│ └── build.gradle
├── scripts/
│ ├── train_deepfashion_complete.py # 训练(断点续训、过拟合防护)
│ ├── update_model_for_android.py # .pth → ONNX 并复制到 app
│ ├── generate_launcher_icons.py # 从 image.png 生成图标
│ └── convert_* # 相关转换工具
├── image.png # 图标源文件
├── deepfashion_best_model.pth # 最佳模型
├── deepfashion_checkpoint_latest.pth # 训练断点
├── TRAINING_STATUS.md # 训练/继续说明
└── README.md
- 导入工程:Android Studio 打开
DeepFashionClassifier - 放置模型:
app/src/main/assets/models/deepfashion_classifier.onnx - 构建安装:
cd "DeepFashionClassifier"
./gradlew.bat assembleDebug- 可选图标生成:
python scripts/generate_launcher_icons.py --scale 0.60- 训练:
python scripts/train_deepfashion_complete.py(断点续训、日志与检查点保存至当前目录) - 导出并更新 App:
python scripts/update_model_for_android.py
pip install torch torchvision onnx onnxruntime pillow- 设置:语言/性能优先,修改后立即生效(推理前自动重建 Session)
- 历史:结果页"保存结果",首页/拍摄页进入历史查看
将PyTorch模型转换为ONNX格式:
DeepFashion分类器转换
python scripts/update_model_for_android.py- 打开 Android Studio
- 导入
DeepFashionClassifier目录 - 确保 ONNX 模型位于
app/src/main/assets/models/deepfashion_classifier.onnx - 生成/替换启动图标(可选):
python scripts/generate_launcher_icons.py --scale 0.75
- 构建与安装:
cd "DeepFashionClassifier" .\gradlew.bat assembleDebug
- 应用内功能:
- 首页现代卡片、右上角直接"设置"按钮、查看历史
- 拍摄页极简 UI、从相册选择/翻转摄像头/手势对焦、结果页保存到历史
- 历史记录支持分享文字和图片卡片
- 设置项即时生效:语言(中文/English)、性能优先(多线程)
- 图片去重:使用感知哈希算法去除重复图片
- 格式统一:将所有图片转换为JPEG格式
- 数据增强:随机裁剪、翻转、颜色调整等
- 骨干网络:ResNet18
- 迁移学习:使用ImageNet预训练权重
- 分类头:50类分类输出层
- PyTorch → ONNX:使用
torch.onnx.export() - ONNX Runtime:应用内使用 ONNX Runtime 进行推理
- 优化:多线程推理支持,性能优先设置
- 50 分类支持:面向 50 类服饰识别
- 实时分类:使用相机实时识别服装类型
- 相册选择:支持从相册选择图片进行识别
- 中文界面:完全中文化的用户体验
- Material Design 3:现代化 UI 设计
- 权限管理:相机和存储权限处理
- 异步处理:后台模型推理,流畅用户体验
- 手势操作:双指缩放、双击对焦(黄色对焦框)
- 历史记录:结果页一键保存,首页可查看
- 历史分享:支持分享文字信息和卡片图片(不保存到设备)
- 设置:语言切换/性能优先,均即时生效
- 训练集:14,000张图片,50个类别
- 验证集:2,000张图片,50个类别
- 测试集:4,000张图片,50个类别
- 总规模:20,000张图片
DeepFashion数据集包含50个细分类别,包括:
- 上衣类:风衣、西装外套、女式衬衫、飞行员夹克、纽扣衬衫、开襟毛衣、法兰绒衬衫、露背上衣、亨利衫、连帽衫、夹克、运动衫、派克大衣、双排扣外套、斗篷、毛衣、背心、T恤、上衣、高领毛衣
- 下装类:七分裤、休闲裤、短裤、宽松裤、牛仔裤、紧身牛仔裤、马裤、慢跑裤、紧身裤、背带裤、长裤、长袍、裙子、运动裤等
- 连身装类:长袍、连衣裙、连体衣等
完整50类:Anorak, Blazer, Blouse, Bomber, Button-Down, Cardigan, Flannel, Halter, Henley, Hoodie, Jacket, Jersey, Parka, Peacoat, Poncho, Sweater, Tank, Tee, Top, Turtleneck, Capris, Chinos, Culottes, Cutoffs, Gauchos, Jeans, Jeggings, Jodhpurs, Joggers, Leggings, Sarong, Shorts, Skirt, Sweatpants, Sweatshorts, Trunks, Caftan, Cape, Coat, Coverup, Dress, Jumpsuit, Kaftan, Kimono, Nightdress, Onesie, Robe, Romper, Shirtdress, Sundress
- PyTorch:模型训练和推理
- ResNet18:DeepFashion分类器的骨干网络
- 迁移学习:使用ImageNet预训练权重
- ONNX Runtime:移动端模型推理(已替代 TFLite)
- Android:原生Android应用
- Kotlin:Android开发语言
- PIL/Pillow:图像处理
- OpenCV:计算机视觉
- NumPy:数值计算
PyTorch模型 (.pth)
↓ torch.onnx.export()
ONNX模型 (.onnx)
↓ 部署到Android
ONNX Runtime 推理
- DeepFashion模型: 成功转换为 ONNX 格式
- Android部署: 模型已部署到Android应用
- 功能验证: DeepFashion 50分类模型测试通过
- 性能优化: 支持多线程推理,设置即时生效
- 量化:FP32 → INT8量化
- 剪枝:移除冗余参数
- 知识蒸馏:小模型学习大模型
- 异步推理:避免UI阻塞
- 模型缓存:减少加载时间
- 内存管理:优化内存使用
- 代码优化:简化调试信息,减少日志输出
- 训练完成: 32/100 epochs(Early Stopping触发)
- 最佳验证准确率: 61.55%(Epoch 22)
- 最终训练准确率: 74.29% (Loss: 1.5063)
- 最终验证准确率: 60.40% (Loss: 1.9554)
- 训练-验证差距: 13.89%(显著改善,之前的过拟合模型差距>27%)
- 状态: ✅ 训练完成,模型已转换为ONNX并部署到Android应用
- ✅ 增强数据增强(随机旋转、颜色变换、仿射变换)
- ✅ 增强正则化(Dropout 0.6、权重衰减 2e-4、标签平滑 0.1)
- ✅ Early Stopping(连续10个epoch无提升自动停止)
- ✅ GPU加速训练(RTX 4060,批次大小48,混合精度训练)
- 验证准确率:61.55%(最佳),较之前的60.90%略有提升
- 过拟合情况显著改善:训练-验证差距从27%+降低到14%
- 模型已部署:ONNX模型已更新到Android应用
- 模型准确率仍有提升空间:当前验证准确率61.55%,可继续优化(如调整超参数、尝试不同架构等)
- Android权限:需要手动授权相机和存储权限
- 样本不平衡:DeepFashion数据集中部分类别样本数量极少,可能影响识别准确率
-
多结果展示
- Top-3 结果展示与切换(显示前3个最可能的分类结果,支持快速切换查看)
- 结果置信度可视化(进度条或图表展示各分类的置信度对比)
-
批量识别
- 从相册多选图片进行批量识别
- 批量识别结果列表展示(支持单个查看详情)
- 批量保存到历史记录
-
类别信息
- 类别详情说明(离线缓存类别信息,支持关键词检索)
- 类别属性展示(如适用场景、季节、风格等)
-
图像处理增强
- 结果页支持图像裁剪区域预览与重识别
- 图像增强选项(亮度、对比度、锐化等基础调整)
-
批量操作
- 批量删除功能(多选模式,支持全选/反选)
- 批量导出(支持导出为JSONL/CSV格式)
- 按日期范围批量操作
-
分享增强
- 历史记录水印/署名(分享图片时可选择添加应用标识)
- 分享格式优化(支持长图拼接、详情卡片等)
- 拍摄辅助
- 网格参考线开关(三分线/网格线,辅助构图)
- 快门音开关(静音拍摄选项)
- 连拍模式(自动保留置信度最高的一张,或全部保存)
- 分辨率选择(支持不同拍摄质量,平衡速度与精度)
-
引导与帮助
- 首次启动引导(快速上手教程,核心功能演示)
- 应用内更新日志(本地查看版本更新记录)
- 帮助中心(常见问题与使用技巧)
-
界面优化
- 深色模式视觉细节优化(进度条、分隔线、阴影对比度调整)
- 动画效果优化(更流畅的过渡动画)
- 手势操作提示(首次使用时引导手势功能)
-
性能提升
- ONNX Runtime 线程策略自适应(根据设备CPU核心配置自动调整)
- 异步 I/O 优化(历史记录写入不阻塞主线程)
- 内存优化(减少峰值内存占用,优化大图处理)
- 推理缓存机制(相似图片复用识别结果)
-
体积控制
- 资源裁剪(进一步压缩图片和资源文件)
- 控制 APK 体积 ≤ 25 MB
- 模型优化
- 继续训练 DeepFashion 50 类模型(采用早停、余弦退火、Mixup/CutMix等技术)
- 类别不均衡处理(重采样策略优化,提升少数类别识别率)
- 指标监控扩展(F1分数、Top-3/Top-5准确率等)
- ONNX模型更新与回归测试(确保模型转换一致性)
- 模型量化优化(INT8量化以减小体积、提升速度)
-
错误处理
- 崩溃捕获与本地日志(设备内记录,不上传)
- 异常处理优化(更友好的错误提示,提供解决建议)
- 网络异常处理(如有在线功能时)
-
测试与验证
- UI自动化测试(启动/拍摄/保存/历史/设置等核心流程)
- 多语言完整性检查(中英文资源覆盖率100%)
- 多设备兼容性测试(不同Android版本和屏幕尺寸)
- 性能测试(内存占用、CPU使用率、识别速度基准测试)
- 多 ABI 构建变体(arm64/armeabi-v7a),支持更多设备
- 无障碍功能支持(内容描述、焦点顺序优化)
- 分享功能增强(支持更多分享渠道和格式)
- 云端备份(用户可选,本地优先)
如果这个项目对您有帮助,欢迎扫码支持:
MIT License
