登录流程
0
N
2.用户点击上传
花卉识别系统
3.浏览器客户端:接收HTTP Response、解析JSON、更新DOM、保存Cookie
1) Dropout(0.5)
输出:增强后图像
请求预处理:参数验证、权限检查、会话校验、请求限流
保存用户信息
调整为224x224
5) Dropout(0.3)
4. 图像识别与结果展示模块
输入
224x224x3 RGB图像
模型处理
输出
基础模型 (特征提取)
效果对比
数据持久层
2. 两阶段对比表
输入用户名/密码
图像管理处理器
尺寸:224x224x3说明:保留原始信息
识别记录ID(主键)识别时间置信度图片ID(主键)模型ID(主键)花卉类别ID(主键)
3) 瓶颈块 x 17 - 扩展因子:6 - 深度可分离卷积 - 线性瓶颈
3.停止信号?
50
调用数据服务层验证用户凭据
1e-5
3) 结果处理
用户名:abc密码:1234
preprocess_input 归一化
注册信息存储与验证,pickle数据库
转为NumPy数组
1) 图像预处理
训练结束(Epoch 60)
60
阶段二: 微调训练 (Phase 2-Fine-tuning)
Softmax 概率输出
模型推理(前向传播):model.predict()
阶段分界点解冻MobileNetV2 最后50层
用户
业务逻辑层(核心处理)
是
5.停止信号?
1e-3
系统总体架构图
1
花卉类别106类映射
2) 模型推理
4. Flask Server 验证 session
分类头
分类头Dense层
结束
识别结果Top-5展示
学习率
0.0001
训练轮次
45 epochs
批次大小
32
解冻层数
早停监控
学习率下限
1e-7
1.学习率变化曲线 (log scale)
1e-6
hash(username+salt)salt = username
1:1
注册成功
pixel/255.0亮度调整0.8~1.2对比度调整保留色彩信息
格式化输出
文件系统
10
按概率降序排序
否
1.客户端层
原始
开始
用户交互层
层级
组件
版本
用途
前端
HTML5
-
页面结构
CCS3
样式与布局
JavaScript
ES6+
用户交互与AJAX
后端
Python
3.8+
编程语言
Flask
2.x
Web框架
Werkzeug
WSGI工具
AI
TensorFlow
深度学习框架
ts.keras
内置
高级神经网络API
NumPy
数值计算
数据
Pillow
图像处理
pickle
数据序列化
JSON序列化
2.3视图函数处理:验证用户身份、获取请求数据、调用业务逻辑、处理异常、构造响应数据(JSON)
持久化存储
7.训练完成
登录页
模型文件服务
尺寸:224x224x3说明:在保留信息的前提下增加数据多样性
图像尺寸
224x224x3
验证集比例
20%
总训练轮数
60 epochs (15+45)
取Top-5
4) 结果展示
水平翻转随机旋转士30°随机平移±15%随机缩放0.8~1.2x
路由分发
参数配置epoch/batch
6.保存模型
30
检查模型是否已加载
1) 几何变换 (Geometric)
图像预处理:加载图像(PIL)、调整尺寸(224x224)、归一化/255.0、增加批次维度
平移
训练管理服务启动训练、停止训练、状态查询、保存检查点
1.用户选择图片
Flask图形化窗口:接收用户输入、显示图片、展示识别结果、绘制训练曲线
检查用户名唯一性
第1名: 玫瑰(Rose) 98.52%第2名: 月季(Monthly) 8.23%第3名: 蔷薇(Wild Rose) 4.15%第4名: 牡丹(Peony) 1.87%第5名: 芍药(Herbaceous) 0.93%
数据加载、数据增强、模型构建、训练、指标计算、模型保存(与TensorFlow交互)
2. 图像管理与预处理模块
训练线程threading
浏览器 / 前端 JavaScript
POST /api/upload POST /api/admin/train/start POST /api/predict
验证用户存在
/home
1e-8
图片管理服务保存、删除、清空、列表
40
Flask请求处理生命周期
MobileNetV2 特征提取
usr_info.pickle{abc: 'x#a9...'}
API接口层
花卉类别
模型实体
注册流程
映射类别索引 → 中文名称
训练开始
axios / fetch
2.Flask应用服务器(app.py):
20
GET /api/admin/train/status → 训练状态
Flask Server
模型推理MobileNetV2
上传图片jpg/png
POST/api/admin/train/start → 启动训练(管理员)
模型权重.h5文件
模型预测服务加载模型、预处理、预测、后处理
3.浏览器AJAX POST(multipart/form-data)
10.浏览器AJAX回调
2) Conv2D(32) → BN → ReLU6
POST /api/upload → 上传
1.开始训练
3. 深度学习模型训练与配置模块
2. Flask API网关层
管理.py模型定义文件与.h5/.pb权重文件
阶段二: 微调训练
初始学习率
1e-4
调整策略
减半
耐心值
7 epochs
下限
共享配置
PIL加载图片
POST /api/admin/train/stop → 停止训练
阶段一: 冻结训练
5 epochs
POST /api/clear → 清空
ReduceLROnPlateau触发(减半)
花卉类别ID(主键)类别名称拉丁名描述
用户选择图片/点击“识别”按钮
1.浏览器客户端:HTTP Request + Cookie
亮度调整
进入下一阶段
哈希处理
技术
作用原理
效果
L2正则化
惩罚大权重(weight decay)
权重更平滑;降低模型复杂度
Dropout
随机丢弃神经元
减少共适应关系;近似集成多个子网络
Early Stopping
监控验证集性能
防止过度训练;自动找到最佳停止点
数据增强
增加训练样本多样性
提高泛化能力;减少过拟合风险
综合使用后: 验证集准确率提升,过拟合程度显著降低
4) Conv2D(1280) → BN → ReLU6
图像识别处理器
结果处理:映射类别名称、按概率排序、取Top-5结果
接口列表:
ImageDataGeneratorvalidation_split=0.2
文件系统static/uploads
模型训练处理器
8. Flask Server 更新 session image_list
6.Flask Server 验证图片格式
用户数据服务
文件ID(主键)原始文件名存储路径文件大小图片ID(主键)
9. Flask Server 返回 JSON Response
图片ID(主键)文件路径上传时间用户名(主键)
关键参数
阶段一分界点(Epoch 30)
POST /api/predict → 预测
图像数据服务
加载模型、前向传播推理、格式化识别结果
HTTP请求 (JSON)
浏览器
旋转30°
5)全局平均池化2D → 输出特征(1280,)
加载模型权重文件(model.h5)
11.用户显示预览
图片上传点击选择
HTTP响应(JSON)返回客户端
学习率 (log scale)
图片文件
7) 输出:106类概率分布
3) Dropout(0.4)
服务处理层
用户上传图片
阶段一: 冻结训练 (Phase1 - Frozen)
水平翻转
POST/api/delete → 删除
用户名(主键)密码是否管理页创建时间
Epoch
模型是否已加载?
PIL 库
缩放1.2x
7.Flask Server 生成缩略图
获取106维概率向量
返回JSON结果
1. 用户管理与身份验证模块
确认密码
用户认证处理器
模型ID(主键)模型名称模型版本创建时间
4.响应封装与返回
5. Flask Server 保存文件
数据服务层(数据访问与持久化)
expand_dims (batch维度)
图像加载、缓存、预处理
用户实体
前端输入
0.001
15 epochs
优化器
Adam
图片实体
2) 归一化与光度变换 (Photometric)
验证密码正确
创建会话
输入:原始图像
本地文件系统图像访问接口
表示层(用户界面)
3.业务逻辑层