叶片疾病检测系统部署说明文档
系统概述
叶片疾病检测系统是一个基于Spring Boot和Python机器学习模型的应用程序,用于检测植物叶片疾病。系统由三个主要部分组成:
- 前端:用户界面,允许用户上传图片并查看检测结果
- 后端服务(Spring Boot):处理用户请求、图像上传和数据存储
模型服务(Python):执行叶片疾病检测的机器学习模型
数据库功能说明
在叶片疾病检测系统中,数据库主要用于:
存储检测记录 :每次用户上传图片进行疾病检测时,系统会创建一条检测记录,包含以下信息:
- 检测ID(自动生成)
- 上传图片的路径
- 检测结果(疾病名称)
- 检测置信度(百分比)
- 疾病详细信息(症状、防治方法等)
- 热力图路径(用于可视化显示病变区域)
- 检测时间
- 支持历史记录查询 :用户可以查看过去的所有检测记录,便于跟踪植物健康状况的变化。
错误记录管理 :当检测过程出现错误时,系统会记录错误信息,便于后续排查问题。
系统架构
叶片疾病检测系统 ├── 前端 (HTML/CSS/JavaScript) ├── 后端服务 (Spring Boot) │ └── 数据库 (MySQL) └── 模型服务 (Python)
部署要求
硬件要求
- CPU: 至少2核
- 内存: 至少4GB
存储: 至少10GB可用空间
软件要求
- JDK 11或更高版本
- Maven 3.6或更高版本
- Python 3.8或更高版本
- pip(Python包管理器)
MySQL 8.0或更高版本
部署步骤
1. 数据库配置
安装MySQL:
brew install mysql
启动MySQL服务:
brew services start mysql创建数据库和用户:
CREATE DATABASE leaf_disease_detection; CREATE USER 'leafuser'@'localhost' IDENTIFIED BY 'your_password'; GRANT ALL PRIVILEGES ON leaf_disease_detection.* TO 'leafuser'@'localhost'; FLUSH PRIVILEGES;数据库配置在后端的 application.properties 文件中:
spring.datasource.url=jdbc:mysql://localhost:3306/leaf_disease_detection spring.datasource.username=leafuser spring.datasource.password=your_password spring.jpa.hibernate.ddl-auto=update
2. 模型服务部署
安装Python依赖:
cd /Users/huxueyan/Desktop/leaf-disease-detection/model pip install -r requirements.txt启动模型服务:
cd /Users/huxueyan/Desktop/leaf-disease-detection/model python app.py
模型服务默认在 http://127.0.0.1:3000 上运行。
3. 后端服务部署
编译后端服务:
cd /Users/huxueyan/Desktop/leaf-disease-detection/backend mvn clean package配置上传目录和模型服务URL:
在 application.properties 文件中确保以下配置正确:app.upload.dir=/Users/huxueyan/Desktop/leaf-disease-detection/uploads model.service.url=http://127.0.0.1:3000启动后端服务:
cd /Users/huxueyan/Desktop/leaf-disease-detection/backend java -jar target/backend-0.0.1-SNAPSHOT.jar
后端服务默认在 http://localhost:8080 上运行。
4. 前端部署
前端是静态HTML/CSS/JavaScript文件,可以通过以下方式部署:
直接从文件系统打开:
open /Users/huxueyan/Desktop/leaf-disease-detection/frontend/index.html或者使用简单的HTTP服务器:
cd /Users/huxueyan/Desktop/leaf-disease-detection/frontend python -m http.server 8000
然后在浏览器中访问 http://localhost:8000 。
数据库表结构
系统主要使用 detection_record 表存储检测记录:
CREATE TABLE detection_record (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
image_path VARCHAR(255) NOT NULL,
result VARCHAR(255),
confidence DOUBLE,
details TEXT,
heatmap_path VARCHAR(255),
detection_time DATETIME
);API接口说明
模型服务API
健康检查
- URL: GET /health
- 响应: {"status": "ok"}
预测接口
- URL: POST /predict
- 请求: 表单数据,包含 image 字段(图片文件)
响应: JSON格式
{ "result": "疾病名称", "confidence": 0.95, "details": "疾病详细信息...", "heatmapPath": "/path/to/heatmap.jpg" }后端服务API
上传图片并检测疾病
- URL: POST /api/detect
- 请求: 表单数据,包含 file 字段(图片文件)
响应: JSON格式
{ "id": 1, "imagePath": "/uploads/image.jpg", "result": "疾病名称", "confidence": 95.0, "details": "疾病详细信息...", "heatmapPath": "/uploads/heatmap.jpg", "detectionTime": "2023-05-20T14:30:45" }
获取所有检测记录
- URL: GET /api/records
- 响应: JSON数组,包含所有检测记录
获取单个检测记录
- URL: GET /api/records/{id}
响应: JSON格式的单个检测记录
故障排除
数据库连接问题
- 确保MySQL服务正在运行: brew services list
- 检查数据库连接配置是否正确
- 检查数据库用户是否有足够的权限
- 常见错误: Connection refused 表示MySQL服务未启动
模型服务连接问题
- 确保模型服务正在运行
- 检查 model.service.url 配置是否正确
- 检查防火墙设置是否允许端口3000的连接
图片上传问题
- 确保 app.upload.dir 目录存在且有写入权限
- 检查上传的图片格式是否为JPG或PNG
检查图片大小是否超过限制(5MB)
数据备份与恢复
备份数据库:
mysqldump -u leafuser -p leaf_disease_detection > backup.sql恢复数据库:
mysql -u leafuser -p leaf_disease_detection < backup.sql
叶子疾病检测系统的Java使用和后端部署结构
根据您的项目文件,我可以看到这是一个叶子疾病检测系统,使用了Java Spring Boot作为后端框架。以下是对Java使用和后端部署结构的详细分析:
1. Java技术栈
1.1 核心框架
- Spring Boot 2.7.0 :作为主要的后端框架
Java 11 :项目使用的Java版本
1.2 主要依赖
从 pom.xml 文件中可以看到:
- Spring Boot Starter Web:提供Web应用程序支持
- Apache HttpClient/HttpCore:用于HTTP请求处理
其他Spring Boot相关依赖
2. 后端代码结构
根据 inputFiles.lst 文件,后端代码组织如下:
2.1 主要包结构
com.leafdisease.backend/
├── LeafDiseaseApplication.java (主应用程序入口)
├── controller/
│ └── DetectionController.java (API控制器)
├── service/
│ ├── DetectionService.java (接口)
│ ├── LeafDiseaseService.java (接口)
│ └── impl/
│ └── DetectionServiceImpl.java (实现类)
├── entity/
│ └── DetectionRecord.java (数据实体)
├── model/
│ └── DetectionResult.java (结果模型)
├── config/
│ ├── AppConfig.java (应用配置)
│ ├── ModelServiceConfig.java (模型服务配置)
│ └── WebConfig.java (Web配置)
└── exception/
└── GlobalExceptionHandler.java (全局异常处理)2.2 关键Java类
从 ModelServiceConfig.java 可以看到:
@Configuration
public class ModelServiceConfig {
@Bean
public RestTemplate restTemplate(RestTemplateBuilder builder) {
return builder
.setConnectTimeout(Duration.ofSeconds(60)) // 增加超时时间
.setReadTimeout(Duration.ofSeconds(60))
.build();
}
@Bean
public String modelServiceUrl() {
return "http://localhost:5001"; // 确保这个地址和端口与模型服务匹配
}
}
这表明后端通过REST API与运行在5001端口的模型服务进行通信。
## 3. 数据库配置
从 restart.sh 脚本中可以看到系统使用H2数据库:
H2数据库配置 - 使用文件模式
spring.datasource.url=jdbc:h2:file:/Users/huxueyan/Desktop/leaf-disease-detection/db/leafdb;DB_CLOSE_ON_EXIT=FALSE;AUTO_SERVER=TRUE
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=password
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.jpa.hibernate.ddl-auto=update
启用H2控制台
spring.h2.console.enabled=true
spring.h2.console.path=/h2-console
系统还有专门的 start-h2.sh 脚本用于启动H2数据库服务。
4. 部署结构
4.1 系统组件
- Java后端 :运行在8080端口
- 前端 :运行在8888端口(基于HTML/JS/CSS)
模型服务 :运行在5001端口(Python实现)
4.2 部署脚本
系统提供了多个脚本来管理部署:
- start.sh :启动系统
- restart.sh :重启整个系统,包括前端、后端和模型服务
- shutdown.sh :关闭系统,释放端口
start-h2.sh :单独启动H2数据库
4.3 文件存储
系统配置了上传目录:
# 上传目录配置
app.upload.dir=/Users/huxueyan/Desktop/leaf-disease-detection/uploads
# 允许上传大文件
spring.servlet.multipart.max-file-size=10MB
spring.servlet.multipart.max-request-size=10MB
从 uploads 目录中可以看到,系统存储了大量的叶子图像文件,包括原始图像和热力图(heatmap)。
## 5. 构建与运行
项目使用Maven进行构建,通过Maven Wrapper( mvnw / mvnw.cmd )确保构建环境的一致性。
从 restart.sh 脚本可以看出完整的启动流程:
1. 停止所有现有服务
2. 启动模型服务(Python)
3. 配置数据库连接
4. 启动后端服务(Java Spring Boot)
5. 启动前端服务
## 6. 系统架构图┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 前端 │ │ Java后端 │ │ Python │
│ (8888端口) │<────>│ (8080端口) │<────>│ 模型服务 │
└─────────────┘ └─────────────┘ │ (5001端口) │
│ └─────────────┘
▼
┌─────────────┐
│ H2数据库 │
│ (文件模式) │
└─────────────┘这是一个典型的三层架构应用,前端负责用户界面,Java后端处理业务逻辑和数据持久化,Python模型服务负责叶子疾病的识别和分析。
当前页面是本站的「Google AMP」版。查看和发表评论请点击:完整版 »