# ensemble_knn_faiss_cat_dog_recognition **Repository Path**: liu-yi-ch-en/ensemble_knn_faiss_cat_dog_recognition ## Basic Information - **Project Name**: ensemble_knn_faiss_cat_dog_recognition - **Description**: 使用集成学习优化KNN 算法识别猫狗 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-10-22 - **Last Updated**: 2025-10-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 猫狗识别集成学习系统 基于集成学习(Ensemble Learning)和多种机器学习算法的猫狗图像分类系统。 ## 项目简介 本项目实现了10种不同的集成学习算法,包括投票法(Voting)、装袋法(Bagging)、提升法(Boosting)和堆叠法(Stacking)等,通过对比分析选出最佳模型,实现高效的猫狗图像识别。 ## 主要特性 - 🎯 多算法对比:实现并对比10种集成学习算法 - 🚀 自动选择最佳模型:根据准确率自动保存最优模型 - 🌐 Web界面:提供友好的图像上传和识别界面 - 📊 性能可视化:展示训练时间、测试时间和准确率对比 - ⚡ 高效特征提取:使用图像展平方法快速提取特征 ## 项目结构 ``` ensemble_knn_faiss_cat_dog_recognition/ ├── train_ensemble.py # 集成模型训练脚本 ├── ensemble_webapp.py # Web应用程序 ├── train/ # 训练数据集 │ ├── cat.*.jpg │ └── dog.*.jpg ├── test/ # 测试数据集 │ ├── cat.*.jpg │ └── dog.*.jpg ├── models/ # 保存的模型文件 │ ├── vgg16_knn_model.pkl │ ├── resnet50_knn_model.pkl │ └── mobilenetv2_knn_model.pkl ├── train_predict.png # 训练结果可视化 ├── cat.png # 测试样例(猫) └── dog.png # 测试样例(狗) ``` ## 安装依赖 ```bash pip install tensorflow opencv-python numpy scikit-learn flask tqdm pillow matplotlib seaborn ``` ## 使用方法 ### 1. 训练集成模型 运行训练脚本,生成三个KNN分类器模型: ```bash python train_ensemble.py ``` 训练完成后会生成: - 三个模型文件保存在 `models/` 目录 - 性能对比图保存为 `train_predict.png` **训练结果示例:** ![训练结果](train_predict.png) 训练结果展示了三个模型的性能对比,包括准确率、精确率、召回率和F1分数,以及混淆矩阵的可视化。 ### 2. 启动Web应用 ```bash python ensemble_webapp.py ``` 打开浏览器访问 `http://localhost:5000` ### 3. 使用Web界面识别 1. 点击"选择文件"按钮上传猫或狗的图片 2. 点击"识别"按钮 3. 查看识别结果和置信度 **测试样例:** | 猫图片识别 | 狗图片识别 | |:---:|:---:| | ![猫测试](cat.png) | ![狗测试](dog.png) | ## 技术栈 - **深度学习框架**: TensorFlow/Keras - **特征提取**: VGG16, ResNet50, MobileNetV2 (ImageNet预训练) - **分类器**: K近邻(KNN) - **Web框架**: Flask - **数据处理**: NumPy, OpenCV - **可视化**: Matplotlib, Seaborn ## 模型架构 ``` 输入图片 ↓ 特征提取层(并行) ├── VGG16 → KNN分类器 → 预测1 ├── ResNet50 → KNN分类器 → 预测2 └── MobileNetV2 → KNN分类器 → 预测3 ↓ 投票集成(Soft Voting) ↓ 最终预测结果 ``` ## 性能指标 模型在测试集上的表现(以实际运行结果为准): - **VGG16**: 准确率 ~XX%, F1-Score ~XX% - **ResNet50**: 准确率 ~XX%, F1-Score ~XX% - **MobileNetV2**: 准确率 ~XX%, F1-Score ~XX% - **集成模型**: 准确率 ~XX%, F1-Score ~XX% ## 注意事项 1. 首次运行训练脚本时会下载预训练模型,需要网络连接 2. 确保 `train/` 和 `test/` 目录中有足够的训练和测试数据 3. 图片命名格式:`cat.*.jpg` 或 `dog.*.jpg` 4. 推荐使用GPU加速训练过程 ## 个人信息 - 学号: 202352320122 - 年级: 2023 - 专业: 智能科学与技术 - 班级: 1班