后端测试(行人摔倒检测系统 - 后端文档(1))

后端测试(行人摔倒检测系统 - 后端文档(1))
行人摔倒检测系统 - 后端文档(1)

目录

  1. 项目概述
  2. 技术栈
  3. 目录结构
  4. 核心模块
  5. API 接口文档
  6. 数据库设计
  7. 部署指南
  8. 开发指南

1.项目概述

行人摔倒检测系统后端基于 FastAPI 框架开发,使用 YOLO11 深度学习模型进行目标检测。系统提供 RESTful API 接口,支持图像和视频的上传、检测、下载等功能。

后端测试(行人摔倒检测系统 - 后端文档(1))

主要功能

  • 图像摔倒检测
  • 视频摔倒检测
  • 文件管理(上传、下载、删除)
  • 系统监控(CPU、内存、磁盘)
  • 日志管理
  • 模型管理
  • 数据可视化
  • 大语言模型集成

2.技术栈

核心框架

  • FastAPI: 现代化的 Python Web 框架
  • Uvicorn: ASGI 服务器
  • Pydantic: 数据验证

AI/ML 库

  • Ultralytics: YOLO11 模型库
  • OpenCV: 图像和视频处理

系统工具

  • psutil: 系统监控
  • python-multipart: 文件上传
  • httpx: HTTP 客户端

Python 版本

  • Python 3.9+

3.目录结构

backend/├── images/                     # 图像存储目录│   ├── upload/                # 上传的原始图像│   └── detected/              # 检测结果图像│├── videos/                     # 视频存储目录│   ├── upload/                # 上传的原始视频│   └── detected/              # 检测结果视频│├── models/                     # 模型文件目录│   ├── models_info.json       # 模型信息配置│   └── *.pt                   # YOLO 模型文件│├── logs/                       # 日志文件目录│   └── YYYY.MM.DD.log         # 按日期命名的日志│├── trained/                    # 训练结果目录│   ├── weights/               # 训练权重│   │   └── best.pt           # 最佳模型│   ├── results.csv            # 训练结果│   └── *.png                  # 训练图表│├── routers/                    # API 路由模块│   ├── __init__.py│   ├── images.py              # 图像管理 API│   ├── videos.py              # 视频管理 API│   ├── logs.py                # 日志管理 API│   ├── systems.py             # 系统监控 API│   ├── models.py              # 模型管理 API│   ├── dashboard.py           # 数据可视化 API│   ├── llm.py                 # 大语言模型 API│├── utils/                      # 工具模块│   ├── __init__.py│   ├── logger.py              # 日志配置│   ├── model_manager.py       # 模型管理器│   └── response.py            # 统一响应格式│├── main.py                     # 主入口文件├── requirements.txt            # Python 依赖├── .env.example                # 环境变量示例├── .gitignore                  # Git 忽略配置├── README.md                   # 项目说明└── yolo11n.pt                  # 默认 YOLO 模型

4.核心模块

1. main.py - 主入口文件

应用初始化

from fastapi import FastAPIfrom fastapi.middleware.cors import CORSMiddlewarefrom contextlib import asynccontextmanagerapp = FastAPI(    title="行人摔倒检测系统 API",    description="基于 YOLO11 的行人摔倒检测系统后端接口",    version="1.0.0",    lifespan=lifespan)

CORS 配置

app.add_middleware(    CORSMiddleware,    allow_origins=["*"],           # 允许所有来源    allow_credentials=True,    allow_methods=["*"],           # 允许所有方法    allow_headers=["*"],           # 允许所有头部)

静态文件挂载

app.mount("/static/images/upload", StaticFiles(directory="images/upload"))app.mount("/static/images/detected", StaticFiles(directory="images/detected"))app.mount("/static/videos/upload", StaticFiles(directory="videos/upload"))app.mount("/static/videos/detected", StaticFiles(directory="videos/detected"))

路由注册

app.include_router(images.router, prefix="/api/images", tags=["图像管理"])app.include_router(videos.router, prefix="/api/videos", tags=["视频管理"])app.include_router(logs.router, prefix="/api/logs", tags=["日志管理"])app.include_router(systems.router, prefix="/api/systems", tags=["系统监控"])app.include_router(models.router, prefix="/api/models", tags=["模型管理"])app.include_router(dashboard.router, prefix="/api/dashboard", tags=["仪表板"])

启动配置

if __name__ == "__main__":    uvicorn.run(        "main:app",        host="0.0.0.0",      # 监听所有网络接口        port=10077,          # 端口号        reload=True,         # 开发模式自动重载        log_level="info"     # 日志级别    )

2. utils/logger.py - 日志模块

功能特点

  • 按日期自动创建日志文件
  • 同时输出到文件和控制台
  • UTF-8 编码支持中文
  • 统一的日志格式

日志配置

def setup_logger():    """设置日志配置"""    log_dir = Path("logs")    log_dir.mkdir(parents=True, exist_ok=True)        # 日志文件名:YYYY.MM.DD.log    log_file = log_dir / f"{datetime.now().strftime('%Y.%m.%d')}.log"        logger = logging.getLogger("fall_detection")    logger.setLevel(logging.INFO)        # 文件处理器    file_handler = logging.FileHandler(log_file, encoding='utf-8')        # 控制台处理器    console_handler = logging.StreamHandler(sys.stdout)        # 日志格式    formatter = logging.Formatter(        '%(asctime)s - %(name)s - %(levelname)s - %(message)s',        datefmt='%Y-%m-%d %H:%M:%S'    )        return logger

3. utils/response.py - 统一响应格式

响应结构

{    "code": 200,           # 状态码    "message": "成功",     # 提示信息    "data": {}             # 响应数据}

成功响应

def success_response(data: Any = None, message: str = "成功") -> dict:    return {        "code": 200,        "message": message,        "data": data    }

错误响应

def error_response(message: str = "失败", code: int = 400) -> dict:    return {        "code": code,        "message": message,        "data": None    }

4. utils/model_manager.py - 模型管理器

功能特点

  • 自动加载默认模型
  • 支持模型切换
  • 模型信息持久化
  • 单例模式管理

💻 配套实训环境与动手练习

本文涉及的相关技术指令、开发环境与工具链已内置在边学边练在线实验室中,无需繁琐安装配置,随时在浏览器中实践体验:

文章版权声明:除非注明,否则均为边学边练网络文章,版权归原作者所有

最新文章

热门文章

本栏目文章