实时监控RTSP视频流并通过YOLOv5-seg进行智能分析处理
yolov5
yolov5 - Ultralytics YOLOv8的前身,是一个用于目标检测、图像分割和图像分类任务的先进模型。
项目地址:https://gitcode.com/gh_mirrors/yo/yolov5
免费下载资源
·
在完成RTSP推流之后,尝试通过开发板接收的视频流数据进行目标检测,编写了一个shell脚本实现该功能,关于视频推流和rknn模型的部署请看之前的内容或者参考官方的文档。
#!/bin/bash
# 设置脚本使用的shell解释器为bash
SEGMENT_DIR="./segmented_videos"
# 定义一个变量SEGMENT_DIR,用于存储分割后的视频文件的目录路径
mkdir -p "$SEGMENT_DIR"
# 使用mkdir命令创建SEGMENT_DIR指定的目录,如果目录已存在则不会报错
capture_and_segment() {
ffmpeg -i rtsp://10.19.15.28:8554/camera_test -c copy -map 0 -f segment -segment_time 5 -reset_timestamps 1 -strftime 1 "${SEGMENT_DIR}/output_%Y-%m-%d_%H-%M-%S.mp4" &
echo $! > "ffmpeg_pid.txt"
}
# 定义一个名为capture_and_segment的函数,该函数使用ffmpeg命令从RTSP流中捕获视频,并将其分割为5秒的片段。每个片段的文件名包含当前的时间戳。同时将ffmpeg进程的PID写入到ffmpeg_pid.txt文件中。
run_yolov5_demo() {
local video_file="$1"
echo "Processing $video_file"
./yolov5seg_videocapture_demo ./model/yolov5s_seg.rknn "$video_file"
rm "$video_file"
echo "Finished processing $video_file"
}
# 定义一个名为run_yolov5_demo的函数,该函数接受一个视频文件作为参数,并使用yolov5seg_videocapture_demo程序和预训练的YOLOv5分割模型对视频进行分割。处理完成后删除原始视频文件。
cleanup() {
echo "Cleaning up..."
kill $(cat ffmpeg_pid.txt)
rm ffmpeg_pid.txt
rm -f ${SEGMENT_DIR}/*.mp4
exit
}
# 定义一个名为cleanup的函数,该函数用于在脚本被中断时执行清理操作。它会杀死ffmpeg进程,删除ffmpeg_pid.txt文件,以及删除SEGMENT_DIR目录下的所有mp4文件。
trap cleanup SIGINT
# 使用trap命令注册cleanup函数,以便在脚本接收到SIGINT信号(通常是由于用户按下Ctrl+C)时执行清理操作。
capture_and_segment
# 调用capture_and_segment函数开始捕获和分割视频流。
while inotifywait -q -e close_write --format '%w%f' "${SEGMENT_DIR}"; do
latest_file=$(ls -t ${SEGMENT_DIR}/*.mp4 | head -n 1)
if [[ -f "$latest_file" ]]; then
find ${SEGMENT_DIR} -type f -name '*.mp4' ! -name "$(basename "$latest_file")" -exec rm {} +
run_yolov5_demo "$latest_file"
fi
done
# 使用while循环和inotifywait命令监控SEGMENT_DIR目录,当有新的视频文件被关闭写入时,找到最新的视频文件,删除其他文件,然后调用run_yolov5_demo函数处理最新的视频文件。
该脚本实现了一个自动化的视频监控流程,通过ffmpeg
实时捕获RTSP视频流并分割成5秒一段的视频文件,然后利用YOLOv5模型对这些视频片段进行图像分割处理。脚本还包括后台处理、进程PID管理、文件系统事件监控以及资源清理功能,确保在接收到中断信号时能够妥善终止进程并清理文件,有效管理存储空间。测试结果如下所示
由于实例分割模型的FPS较低,所以有较高的延迟,后续可以使用目标检测模型进行测试,效果应该会更好。
GitHub 加速计划 / yo / yolov5
49.43 K
16.03 K
下载
yolov5 - Ultralytics YOLOv8的前身,是一个用于目标检测、图像分割和图像分类任务的先进模型。
最近提交(Master分支:3 个月前 )
79b7336f
* Update Integrations table
Signed-off-by: Glenn Jocher <glenn.jocher@ultralytics.com>
* Update README.md
Signed-off-by: Glenn Jocher <glenn.jocher@ultralytics.com>
* Update README.zh-CN.md
Signed-off-by: Glenn Jocher <glenn.jocher@ultralytics.com>
---------
Signed-off-by: Glenn Jocher <glenn.jocher@ultralytics.com> 1 个月前
94a62456
* fix: quad training
* fix: quad training in segmentation 1 个月前
更多推荐
已为社区贡献1条内容
所有评论(0)