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

目录

  1. 项目概述

  2. 技术栈

  3. 目录结构

  4. 核心模块

  5. [API 接口文档](#API 接口文档)

  6. 数据库设计

  7. 部署指南

  8. 开发指南


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

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

  • 支持模型切换

  • 模型信息持久化

  • 单例模式管理


相关推荐
九.九5 小时前
ops-transformer:AI 处理器上的高性能 Transformer 算子库
人工智能·深度学习·transformer
春日见5 小时前
拉取与合并:如何让个人分支既包含你昨天的修改,也包含 develop 最新更新
大数据·人工智能·深度学习·elasticsearch·搜索引擎
恋猫de小郭5 小时前
AI 在提高你工作效率的同时,也一直在增加你的疲惫和焦虑
前端·人工智能·ai编程
deephub5 小时前
Agent Lightning:微软开源的框架无关 Agent 训练方案,LangChain/AutoGen 都能用
人工智能·microsoft·langchain·大语言模型·agent·强化学习
萧曵 丶5 小时前
Vue 中父子组件之间最常用的业务交互场景
javascript·vue.js·交互
大模型RAG和Agent技术实践6 小时前
从零构建本地AI合同审查系统:架构设计与流式交互实战(完整源代码)
人工智能·交互·智能合同审核
老邋遢6 小时前
第三章-AI知识扫盲看这一篇就够了
人工智能
互联网江湖6 小时前
Seedance2.0炸场:长短视频们“修坝”十年,不如AI放水一天?
人工智能
PythonPioneer6 小时前
在AI技术迅猛发展的今天,传统职业该如何“踏浪前行”?
人工智能
冬奇Lab6 小时前
一天一个开源项目(第20篇):NanoBot - 轻量级AI Agent框架,极简高效的智能体构建工具
人工智能·开源·agent