🌸 AI 图像智能识别系统
《Python编程实践》期末课程设计
基于华为 MindSpore 框架的深度学习图像分类应用,融合 网络爬虫、神经网络训练、Flask Web 交互、特征图可视化 的完整 AI 项目。
🎯 项目亮点
| 维度 | 体现 |
|---|---|
| 人工智能 | MindSpore CNN 训练、特征图可视化、混淆矩阵分析 |
| 网络爬虫 | Bing 图片搜索数据采集、图片去重与验证 |
| Web 交互 | Flask 后端 + 现代前端界面、拖拽上传、实时推理 |
| 可解释性 | 4层卷积特征图展示,揭示 AI "看到了什么" |
📁 项目结构
ai_image_classifier/
├── crawler.py # 🕷️ 数据采集模块(爬虫 + 公开数据集)
├── train.py # 🧠 MindSpore CNN 训练模块(AI 核心)
├── feature_vis.py # 🔬 特征图可视化模块
├── app.py # 🌐 Flask Web 应用
├── templates/
│ └── index.html # 🎨 前端页面
├── static/
│ ├── style.css # 样式表
│ ├── app.js # 前端交互逻辑
│ ├── uploads/ # 用户上传图片
│ └── results/ # 训练曲线、混淆矩阵
├── data/ # 数据集目录
├── models/ # 训练好的模型
└── requirements.txt # 依赖清单
🚀 使用步骤
步骤 1:安装依赖
pip install -r requirements.txt
步骤 2:采集数据
python crawler.py
自动下载花卉数据集(5类,约3670张)。如果下载失败会自动切换为 Bing 爬虫模式。
步骤 3:训练模型
python train.py
训练完成后会在 models/ 保存模型,在 static/results/ 生成训练曲线和混淆矩阵。
步骤 4:启动 Web 应用
python app.py
浏览器打开 http://localhost:5000,上传图片即可体验 AI 识别。
步骤 5(可选):特征图可视化
python feature_vis.py
生成各层卷积特征图,直观展示 AI 的视觉认知过程。
🧠 技术详解
CNN 网络架构
输入 (3×224×224)
↓
Conv1: 32@3×3 → BN → ReLU → MaxPool(2×2) [边缘/颜色检测]
↓
Conv2: 64@3×3 → BN → ReLU → MaxPool(2×2) [纹理/形状检测]
↓
Conv3: 128@3×3 → BN → ReLU → MaxPool(2×2) [花瓣/局部特征]
↓
Conv4: 256@3×3 → BN → ReLU → MaxPool(2×2) [花朵/语义理解]
↓
Flatten → FC(512) → Dropout(0.5) → FC(5) [分类决策]
数据增强策略
- 随机裁剪(RandomResizedCrop)
- 随机水平翻转(RandomHorizontalFlip)
- 颜色抖动(RandomColorAdjust:亮度/对比度/饱和度/色相)
评估指标
- 混淆矩阵(Confusion Matrix)
- 精确率/召回率/F1-score(Classification Report)
- Loss/Accuracy 训练曲线
📊 课程报告对应
| 报告章节 | 对应模块 |
|---|---|
| 一、选题背景 | 为什么选择花卉识别 + 爬虫 + AI |
| 二、具体内容 | 项目概述(数据→训练→Web) |
| 三、整体设计 | 技术架构图 + 模块划分 |
| 四、详细设计与实现 | 爬虫实现 + CNN设计 + Flask + 前端 |
| 五、结果展示与分析 | 训练曲线截图 + 混淆矩阵 + Web演示截图 |
| 六、团队组成与分工 | 队员1负责XX,队员2负责XX |
| 七、总结与心得 | 收获、难点、改进方向 |
| 八、参考文献 | MindSpore官方文档等 |
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support