视频监控项目做多了以后你会发现一个特别有意思的现象摄像头数量年年涨但真正被有效使用的画面其实很少。尤其像营业厅柜台、工厂车间、值班室这类需要时刻掌握“人是否在岗”的场景过去基本全靠管理人员定时巡查或者出事之后翻录像。这就导致一个很尴尬的局面——监管是抽查式的违规是随机发生的查到了是运气好漏掉了是大概率。这两年“视频AI在岗离岗监测”这个词在安防圈里越来越热本质上就是想把这种抽查式监管翻过来让系统7×24小时盯着每一个岗位异常发生的时候自动报警。我最近在推进一个基于EasyCVR平台的项目把视频汇聚、视频融合、视频分析几个环节串在一起专门做在岗离岗监测实测下来的感受是这套思路并不玄乎但要做好里面的细节比想象中多得多。这篇文章就把整个过程的思路、技术点、部署实操和踩过的坑完整拆一遍给准备做同类项目的朋友一个参考。1. 监管转型背后的真实痛点为什么需要视频AI在岗离岗监测1.1 传统人工抽查模式的三个死穴先说需求来源。不少行业对岗位纪律有硬性要求比如银行的现金区、高速公路收费站、政务服务中心窗口、电厂的值班室都要求人员在规定时间内必须在岗。但实际执行的时候巡查员不可能每分钟都盯着屏幕能做到一天巡回看三到五次已经算不错了。这种模式天然有三个绕不过去的死穴。第一个是覆盖率太低。抽查只能覆盖极小的时间切片假设一个岗位每天工作8小时巡查一次看5分钟覆盖率只有1%左右。剩下99%的时间有没有离岗全靠自觉。第二个是实时性太差。抽查发现问题的时候事情往往已经发生了甚至已经造成了后果管理员能做的只是事后追责无法在离岗发生的第一时间提醒。第三个是记录不客观。人工巡查的口头提醒和纸质记录到了月底汇总时往往变成一笔糊涂账想复盘某个时段到底发生了什么靠记忆既不准也说不清。这些问题单靠加人、加巡查频次是解决不了的因为成本会直线上升。所以视频AI方案的价值不在于替代人的判断而在于把“人去看”变成“系统持续看”把抽查变成全时防控。这也是EasyCVR这类视频汇聚分析平台能被接受的根本原因。1.2 视频汇聚是智能防控的基础前提很多朋友听到“在岗离岗监测”第一反应是算法准不准却忽略了一个前置条件你的视频流能不能稳定、统一、低延迟地送到算法面前。现实里的监控系统往往非常碎片化早期项目装了几个厂家的摄像头各用各的平台有的走RTSP有的走GB28181还有几路是私有SDK接入的根本没法统一管理。如果每个厂家的视频流都要单独写一套取流逻辑再对接AI分析开发和维护成本会高得吓人。EasyCVR在这里的角色就是一座“视频立交桥”把各种协议的视频源汇聚进来统一输出成标准格式再交给下游的AI分析或其他业务系统使用。所以我在做方案的时候一直坚持一个原则先解决视频汇聚再谈AI监测。汇聚做扎实了后面的算法才有一张稳定、干净的“原料”可吃。2. 在岗离岗监测的技术核心从画面到“岗位状态”的算法解析2.1 基于目标检测与人体属性的“在岗”判定逻辑在岗离岗监测听起来像是“看人还在不在”但算法真正要解决的是一个更细致的问题人出现在画面里未必等于在岗人不出现也未必等于离岗。一个常见的做法是先做目标检测画出画面里所有人员的边界框再结合工位区域做判断。以柜台窗口为例第一步是划定一个矩形ROI区域作为“工位区”可以用平台的画面绘制工具直接在视频画面上框选。算法会对每一帧图像跑一遍人体检测模型拿到所有人员的坐标位置然后判断坐标是否与ROI区域有交集。如果人员在ROI内且保持一定时长就认为“在岗”否则进入“离岗待确认”状态。这里需要注意人体的检测框和ROI的关系并不是简单相交就行。我通常建议用“检测框底部中心点”与ROI的位置关系作为判定依据而不是整个框。因为人的上半身可能出现在窗口内但人已经走到旁边用整个框容易误判。2.2 离岗识别的两个关键参数连续帧数与时长达标阈值算法上还有一个容易踩坑的环节不能画面里一没有人就直接报警。因为视频流偶尔会有解码丢帧、网络抖动或者人只是短暂起身拿个资料如果瞬时触发报警系统一天能报几百次管理层很快就疲了最后宁可关掉报警。合理的设计是引入“连续帧数”和“时长阈值”两个参数。连续帧数的作用是过滤闪烁和抖动。假设摄像头是25帧/秒你可以设置连续检测到ROI内无人超过30帧也就是1.2秒才开始判定为异常。这个值不宜太小否则画面边缘的人影晃动就会触发也不宜太大不然真正离岗后要等很久才报警。时长达标阈值则跟行业管理要求挂钩。比如银行要求离岗不能超过3分钟那阈值就设在180秒如果是机房值守可能要求60秒内必须有人响应那就设成60秒。算法层面要做的就是把“人员不在ROI内的持续时长”累加超过阈值后生成一条包含岗位名称、摄像头编号、时间戳、截图证据的告警记录。在实际项目中我建议这两个参数都做成可配置的而不是写死在算法里。同一个平台可能上午在看银行柜台下午接了个工厂车间需求完全不一样能在界面上快速修改参数会省掉大量重复开发和现场调试工作。2.3 光线、遮挡、多目标场景下的鲁棒性设计视频AI在真实环境里最大的敌人不是算法模型本身而是场景的复杂性。比如银行柜台有玻璃隔断摄像头拍出来人像反光加油站便利店门口半边亮半边暗工厂车间里工人戴着安全帽、口罩人体检测模型很容易把人跟背景混在一起。针对这些情况有几条实操经验值得记下来一是尽量用400万以上像素的摄像头画面细节越丰富小目标检测效果越好二是算法层面尽量选支持多人识别、遮挡后自动重新识别的模型而不是简单的单人检测三是可以结合“工位空闲时长”和“人员焦点轨迹”做联合判断即使人短暂被遮挡只要轨迹还在工位附近就不要急着报警。另外夜间和弱光场景也需要单独处理。普通彩色摄像头在夜间噪点会显著增加容易把椅子的轮廓识别成人。有条件的话优先用带补光或宽动态的摄像头或者开启摄像头的智能红外模式。EasyCVR这类平台在接入视频流之后如果发现画质太差还可以通过转码输出较低分辨率的分析流帮助算法提升稳定性。总之鲁棒性不是调一个参数就能搞定的而是要在摄像头、算法、平台三个层面同时做配合。3. EasyCVR平台架构与关键能力拆解3.1 多协议接入与视频汇聚我最早接触EasyCVR最直观的感受就是“接入协议多”。GB28181、RTSP/RTMP、HLS、FLV、WebRTC、Onvif这些常见协议它都支持像海康、大华、宇视这些厂商的设备通过Onvif或者GB28181就可以直接拉进来省去了逐个对接SDK的麻烦。这个能力在多项目并存的场景下特别管用。我们那个项目里既有老旧的模拟摄像机转IP的NVR又有新装的网络球机还有两个厂家的平台需要级联全部通过EasyCVR做了接入。实际测试的时候GB28181方式接入大约配置一个国标编号和SIP服务器地址就能生效RTSP方式更简单直接填URL就行。汇聚完以后每路视频流都有一个统一的标识后续做AI布控、直播分发、录像回看都走这一个入口复杂度一下子降下来了。需要注意视频汇聚并不只是“能拉到流”就算成功还要考虑断线重连、录像补录、码率波动的问题。EasyCVR里对每路通道都有在线状态监控断流之后会自动尝试重新拉流这个机制在大规模视频接入时非常关键。我在一次项目中遇到过设备固件升级导致几十路视频同时掉线靠的就是平台自动重连几分钟内全部恢复没有影响后端的AI监测。3.2 视频分发与转码的“中转站”价值汇聚过来的视频流最终要发给多个使用方有人要在指挥中心大屏看实时画面有人要通过手机App看碎片化片段AI分析服务需要的又是一路特定编码格式的低码流。如果每路视频都直接让前端摄像头去应对这些需求摄像头撑不住不说网络带宽也会被瞬间打满。EasyCVR在中间做了一次视频分发和转码把原始流接收进来以后按需输出成RTMP、HLS、WebRTC等不同格式。比如我们的AI分析服务是通过WebRTC方式获取低延迟流而大屏端用RTMP拉流手机端用HLS播放这些都是由平台分发出去的摄像头那边只需要维持一路推流即可。这种“一处接入、多处分发”的模式是整个视频监管系统能够稳定运行的骨架。转码还有一层价值是对画质做“降级处理”。AI分析其实并不需要4K原画对大部分在岗离岗检测场景来说720P或者1080P的码流已经足够了。通过平台把原始高码率流转码成统一格式的分析流可以显著降低分析和存储的压力这也是我每次做方案时会强调的架构优势。3.3 与AI分析模块的融合方式说回AI在岗离岗监测本身。EasyCVR本身具备一定的视频分析能力同时也支持通过API接口把视频流输出给外部的AI分析服务这就有了两种典型的融合模式平台内置算法模式以及外置算法通过API介入的模式。内置模式胜在开箱即用在平台界面上直接勾选“在岗离岗检测”算法画好检测区域设置好阈值就可以跑起来。项目初期验证方案的时候这种模式效率很高不用先搭一套复杂的算法服务环境。外置模式则灵活很多比如已经有自己的训练模型想对特定工装、特定区域做识别可以通过平台把实时流拉取出来推给自建的推理服务结果再回调给平台联动告警。我个人建议如果项目已经有成熟的AI团队优先考虑外置模式因为行业场景差异大算法需要持续迭代如果项目是以平台集成和快速交付为目标先使用内置模式把业务跑通后续再根据效果决定是否替换成自研算法。两种模式不是互斥的EasyCVR的接口设计允许混合使用这也是它能撑住复杂项目的原因之一。4. 落地部署实操从设备接入到告警联动4.1 部署拓扑与硬件环境建议先来聊部署结构。我们项目采用的是“中心平台边缘分析”的混合方案EasyCVR主平台部署在机房服务器上负责视频接入、分发和业务管理AI分析服务部署在一台独立GPU服务器上通过平台获取分析流再把识别结果回传。这个结构的好处是平台和算法互不干扰算法要升级、要加并发都不用动主平台。硬件层面EasyCVR本身对CPU和内存的要求不算苛刻视频接入路数在100路以内时一台16核32G的服务器基本够用。但AI分析服务是吃算力的大头我建议根据并发路数来规划如果同时分析的摄像头不超过20路使用一张RTX 3060级别的消费级显卡就可以超过50路就需要考虑多卡或者选择NPU服务器。实在没有GPU环境也可以先用CPU跑轻量级模型但是延迟会明显偏高误报率也会上升。组网上需要特别注意的是平台、摄像头、AI服务器三者之间要尽量在同一局域网内至少保证带宽充足且延迟稳定。我们遇到过因跨三层交换机配置问题导致视频流一段时间断断续续AI判定频繁异常排查了很久才发现是组播配置没放开。建议所有关键链路都用有线连接避免用Wi-Fi承载分析流。4.2 摄像头点位安装与调优在岗离岗监测的摄像头安装有两个基本原则一是工位区域要完整出现在画面范围内二是镜头角度尽量俯视避免平视时前排人员遮挡后排人员。以大厅服务窗口为例摄像头安装在窗口斜上方约3米高度以约30度的俯角覆盖1到3号工位效果会远好于直接安装在正前方。安装完成后一定要在平台里画好检测区域再开始调算法。检测区域不要画得太大尽量贴着工位边缘宁可稍微收一点也不要伸到过道里否则路过的人员会被算进工位里导致“明明人不在系统认为在岗”。如果工位区域有遮挡物尽量在画ROI时手动绕开比如桌椅、盆栽、立柱都用多边形区域而非矩形区域来框选。调优过程中还有一项容易被忽略的工作设定工作时段。在岗离岗监测只在上班时间有意义非营业时段或者午休时段如果不关闭规则会产生大量无效告警。EasyCVR支持按时间段布控把规则的生效时间设置为“周一到周五 09:00-12:00、13:00-18:00”就可以把误报率再砍掉一截。这个配置虽然简单但很多人会漏掉。4.3 算法规则配置与联动策略算法规则配置是离岗监测能否真正落地的关键环节。打开EasyCVR的AI布控界面创建一条“在岗离岗检测”规则选择摄像头通道画好检测区域然后配置以下核心参数离岗判定时长、告警间隔、布控时间段、联动操作。我一般会这样设置初始值离岗判定时长设为120秒告警间隔设为5分钟布控时间段按业务排班表来。告警间隔的意义是防止同一岗位离线超过1小时后系统以秒为单位疯狂推告警导致告警风暴。设置5分钟意味着离岗后每5分钟推一条最新告警直到人员回岗或规则结束既能保持提醒又不会刷屏。联动策略方面项目上用了三种方式平台弹窗提醒、语音播报、短信通知。EasyCVR的告警输出支持Webhook接口我们做了一条自动化流程当告警产生时先弹屏提醒监控员同时通过前端页面的语音合成模块播报“3号窗口人员离岗”再通过短信网关发给值班管理层。这样一来最轻量的是监控员干预中等强度是现场语音提醒最重的是短信通知形成了明显的层次。5. 常见问题排查与效果调优实录5.1 误报/漏报典型场景项目上线初期几乎每天都会收到“异常告警”反馈其中大部分不是算法本身的问题而是场景细节没有处理好。第一个高频误报是人员站在工位区边界半个身子在里面半个身子在外面。人体检测框的中心点可能刚好落在ROI外系统立刻判定离岗。我的解决办法是把检测判定点从“检测框中心点”改为“检测框底部中心点”因为人的脚部通常更能表征其实际站位同时ROI再往外扩10到15像素作为缓冲带这样大幅减少边界抖动导致的误报。第二个典型问题是多人同时出现在工位。比如两个人并排坐在工位前检测框互相重叠算法可能只识别出一个人另一个人被当成背景导致离岗误判。解决方式是升级模型为支持多目标检测的更重模型并且设置“ROI内目标数不少于1人即算在岗”而不是判断是否有特定人员存在。对于非单人岗位这个逻辑更符合实际情况。漏报则往往发生在人员从画面侧边离开、走到摄像头看不到的盲区时。因为人员没有立即消失而是先离开ROI再离开整个画面算法如果只处理当前帧可能没有在第一时间捕获“离开”动作。我建议在规则里把检测区域延伸到工位周边大概50厘米范围让系统能捕捉到“人员从工位区域内走到区域外”的完整轨迹从而提高离岗判定的准确率。5.2 视频流延迟对监测的影响视频流延迟是个容易被忽视但又直接影响体验的指标。我们做在岗离岗监测时要求端到端延迟控制在1秒以内否则就会出现“人已经回到工位系统还在报离岗”的情况管理人员很快就会对系统失去信任。导致延迟的原因通常有三个摄像头自身的编码延迟、平台转码和分发延迟、网络传输延迟。摄像头的编码延迟一般由厂商决定把摄像头的编码方式从H.265改为H.264能稍微降低延迟平台转码部分如果不需要多端分发可以关闭不必要的转码让AI分析直接拉原始子码流网络层面尽量保证摄像头与平台之间二层互通避免经过过于复杂的路由。一个更隐蔽的坑是I帧间隔。视频流中I帧越大解码器拿到完整画面所需的时间越长。有些摄像头默认GOP是2秒意味着解码器每隔2秒才能拿到一个完整画面这样即使传输延迟很低AI也要等I帧到来才能开始检测感知上就会卡顿。我建议把摄像头关键帧间隔设置成1秒或者干脆拉流URL里加低延迟参数。5.3 算力分配与并发上限视频AI监测不是“接一路算一路”那么简单。当我们同时在线分析几十路视频时GPU的显存占用、解码通道数、算法推理队列都会成为瓶颈。一个很常见的现象是项目刚上线时只跑了五六路一切顺畅后来扩展到二十路GPU显存直接爆掉大量视频流排队等待推理告警响应从秒级变成分钟级。这里分享一个算力规划的经验公式假设单路视频分析需要约200毫秒的推理时间一台能同时支持4路推理并发的GPU服务器一天的理想处理能力大约是172,800张画面但考虑解码、预处理、排队等开销实际只能稳定支撑15到20路实时分析。所以做项目时不要只看显卡标称的算力一定要预留30%以上的冗余。如果并发路数确实很大可以采用“轮流分析”的策略比如把王岗离岗规则设定为每路视频每隔2秒分析一次而不是逐帧持续分析。因为离岗是一个持续状态不需要每一帧都检测。这样可以让单台服务器的承载路数翻倍效果上也没有明显损失。6. 从抽查到全时智能防控场景扩展与价值延伸6.1 监控中心与值守场景的质变真正把EasyCVR和视频AI在岗离岗监测用起来之后监控中心的运转方式发生了明显变化。过去监控员的主要精力是在几十个画面之间来回切换靠肉眼找问题现在系统会自动在画面里标出异常区域弹窗提示是哪一路、哪个岗位、持续了多久监控员只需要确认和处置。这种转变带来的不仅是效率提升更关键的是把监管逻辑从“抽查”变成了“全时防控”。管理人员不用再担心巡查频率不够因为系统的“眼睛”是7×24小时持续工作的也不用担心责任认定扯皮因为每一帧告警都附带了截图和录频时间戳清清楚楚。我们项目上线一个月后离岗违纪的“发现率”从过去巡查的不足10%直接提升到接近100%而且大部分告警都能在离岗后两分钟内触发。我也要提醒一句全时防控不代表完全无人值守。系统再聪明仍然需要人去做最后决策。比如某个岗位长时间无人系统告警了管理员需要判断是人员临时外出、身体不适还是真的脱岗这时候视频画面和告警上下文就非常重要。EasyCVR把实时画面、录像回放和告警记录放在同一个界面上刚好支撑了这个决策过程。6.2 在其他业务场景中的复用在岗离岗监测只是视频AI能力的一个切片。我做完这个项目之后发现同样的视频汇聚AI分析架构稍微调整模型和规则就能复用到完全不同的业务场景中。比如同一个平台把“在岗离岗”规则换成“区域入侵检测”就能用在变电站、仓库周界防护上把模型换成工服、安全帽识别就能用在工厂安全生产监管上如果再结合车牌识别算法还能用于停车场和园区出入口管理。EasyCVR本身是视频汇聚和分析底座底层能力是通用的算法只是上面跑的业务模块。如果你们单位已经有一套稳定的视频监控系统我强烈建议先把视频汇聚做起来再在汇聚平台的基础上叠加一两个刚需的AI分析场景。不要想着一步到位先把监管上最痛的点解决掉比如在岗离岗监测让管理层看到实实在在的效果后续推广AI方案的资金和资源都会顺畅很多。视频AI的价值不是取代视频监控而是让沉淀多年的视频数据真正“活”起来变成管理动作的一部分。我个人在实际操作中的体会是做这类项目最忌讳一上来就追求复杂算法、高并发指标。先想清楚“谁在看告警、告警之后怎么处置、什么样的误报率可以接受”再把技术方案往这个方向靠项目就会顺利很多。在岗离岗监测这活儿本质上是管理问题AI只是把管理的颗粒度做到了分钟级而已。希望这套从需求到落地的完整拆解能帮准备做同类项目的朋友少走几步弯路。