基于深度学习的鲜花图像分类系统的设计与实现

1. 项目总览

1.1 背景与动机

现实生活中,鲜花电商、园艺大棚、智能零售柜都需要对花卉品种进行快速识别,以便定价、库存管理或生长环境调控。传统基于形态学的算法(颜色直方图、HOG+SVM 等)在多品种、复杂光照背景下鲁棒性差。利用深度学习卷积神经网络提取大规模数据特征,可显著提升识别精度。

1.2 目标

  • 功能目标:输入任何一张含单朵鲜花的照片,系统输出花卉类别及置信度;支持单张、本地批量、在线 HTTP 以及桌面 GUI 四种使用场景。

  • 性能目标:在 RTX 3060 GPU 上推理分辨率 224×224,平均延迟 ≤ 25 ms;Top-1 准确率 ≥ 95 %(以 5 类为例)。

  • 交付目标:统一的工程仓库 + Docker 镜像 + 开发/运维文档。


2. 整体架构

┌──────────────┐ │ 1. 数据采集 │ └──────┬───────┘ │raw jpg ┌──────────────┐ │ │2. 数据标注/ │ │ utils.split_train_val │ 划分 ├─┘ └──────┬───────┘ │train / val / test ▼ ┌──────────────┐ │3. 模型训练 │ train.py (迁移学习 ResNet-50) └──────┬───────┘ │best.pt ▼ ┌────────────────────────────┐ │4A. 离线推理 infer.py │ ─ jpg/dir/video └────────────────────────────┘ ┌────────────────────────────┐ │4B. FastAPI api.py │ ─ HTTP JSON └────────────────────────────┘ ┌────────────────────────────┐ │4C. PyQt5 GUI (可选) │ ─ 拖拽/摄像头 └────────────────────────────┘

  • 核心思想一次训练,多端复用。ResNet 只需替换全连接层即可适配任意类数,对工程同学友好。


3. 环境配置(详解)

模块 选择 理由
操作系统 Ubuntu 22.04 LTS / Windows 11 宿舍、机房通用
Python 3.10 长期 LTS,以及 Torch 官方 wheel 支持
深度框架 PyTorch 2.1 + torchvision 0.16 生态成熟、预训练模型丰富
Serving FastAPI + Uvicorn 异步高效、类型注解友好,便于二次开发
GUI PyQt5 跨平台、零 Web 背景即可制作 Demo
容器化 Dockerfile 基于 pytorch/pytorch:runtime 便携、一键部署到云端或 Jetson

4. 数据准备与增强

4.1 数据源

  • 自采:手机/相机在自然光、室内光、多角度拍摄各品类(>300 张/类),保证花朵主体居中、无遮挡。

  • 公开:Oxford-102 Flowers、Kaggle Flowers Recognition (~4 K)。

4.2 划分策略

  • 8 : 1 : 1 比例切分(train/val/test);

  • 使用脚本 utils.split_train_val.py,确保每类都涵盖到验证/测试集,减少采样偏差。

4.3 数据增强

操作 参数 目的
随机水平翻转 p=0.5 增加姿态多样性
随机旋转 ±15° 模拟拍摄角度偏差
颜色抖动 亮度±10 %、饱和度±10 % 抵御不同光照
Resize & CenterCrop 224×224 统一尺寸,减少内存

采用 torchvision.transforms

你可能感兴趣的:(人工智能,人工智能,课程设计,python,cnn,鲜花图像分类系统,毕业设计,深度学习)