
Detect-i-cam是一个使用Yolo卷积神经网络(CNN)进行AI目标检测的摄像头监控解决方案。
您可以将Detect-i-cam作为Docker容器或命令行工具运行,推荐使用Docker。
bashdocker pull raimondb/detect-i-cam
yaml--- version: "2.2" services: detect-i-cam: image: raimondb/detect-i-cam container_name: detect-i-cam volumes: - ./capture:/captures - ./config:/config restart: unless-stopped
要运行Detect-i-cam,必须提供要监控的视频流。配置在https://github.com/RaimondB/Detecticam/blob/master/DetectiCam/appsettings.template.json%E6%96%87%E4%BB%B6%E4%B8%AD%E3%80%82
所需的最小配置是包含video-streams部分,其中仅id和path为必填项。path可以是视频流文件(需通过映射卷访问)、IP摄像头的HTTP URL或RTSP流。
json{ "video-streams": [ { "id": "side-door-live", "path": "rtsp://<user>:<passwd>@<cameraip>:<port>/<part>", "rotate": "Rotate90Clockwise", "fps": 15, "callbackUrl": "http://nas.home:5000/webapi/entry.cgi?api=SYNO.SurveillanceStation.Webhook&method=\"Incoming\"&version=1&token=x", "ROI": { "Left": 0, "Top": 172, "Right" : 479, "Bottom" : 639 }, "additionalObjectWhitelist": [ "cat" ] } ] }
可将检测对象配置为Yolo网络提供的类别子集。
json{ "detection": { "detectionThreshold": 0.5, "objectWhitelist": [ "person", "car" ] }
对于capturePattern和callbackUrl,可使用令牌替换部分内容,使其基于当前流和检测结果动态生成。
有几个特殊令牌:
此外,可在{}中使用所有常规时间戳格式化器。
默认情况下,所有包含"person"的捕获图像会写入/captures卷,包括所有检测对象的边界框及其置信度百分比。可通过appsettings.json中的以下设置配置:
json"capture-publisher": { "enabled": true, "captureRootDir" : "/captures", "capturePattern" : "{yyyy-MM-dd}/{streamId}-{ts}.jpg" }
现在可使用令牌配置捕获保存方式,还可动态生成子目录以便按日期分组文件。
以下旧设置已弃用,将在未来版本中移除:
json"capture-path": "./captures",
若要通过Webhook与其他解决方案集成,可在视频流配置中指定回调URL。示例中使用Webhook触发Synology NAS的录制。
另一个选项是使用MQTT发布。可在appsettings.json中使用以下配置:
json"mqtt-publisher": { "enabled": true, "server": "nuc.home", "port": 1883, "username": "myuser", "password": "passwd", "topicPrefix": "home", "clientId": "detecticam", "includeDetectedObjects": false, "topDetectedObjectsLimit" : 3 }
目前仅支持非安全连接,无需配置证书等。
每次检测到人员时会发布消息,主题格式:
bnf[<topicPrefix>/]detect-i-cam/<stream-id>/state
不包含检测对象时的消息值:
json{ "detection" : true }
当includeDetectedObjects:true时,消息格式如下:
json{ "detection":true, "detectedObjects": [ { "Index":2, "Label":"car", "Probability":0.99284625, "BoundingBox":{"X":0,"Y":62,"Width":120,"Height":73} } ] }
topDetectedObjectsLimit决定报告对象数量,按probability降序排序。
您可能需要使用不同的Yolov3 Darknet兼容配置。这些数据文件可通过从镜像映射的/config卷提供。默认情况下,镜像已包含完整YoloV3网络。仅当您训练了自己的数据集,或想使用YoloV3 tiny以节省内存和CPU时才需更改。此时应在appsettings.json配置文件中添加以下"yolov3"部分:
json{ "yolo3": { "rootPath": "/config/yolo-data", "namesFile": "coco.names", "configFile": "yolov3.cfg", "weightsFile": "yolov3.weights" } }
我们欢迎贡献。请在仓库提交issue和pull request,我们将尽快处理。有关如何提供帮助的更多信息,请参见贡献规则与指南。
Detect-i-cam采用GPLv3许可证。详情参见LICENSE。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务