Skip to content
yuturuishiPublic

About

rebucca · 多路视频接入与智能布控分析平台。支持 GB28181 / RTSP 等协议、YOLO 等小模型检测、OpenAI 兼容大模型复核、多边形布控区域与带截图的结构化报警。

Resources

Stars

508 stars

Watchers

4 watching

Forks

Latest commit

 

History

17 Commits

Folders and files

Repository files navigation

Rebucca

语言 / Language: 简体中文 | English

开源协议: MIT License,可自由商用。详见 LICENSE。


功能

  • 视频接入:RTSP / GB28181 拉流,ZLMediaKit 转发,ONVIF 发现
  • 智能分析:D-FINE 实时端到端检测(内置,OpenVINO 2024.6 / ONNX Runtime 1.30.0 双引擎) + YOLO-PyTorch / ONNX / OpenVINO 小模型 + 可选大模型复核
  • 布控报警:多边形区域、7 种后处理规则(入侵/越线/计数/方向/密度/滞留/离岗),报警必有快照、频率严格跟随检测频率
  • 运维:控制面板监控、流媒体启停、录像、一键重启软件、多语言(7 种)

环境要求

  • Python 3.10+
  • FFmpeg(PATH 或 config.json 配置)
  • ZLMediaKit(流媒体,端口与 config.json 一致)
  • GPU 可选
  • D-FINE 推理依赖固定版本:OpenVINO 2024.6 与 ONNX Runtime 1.30.0(见 requirements-windows.txt / requirements-linux.txt)
如果是Linux系统,需要手动进入到zlm/bin.x86.gcc9.4 或 zlm/bin.arm.gcc9.4 ,确保可以正确执行 ./rebucca_zlm


如果执行./rebucca_zlm失败了,可以参考下面的两种方式解决安装环境问题

(1)解决方式一
sudo chmod -R a+x *
echo "export LD_LIBRARY_PATH=\"$(pwd):\$LD_LIBRARY_PATH\"" >> ~/.bashrc && source ~/.bashrc

(2)解决方式二

sudo apt update
sudo apt install -y libsrtp2-1

//下载ubuntu20的libssl1.1包
wget http://security.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1f-1ubuntu2.24_amd64.deb
sudo dpkg -i libssl1.1_1.1.1f-1ubuntu2.24_amd64.deb

//修复依赖
sudo apt -f install

安装依赖:

# Windows
pip install -r requirements-windows.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
或
pip install -r requirements-windows.txt

# Linux
pip install -r requirements-linux.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
或
pip install -r requirements-linux.txt

快速开始

python manage.py runserver 0.0.0.0:10001

浏览器访问 http://<host>:10001/,默认账号 admin,默认密码 admin888。

首次部署请编辑 config.json(端口、ZLM、FFmpeg 等)和 settings.json(界面品牌)。启动配置页保存后多数项热更新生效;改管理端口或调试日志需重启服务。


使用顺序

视频管理 → 小模型 → 大模型 → 业务算法 → 布控管理 → 启动分析 → 报警管理
  1. 添加摄像头并确认拉流正常
  2. 上传/配置小模型(流程 1/3)和大模型(流程 2/3)
  3. 创建业务算法,在布控页画区域并绑定算法
  4. 点击「启动分析」(重启服务后需手动再点)
  5. 在报警管理查看结果

只有业务算法规则命中才会报警;单纯检测到目标或画面运动不会产生报警记录。


常见问题

问题 处理
没有报警 确认拉流正常、布控已绑算法、已启动分析、检测类别匹配
改配置不生效 布控/算法可热更新;换小模型需重启分析;改端口需重启服务
端口占用 结束残留 python.exe 后重新启动

日志目录:log/。版本号见 framework/settings.py。


更新日志

v1.006

  • 2026/10/12
  • 新增 D-FINE 实时端到端目标检测算法框架(本版本核心更新)
    • rebucca 正式接入 D-FINE 检测框架,作为通用检测能力内置默认存在:开箱即用,无需额外上传模型,即可在「小模型」「模型测试」「业务算法」「布控管理」全流程中选择 D-FINE。
    • D-FINE 能力突出:D-FINE 是 ICLR 2025 提出的实时端到端检测器,通过细粒度分布精炼(FDR)将边界框回归转化为精准的概率分布预测,无需 NMS、定位精度高、推理延迟低,在同等速度下精度显著优于同规模 YOLO 系模型,特别适合视频布控这类对定位精度与实时性都敏感的场景。
    • 双推理引擎:支持 OpenVINO(固定 2024.6) 与 ONNX Runtime(固定 1.30.0) 两种 Python 推理引擎,CPU / GPU 均可运行;不依赖 Ultralytics,彻底规避 AGPL 传染,商业部署更省心。
    • 内置默认模型:仓库内置 D-FINE-N(COCO 80 类)OpenVINO IR + ONNX 双格式权重(static/upload/weight/dfine/),首次启动自动注册为默认通用检测模型,模型类别为中文 80 类,报警快照与界面类别显示全部中文化。
    • 训练框架:D-FINE 模型基于我们的 ytstudio 训练框架(Train_DFINE)训练,支持 N/S/M/X 多档位模型的训练与自定义数据集微调,训练产物可一键导出为静态 ONNX 与 OpenVINO IR(fp32),直接部署到 rebucca 使用。如需用自己的数据训练专属 D-FINE 模型,导出后在小模型页上传即可。
  • 报警可靠性:快照与报警原子化
    • 报警快照生成失败时不再写入无快照的「空报警」——每一条报警记录必有快照依据,报警记录的可靠性大幅提升。
  • 报警频率严格跟随检测频率(重要治理)
    • 此前同一目标的多个规则/多目标可在同一帧内叠加产生大量报警。现在每路视频严格按布控的「检测频率」节流:检测频率 1 秒/帧即最多 1 秒 1 条报警,多目标/多规则同帧不叠加,杜绝报警风暴、大幅节省存储与资源。
  • 性能优化
    • 解码频率自动对齐检测频率(1s 检测场景解码开销降低约 60%);报警快照中文标签绘制改为 ROI 局部渲染(快约一个数量级);快照 JPEG 质量优化(80);区域多边形查找改为字典直查。
  • 中文绘制支持
    • 新增中文绘制工具(PIL + 中文字体),报警快照中的类别标签、区域事件角标(报警/滞留)全部支持中文显示,不再出现 ??? 乱码。
  • 界面优化:控制面板一屏显示
    • 首页控制面板整体紧凑化:「流媒体服务」「日志与刷新」并入双列卡片网格,统计卡与各区块间距收紧,普通笔记本屏幕(1366×768 起)即可一屏纵览全部面板内容,无需上下滚动。
  • 小模型页体验优化
    • 顶部「模型文件检查结果」默认折叠为一行摘要(全部就绪时不再展开大横幅),点击可展开/收起明细;检测到模型文件缺失时仍自动展开红色警告。
    • 页面顶部新增开源项目 ytstudio 模型训练框架 入口(Gitee / GitHub 仓库直达),风格与整页统一、简洁清爽。
  • 全站浏览器标签页图标(favicon)修复与强化
    • 所有页面标签页均显示站点图标;/favicon.ico 改为站点根路径直接输出(不走 302 跳转、带缓存响应头),彻底绕开浏览器对旧图标的死缓存;同时修复登录页图标被旧 logo 链接覆盖的问题。
  • 新增「重启软件」按钮
    • 控制台首页新增一键重启软件入口,点击确认后服务自动重启(守护进程兜底确保拉起),布控自动安全停止。
  • 依赖版本固定
    • requirements-*.txt 固定 openvino==2024.6.0、onnxruntime==1.30.0、pillow==10.4.0(pillow 10.4.0 兼容 Python 3.12)。

v1.005

  • 2026/09/24
  • 新增「离岗检测」后处理规则(第 7 种业务规则)
    • 与密度报警相反的反向区域规则:密度是「区域内目标数 ≥ 阈值」报警,离岗是「区域内连续 N 秒无目标」报警。
    • 在业务算法页选择「离岗检测」,在布控区域配置离岗阈值(秒)即可使用;区域内连续无匹配目标达到阈值触发报警,目标回岗后自动重新武装、可再次触发。
    • 检测目标类别沿用业务算法的「检测目标」配置(如 person),只有匹配类别的目标才算「在岗」。
    • 适用场景:机房值守、收银台离岗、值班岗在岗监测、工地值班、客服工位监督等。
    • 实现:models.py 新增 POST_ABSENCE 与 ZoneModel.absence_threshold;biz_rules.py 新增 ABSENCE 规则匹配与离岗报警文案;pipeline.py 新增区域级离岗判定(在场计时/回岗重新武装);schema_upgrade.py 老库自动补列,无需手动迁移。
  • 补齐密度报警阈值配置入口(重要修复)
    • 此前密度报警(DENSITY)的 density_threshold 只有后端字段,布控区域编辑界面没有配置入口,导致密度报警阈值恒为 0、永远无法触发。
    • 现已在布控区域弹框中增加「密度阈值」「离岗阈值」两个输入项,新建/编辑均可配置并随布控保存。
  • 报警管理支持密度/离岗类型筛选
    • 报警列表新增「密度报警」「离岗检测告警」筛选选项与类型显示。
  • 区域级报警快照优化
    • 密度/离岗等区域级报警本身没有具体目标框,快照不再在左上角绘制 0×0 空检测框,仅保留区域多边形与事件角标。
  • 国际化
    • 新增离岗/密度相关翻译键并补齐至全部 7 种语言;补齐简体中文缺失的 zone_state_enabled / zone_state_disabled。

v1.004

  • 2026/09/02
  • 修复布控报警快照识别框位置异常(重要)
    • 共享推理池链路(默认开启)发送帧前会将长边降采样至 ≤1280 以节省传输,推理返回的检测框 / 关键点 / 分割多边形坐标属于缩放后小图坐标系,此前未经还原直接画到原始分辨率快照上,导致报警管理图片中识别框整体偏左上、尺寸偏小,分辨率越高错位越明显。
    • 现已按缩放比例将检测结果坐标还原回原图坐标(remote_detector.py),未降采样时零开销直通;同时修正了区域命中判断(点在多边形内)使用错位坐标导致的潜在误报 / 漏报。
  • 修复编辑用户提交报错(int() argument ... not 'NoneType')
    • 数据库返回的 is_active 为布尔值,前端直接赋给状态下拉框导致值匹配失败,提交时序列化为 null,后端 int(None) 抛出原始异常。
    • 前后端双重修复:前端将状态归一化为 '1' / '0'(user/index.html);后端对 is_active 做布尔 / 字符串兼容归一化,id 缺失时返回业务错误提示(UserView.py)。
  • 修复业务算法编辑弹框不回显已选检测目标
    • 打开编辑弹框时,已选检测目标先被正确填充,但随后触发的 onSmallModelChange() 以空选中集重绘下拉框,把回显项全部清空,表现为「选了多少项,打开编辑却一个都没选中」。
    • 现改为保留当前已选项重绘(与检测+ReID 流程的 onDetectorModelChange 行为一致);真实切换小模型时,不属于新模型标签列表的旧选中项仍会被自然过滤(algorithm/index.html)。

v1.003

  • 2026/08/06
  • 业务算法选择大模型相关修复(重要)
    • 大模型配置新增「名称」字段,可留空;新增 / 编辑时若名称为空,自动以「模型名称」兜底(name = model_name),避免大模型配置出现空名称。
    • 业务算法列表 / 编辑中,绑定大模型的显示名现在会回退到「模型名称」(llm_name 兜底 name or model_name),不再显示空白。
    • 修复业务算法编辑时,绑定的大模型若已被禁用,下拉框无法回显、看似「配置丢失 / 选不中」的问题:现在自动补一个带「[禁用]」标记的回显项,且每次打开编辑会清理上一次的回显项。
    • 业务算法「大模型」下拉选项 label 改为 name || model_name || #id,确保只填了模型名称时也能正确显示。
  • 新增「统计看板」(报警态势总览)
    • 报警管理新增「统计看板」页面(/alarm/dashboard),一站式掌握报警态势。
    • 4 张核心统计卡:今日报警、近 7 天报警、累计报警、涉及摄像头数(均可点击下钻到对应列表)。
    • 报警趋势图:支持近 7 天 / 近 30 天切换。
    • 报警类型分布、报警 TOP 摄像头排行。
    • 新增接口 alarm/openStats,左侧导航新增「统计看板」入口。
  • 国际化补全
    • 补齐统计看板相关 16 个翻译键至全部 7 种语言(es / ko / ru / vi / zh-hk / zh / en),修复此前仅 zh / en 有译、其余语言界面显示原始 key 的问题。

版本号见 framework/settings.py 的 PROJECT_VERSION。


开源协议与第三方依赖说明

rebucca 全部源代码以 MIT License 开源,可自由使用、修改、分发(含商用)。

本项目在运行时聚合若干第三方组件,各自遵循其许可,使用者需自行遵守:

组件 用途 许可
rebucca 源代码 平台本体 MIT
ONNX Runtime ONNX 模型推理 MIT
OpenVINO OpenVINO 模型推理 Apache-2.0
D-FINE 算法框架 实时端到端检测(代码与官方权重) Apache-2.0
Ultralytics(YOLO-PyTorch 引擎) 加载 .pt 做 YOLO 推理 AGPL-3.0
ZLMediaKit 等 流媒体(zlm/) MIT(见 zlm/THIRD_PARTY_LICENSES)
PyTorch / OpenCV / Django 等 基础依赖 BSD / Apache 等宽松许可
  • YOLO-PyTorch 引擎依赖 Ultralytics(AGPL-3.0):若将其用于商业用途(闭源产品、私有部署、SaaS、边缘/嵌入式设备等),须遵守 Ultralytics 许可条款或购买其 Enterprise License;rebucca 的 MIT 许可不覆盖该部分义务。如需完全规避 AGPL,请改用 ONNX / OpenVINO 引擎。
  • 模型权重:仓库内置示例权重(static/upload/weight/),其许可由提供方负责;Ultralytics 预训练权重(*.pt)受 AGPL / 企业许可约束。
  • 版本检测(唯一对外网络请求):rebucca 会在打开「版本」页或控制台主页时,向官网 http://www.yuturuishi.com/api/rebucca/checkVersion 发起一次版本检测请求,用于提示新版本。请求仅包含版本号、操作系统与运行环境信息(主机名、系统版本、IP、运行时长等),不含任何视频、账号、录像等业务数据。原先的周期性心跳上报已移除。如不想发起该请求,可在网络层面拦截。
  • 免责:使用者应自行确保部署环境、所用模型与数据的合法性。rebucca 按「现状」提供,不作任何担保。

About

rebucca · 多路视频接入与智能布控分析平台。支持 GB28181 / RTSP 等协议、YOLO 等小模型检测、OpenAI 兼容大模型复核、多边形布控区域与带截图的结构化报警。

Resources

Stars

508 stars

Watchers

4 watching

Forks

Releases

Packages

Contributors

Languages