# 基于视觉的异常检测系统 **Repository Path**: SouthIO/AbnormalDetectionSystem ## Basic Information - **Project Name**: 基于视觉的异常检测系统 - **Description**: YOLOv8检测火灾、闯入、摔倒、聚集。 - **Primary Language**: Python - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 12 - **Forks**: 6 - **Created**: 2022-06-16 - **Last Updated**: 2025-06-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: Python, Flask, HTML, PyTorch ## README # 基于视觉的异常检测系统 ## 说明 - 系统通过YOLOv8n模型检测火焰、烟雾、行人、摔倒四类目标,可以实现火灾检测、聚集检测、闯入检测、摔倒检测。 - 系统支持多个边缘端与一个服务端,均使用了Flask框架。 - 系统支持在PC上以及在RK3588上实现模型部署。 - 训练模型所用数据集是在网络上收集整合的,训练集图片共13212张。 - 关于如何在RK3588上部署模型,查看[此文档](doc/model_convert.md)。 ## 如何启动 我的PC上Python版本为`3.8.10`,RK3588中的Python版本也是3.8。 ### 边缘端代码放在PC上 进入`Web`文件夹,根据`requirements.txt`安装Python依赖 ````bash pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/ ```` 在Web文件夹中启动服务端代码 ````bash python main.py ```` 若启动成功,则此时可以看见控制台中输出了服务端的IP地址,例如输出了如下内容: ````bash * Running on http://192.168.1.110:5000 ```` 这是服务端Flask服务的地址,为了让边缘端可以访问到服务端,需要要进入`IPC`文件夹,然后修改里面的`config.json`文件,将`server_address`参数的内容修改为`http://192.168.1.110:5000`(此处根据实际情况修改)。 `config.json`中的`ipc_label`参数是边缘端设备的标识,数据库中依赖此标识进行分类,可按需修改。`ipc_port`参数是边缘端程序开启Flask服务所需端口号,若服务端代码与边缘端代码在同一台PC上启动,此参数要注意区别于服务端的端口号。 接下来在IPC文件夹中启动边缘端代码 ````bash python main.py ```` ### 边缘端代码放在RK3588上 首先根据[此文档](doc/environment.md)安装RK3588的环境。 然后将IPC文件夹拷贝到RK3588中。为RK3588安装USB摄像头。 接下来要打开RKNN推理功能,需要将`IPC/main.py`第10、31、41、47行的代码取消注释。 其余步骤同上。 ````python # import infer # 10行 # self.infer_helper = infer.RKNNInferHelper(ipc_label=ipc_label, server_ip=server_ip) # 31行 # frame = self.infer_helper.infer(frame, IPC_AREA) # 41行 # self.infer_helper.release() # 47行 ```` ### 功能说明 - 模型效果如下表: | 类别 | AP@50 | | :--------------: | :---: | | 行人(person) | 81.6% | | 烟雾(smoke) | 66.1% | | 火焰(fire) | 70.0% | | 躺倒的人(down) | 88.3% | | 所有类别平均 | 76.5% | - 网页登录密码在`Web/configs/users.json`中,默认账号和密码均为`admin`。 - 网页界面右上角`LOGOUT`按键可以退出网页登录。 - 在主页界面可以查看系统已运行时间。 - 在地图界面可以查看边缘端设备位置,通过`IPC/config.json`中的`position`参数修改设备在地图那个页面中的相对坐标。 - 当监控界面存在在线设备时,点击该设备可以查看其监控画面。左下角`推理`按键用于开关检测功能。点击`编辑禁入区`再点击画面可以编辑用于判定闯入行为的禁入区,再点击一次保存。当使用RK3588作为边缘设备时,可以点击左上角隐藏按钮将推理设备从PC切换为RK3588。画面右侧显示检测到的异常信息。 - 统计界面可以查看饼状图、柱状图、折线图。 - 通过`Web/SQL/SQ_Manager.py`修改数据库内容,详细修改单条数据时需先显示全部数据再双击该条数据。 - 关于物联网上报功能,查看[此文档](doc/iot.md)。 ## 效果演示 闯入检测 ![image-20240609214528395](doc/images/image-20240609214528395.png) 火灾检测 ![image-20240609214542146](doc/images/image-20240609214542146.png) 摔倒检测 ![image-20240609214550097](doc/images/image-20240609214550097.png) 聚集检测 ![image-20240609214556696](doc/images/image-20240609214556696.png)