乐于分享
好东西不私藏

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

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

目录
  1. 项目概述

  2. 技术栈

  3. 目录结构

  4. 核心模块

  5. 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 – 主入口文件

应用初始化

fromfastapiimportFastAPI
fromfastapi.middleware.corsimportCORSMiddleware
fromcontextlibimportasynccontextmanager

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.routerprefix="/api/images"tags=["图像管理"])
app.include_router(videos.routerprefix="/api/videos"tags=["视频管理"])
app.include_router(logs.routerprefix="/api/logs"tags=["日志管理"])
app.include_router(systems.routerprefix="/api/systems"tags=["系统监控"])
app.include_router(models.routerprefix="/api/models"tags=["模型管理"])
app.include_router(dashboard.routerprefix="/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 编码支持中文

  • 统一的日志格式

日志配置

defsetup_logger():
"""设置日志配置"""
log_dir = Path("logs")
log_dir.mkdir(parents=Trueexist_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_fileencoding='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'
    )

returnlogger

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

功能特点

  • 自动加载默认模型

  • 支持模型切换

  • 模型信息持久化

  • 单例模式管理

本站文章均为手工撰写未经允许谢绝转载:夜雨聆风 » 行人摔倒检测系统 – 后端文档(1)

评论 抢沙发

2 + 8 =
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
×
订阅图标按钮