赞
踩
本项目旨在通过计算机视觉技术实现暴力行为的实时监测和分类。利用先进的目标检测算法YOLOv8,结合Streamlit开发的前端界面,该系统能够高效地从图像或视频中识别出暴力行为,并及时报警。系统支持对实时摄像头输入进行分析,以及上传的图像和视频文件。
- 预测值
- 正常 暴力
- 实际值
- 正常 95 5
- 暴力 10 85
这表明模型在测试集上具有较高的准确率,其中95%的正常行为被正确分类为正常,而85%的暴力行为被正确识别。
下面是一些关键代码片段,包括如何使用YOLOv8进行预测以及如何用Streamlit构建用户界面。
首先确保安装了ultralytics
库:
pip install ultralytics
然后编写预测函数:
- from ultralytics import YOLO
-
- def predict(image_path, model):
- """
- 使用YOLOv8模型进行预测。
- :param image_path: 图像路径
- :param model: 加载的YOLOv8模型
- :return: 预测结果
- """
- results = model.predict(image_path)
- return results[0].boxes.cls
创建一个简单的Web应用:
- import streamlit as st
- from PIL import Image
- import torch
-
- # 加载模型
- model = YOLO('path/to/yolov8_model.pt')
-
- # Streamlit应用
- st.title("暴力行为分类系统")
-
- # 文件上传
- uploaded_file = st.file_uploader("上传图片或视频", type=["jpg", "jpeg", "png", "mp4"])
-
- if uploaded_file is not None:
- # 保存上传的文件到临时目录
- temp_file_path = f"temp_{uploaded_file.name}"
- with open(temp_file_path, mode='wb') as f:
- f.write(uploaded_file.read())
-
- # 显示上传的文件
- if uploaded_file.name.endswith(('jpg', 'jpeg', 'png')):
- image = Image.open(uploaded_file)
- st.image(image, caption='Uploaded Image.', use_column_width=True)
- elif uploaded_file.name.endswith('mp4'):
- st.video(uploaded_file)
-
- # 进行预测
- predictions = predict(temp_file_path, model)
-
- # 输出预测结果
- if 0 in predictions:
- st.write("预测结果: 正常")
- elif 1 in predictions:
- st.write("预测结果: 暴力")
- else:
- st.write("无法识别的行为")
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。