图像分类器项目
本项目包含多种基于MobileNet特征提取的图像分类器实现,包括三层神经网络、随机森林和KNN算法。
模型对比
模型 | 算法类型 | 特点 | 适用场景 |
---|---|---|---|
三层神经网络 | 深度学习 | 自定义全连接网络,支持训练监控、早停、正则化 | 需要高精度、可解释性强的场景 |
随机森林 | 集成学习 | 多决策树投票,参数直观可调 | 中等规模数据集,需要模型解释性 |
KNN (原版) | 实例学习 | 简单实现,预测结果平滑处理 | 快速原型开发,小规模数据 |
KNN (完善版) | 实例学习 | 增强阈值控制,支持单类别检测 | 异常检测、单类别分类场景 |
详细说明
三层神经网络分类器
- 使用MobileNet进行特征提取
- 自定义三层全连接网络进行分类
- 功能特点:
- 训练过程可视化(损失/准确率曲线)
- 支持早停、正则化等技巧
- 模型保存/加载功能
- 温度缩放调整预测置信度
随机森林分类器
- 使用MobileNet特征作为输入
- 构建多个决策树进行集成分类
- 可调参数:
- 决策树数量(默认10棵)
- 训练集子集比例(默认70%)
- 特点:
- 训练速度快
- 提供ImageNet标签显示功能
KNN分类器(原版)
- 基于MobileNet特征的K最近邻算法
- 特点:
- 实现简单
- 低通滤波器平滑预测结果
- 支持模型保存/加载
KNN分类器(完善版)
在原版基础上增强:
- 距离阈值控制
- 自适应阈值计算
- 改进的单类别检测
- 更详细的训练反馈
使用指南
- 选择分类器类型
- 上传各类别训练图片
- 调整模型参数(如适用)
- 点击"训练模型"按钮
- 使用摄像头或上传图片进行预测
技术实现
所有分类器均基于以下技术:
- 特征提取:MobileNet (TensorFlow.js)
- 前端框架:纯JavaScript实现
- 数据存储:浏览器本地存储(IndexedDB)
开发建议
- 对于高精度需求:使用三层神经网络
- 对于可解释性需求:使用随机森林
- 对于快速原型开发:使用KNN
- 对于异常检测:使用完善版KNN ·
Description
Languages
Jupyter Notebook
49.5%
JavaScript
18.2%
TypeScript
17.3%
HTML
14.2%
CSS
0.7%