Kami Suspicious Person — Kami 可疑人物
v1.0.0检测未注册面孔在敏感区域徘徊。持续运行,每当陌生人超过徘徊阈值时,输出告警JSON到stdout...
运行时依赖
安装命令
点击复制技能文档
Kami Suspicious Person Detection 在敏感区域检测未注册面孔徘徊事件。脚本持续运行,每当陌生人超过徘徊阈值时,输出一个报警JSON行到stdout。它不会在报警后退出 - 它继续监控。设置run_time:0为无限运行。直接使用ONNX模型(无需insightface包依赖)- 可在Linux、macOS和Windows上运行: SCRFD(det_10g.onnx)用于面部检测+5点标志 ArcFace(w600k_r50.onnx)用于512维面部嵌入提取
工作原理 面部检测+标志(本地,CPU):SCRFD每sample_interval秒检测面部并提取5点标志。 面部对齐+嵌入:ArcFace从对齐的112x112面部裁剪中提取512维嵌入。 数据库匹配:通过余弦相似度比较嵌入与注册面部数据库。注册面部被跳过。 陌生人跟踪:使用嵌入滑动平均跟踪帧中的未注册面部。 徘徊报警:当陌生人停留时间超过loiter_threshold时,输出报警JSON到stdout,包含面部快照。经过冷却期后,如果陌生人仍然存在,可以再次触发。
何时使用 使用此技能时,用户希望: 监控摄像头视频流以检测未注册/未知人员 检测陌生人在受限或敏感区域徘徊 当未知面孔在视野中停留太久时获得实时警报 运行连续面部识别监控
安装 bash setup.sh 这将: 检测系统Python,创建.venv/虚拟环境 安装依赖项:onnxruntime、opencv-python-headless、numpy 创建alerts/、face_db/、models/目录 从insightface发布中下载SCRFD(det_10g.onnx)和ArcFace(w600k_r50.onnx)模型(约180MB总计) 幂等 - 可以安全地重复运行。适用于Linux和macOS。
先决条件 python3和python3-venv已安装在系统上 RTSP摄像头在线且可通过网络访问,或者有一个本地视频文件用于测试 setup.sh至少运行一次(可选) 注册面部图像放在face_db//xxx.jpg中
面部数据库设置 将注册人员照片放在face_db/目录中: face_db/ ├── Alice/ │ ├── photo1.jpg │ └── photo2.jpg ├── Bob/ │ └── photo1.jpg └── face_db.pkl(自动生成缓存) 要预构建数据库缓存: .venv/bin/python build_face_db.py --face_db ./face_db
参数确认 在运行此技能之前,请与用户确认以下参数: 参数 默认值 描述 --rtsp_url(必需) RTSP摄像头URL或本地视频文件路径 --face_db face_db/ 注册面部数据库目录 --det_model models/det_10g.onnx SCRFD面部检测模型路径 --rec_model models/w600k_r50.onnx ArcFace面部识别模型路径 --db_match_threshold 0.4 数据库匹配的余弦相似度阈值 --stranger_match_threshold 0.35 陌生人跟踪的余弦相似度阈值 --loiter_threshold 300徘徊报警阈值(秒)(300 = 5分钟) --sample_interval 2.0 面部检测采样间隔(秒) --cooldown 300 每个陌生人报警冷却(秒);同一陌生人在此窗口内不会再次报警 --det_thresh 0.5 面部检测置信度阈值 --min_face_size 40 最小面部大小(像素) --output_dir alerts/ 报警输出目录 --run_time 0 最大运行时间(秒);0 = 无限 --fps 15 视频流帧率 --expire_seconds 600 陌生人跟踪过期(秒)(自上次看到以来) --inbox_file alerts/pending.jsonl 报警收件箱文件由LLM心跳任务使用 --feishu_webhook(env FEISHU_WEBHOOK_URL)飞书自定义机器人Webhook URL - 报警直接推送到用户的手机 --feishu_secret(env FEISHU_WEBHOOK_SECRET)飞书Webhook签名密钥(仅当机器人启用签名验证时) 询问用户:是否需要更改任何参数?
飞书推送设置 在目标群聊中创建飞书自定义机器人(自定义机器人),复制其Webhook URL,然后: export FEISHU_WEBHOOK_URL="https://open.feishu.cn/open-apis/bot/v2/hook/xxxxxxxx" # 可选,只有当机器人启用“签名校验”时: export FEISHU_WEBHOOK_SECRET="your_secret_here" 或者在CLI上传递--feishu_webhook / --feishu_secret。设置后,每个报警都会以交互式卡片形式(标题/陌生人ID/持续时间/时间戳/快照路径)POST到飞书。
使用方法 # 初始化环境(仅第一次) bash setup.sh # (可选)预构建面部数据库 .venv/bin/python build_face_db.py --face_db ./face_db # 使用RTSP流运行 .venv/bin/python suspicious_person_detector.py \ --rtsp_url rtsp://192.168.1.100/live/stream1 # 使用本地视频文件运行(用于测试) .venv/bin/python suspicious_person_detector.py \ --rtsp_url /path/to/test_video.mp4 # 自定义参数 .venv/bin/python suspicious_person_detector.py \ --rtsp_url rtsp://192.168.1.100/live/stream1 \ --loiter_threshold 60 \ --sample_interval 1.0 \ --cooldown 120
输出格式(stdout JSON) 技能持续运行并输出JSON格式的报警信息。