欢迎光临
我们一直在努力

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

目录

  • 项目概述

  • 技术栈

  • 目录结构

  • 核心模块

  • API 接口文档

  • 数据库设计

  • 部署指南

  • 开发指南


  • 1.项目概述

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

    主要功能

    • 图像摔倒检测

    • 视频摔倒检测

    • 文件管理(上传、下载、删除)

    • 系统监控(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 FastAPI
    from fastapi.middleware.cors import CORSMiddleware
    from contextlib import asynccontextmanager

    app = 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 – 模型管理器

    功能特点
    • 自动加载默认模型

    • 支持模型切换

    • 模型信息持久化

    • 单例模式管理


    赞(0)
    未经允许不得转载:171主机测评 » 行人摔倒检测系统 - 后端文档(1)
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址