十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

石化行业AI视觉巡检方案:从算法选型到告警联动实战

石化行业AI视觉巡检方案:从算法选型到告警联动实战 简介石化行业人工智能巡检解决方案以36页PPT形式系统梳理石油化工行业安全巡检的现状与升级路径。内容面向石化企业安全监督、生产运行及智能化改造相关人员针对人工巡检存在的高危环境风险、效率低、监控系统依赖肉眼识别等痛点提出以AI视频识别、告警联动为核心的自动化巡检方案覆盖智能安防、场站巡检、油气田开采及炼化厂区等典型场景。资源共1个文件为pptx演示文稿压缩包大小44.38MB便于直接预览与二次编辑。方案按五章展开先分析行业安全巡检存在的问题再说明人工智能在石化行业的提升方向进而给出视频智能监控、轮式或轨道机器人、无人机及智能头盔等综合巡检系统架构并配有案例场景和定制算法简介兼顾思路框架与落地参考。该资源已有86人学习浏览适合正在规划石化智能巡检项目或编写相关解决方案的读者快速获取体系化内容。1. 人工巡检与AI巡检的分水岭在哪炼化厂区夜间值班几百路摄像头轮播一个渗漏点出现在画面边缘可能要等到下一轮巡检才能被看见。石油化工生产环境高温高压、易燃易爆检维修环节更是事故高发期中石油和中石化2018—2021年事故统计里检维修环节安全事故占整个石化行业的40%以上。人工巡检不是不努力而是存在天然的视野盲区、判断差异和时段空缺普通监控系统也只是把“人眼”搬到中控室并没有解决秒级发现异常的问题。人工智能巡检正是从这一层切入用算法识别烟火、安全帽、漏油、仪表异常、人员违规行为联动告警与工单把事后追溯变成实时预警。这套方案适合安全环保、生产运行、设备管理三条线的工程师也适合做炼化装置智能巡检系统选型决策的技术负责人。2. 算法选型烟火、安全帽、泄漏、抽油机摆臂识别的检测逻辑2.1 检测任务不是统一模型能搞定的这套方案里提到的“算法仓”不是一个大模型包打天下而是按任务拆成目标检测、行为识别、语义分割、OCR读数和运动分析。先分清任务边界再去调参数误报率和漏报率才有实际意义。烟火识别是典型的目标检测加时序确认。单帧检测到火苗或浓烟并不足以告警因为在石化现场的夜间照明、阳光反射、蒸汽排放都可能制造假阳性。常见做法是检测到目标后连续3到5帧做空间重叠校验再输出事件。安全帽、工服检测看起来是普通目标检测真正的难点在远处小目标和遮挡。现场摄像头如果只有1080P人员站在30米外头部可能只有10多个像素这时就要通过RoI区域设定让算法只关注作业面或者联动PTZ摄像机把目标拉近后再识别。打电话、抽烟、人员跌倒属于行为识别不能只用静态框判断。打电话行为需要结合人体关键点判断手部与耳部的距离关系抽烟则要同时看到手部运动轨迹和嘴部区域小目标。漏油和泄漏检测更适合用固定摄像机加背景建模通过帧间差分和语义分割把“新增的油污区域”从光照变化中分离出来。抽油机摆臂识别和光杆断脱检测本质上是对摆杆做跟踪摆杆角度呈周期性变化断脱后周期突然消失这个特征比单纯判断“有没有杆”更可靠。2.2 一个可跑的推理代码框架在边缘AI盒子上验证算法流程时可以先写一个轻量Python脚本把视频流、推理、事件输出跑通。下面骨架和工业部署中的逻辑基本一致只是省去了模型加密和负载均衡部分。import cv2 import json import time import numpy as np # 以ONNX导出的检测模型为例 import onnxruntime as ort session ort.InferenceSession( petro_inspect.onnx, providers[CUDAExecutionProvider, CPUExecutionProvider] ) # 类别顺序以训练时labels.txt为准 class_names [fire, smoke, helmet, oil_leak, phone_call, no_suit] # 只检测画面中的装置区域减少计算量 region [(100, 200), (1280, 720)] # 每3帧推理一次适合静态监控场景 skip_frame 3 # 同一类事件只允许10秒内报一次避免告警风暴 cooldown 10 last_event_time {} cap cv2.VideoCapture(rtsp://192.168.1.20:554/stream1) frame_idx 0 while True: ret, frame cap.read() if not ret: break frame_idx 1 if frame_idx % skip_frame ! 0: continue x1, y1 region[0] x2, y2 region[1] roi frame[y1:y2, x1:x2] resized cv2.resize(roi, (640, 640)) # 归一化、BGR转RGB、CHW转换等操作按模型要求实现 # outputs包含[x1, y1, x2, y2, score, class_id] outputs session.run(None, {input: blob}) # 过滤低置信度目标并映射回原始画面坐标 for det in outputs[0]: score float(det[4]) class_id int(det[5]) if score 0.45: continue # 计算事件冷却时间 now time.time() if now - last_event_time.get(class_id, 0) cooldown: continue last_event_time[class_id] now event { algorithm_type: class_names[class_id], confidence: round(score, 3), bbox: [int(det[0]) x1, int(det[1]) y1, int(det[2]) x1, int(det[3]) y1], timestamp: now } print(json.dumps(event, ensure_asciiFalse))逻辑说明模型加载时优先用CUDA边缘盒子没有GPU就自动落到CPUOpenCV读取RTSP流适合快速验证生产环境建议用GStreamer管道降低解码延迟。skip_frame设3意味着每秒大约做8次推理1080P画面下对Jetson NX级别设备压力不大。cooldown字段很关键它能避免同一处漏油在几分钟内触发几十条告警同时又不影响新事件的实时性。置信度参数需要根据场景调整烟火建议0.40安全帽0.45漏油0.50。低阈值配合多帧确认比单帧高阈值更稳。遇到逆光场景先处理摄像头图像质量再调算法否则模型输入本身就有问题。2.3 算法仓参数与误报控制平台里的算法仓允许每类算法单独启停这对现场调试非常重要。比如白天只开安全帽和烟火识别夜间再打开周界入侵。石化场景下常见配置可以这样设置算法名称核心检测方式推荐RoI关键参数常见误报来源烟火识别目标检测加时序确认罐区、装卸区score≥0.40连续≥3帧阳光反射、照明灯光安全帽/工服目标检测加关键点作业面、装置区开启小目标增强远处人员、遮挡打电话识别人体关键点中控室、巡检路手到耳距离阈值挠头、揉眼漏油识别背景分割加语义分割油泵、法兰区变化面积≥0.5%画面光照突变、水迹抽油机状态运动跟踪加频率分析抽油机摆杆摆动中值频率摄像机抖动仪表读数OCR加指针分割压力表、温控仪读数变化率阈值表盘反光、遮挡现场调试最耗时的是“误报来源”这一列。比如漏油识别很容易把雨后水迹当成油污解决方法不是提高置信度而是在算法前加一个“红外或时序滤波”水迹面积会随蒸发变化油污区域基本稳定。处理完这类物理因素算法阈值才有意义。3. 端边云协同视频智能监控告警平台与多设备接入3.1 平台分层与数据流这套方案的架构分成终端层、接入层、服务层和应用层。终端层包括固定摄像头、轮式机器人、轨道机器人、无人机和智能头盔接入层需要完成视频流的加密传输和设备管理服务层运行算法推理、告警存储、数据分析和数字孪生应用层面向PC端、移动端和数据大屏。设计上要特别注意“边云分工”。视频流如果全部送上云平台几百路摄像头会占用大量带宽中心服务也扛不住。更好的做法是边缘节点直接拉取RTSP流做推理只把事件结果、告警截图和必要的关键帧上传中心。中心平台负责跨场站分析、工单流转和风险报表。主控室正在运行的DCS/PLC/SCADA系统可以通过API或消息队列接收告警事件在现场和中控之间形成联动闭环。3.2 边缘节点部署参数边缘节点可以是一台Jetson设备也可以是普通AI盒子。部署时不要急着跑模型先把视频源和网络链路调通。下面是一份常用的边缘节点配置文件edge_node: id: flash-zone-01 input: - url: rtsp://admin:******192.168.0.64:554/Streaming/Channels/101 source_type: camera resolution: 1920x1080 fps: 25 inference: interval: 3 batch_size: 1 device: cuda:0 alarm: webhook: https://center.example.com/api/alarm/push upload_image: true cooldown: 10 storage: local_cache: /data/edge_cache max_days: 3interval表示每3帧做一次推理。画面中大部分区域是静态装置逐帧推理只会增加GPU负载。batch_size在边缘设备上固定为1即可大batch在低算力设备上反而增加延迟。upload_image开启后边缘节点直接把报警截图推送到中心中心无需再回拉视频流。local_cache用于网络断连时暂存事件网络恢复后自动补传。接入视频源前可以先在终端上验证RTSP流是否正常ffmpeg -rtsp_transport tcp -i rtsp://192.168.0.64:554/Streaming/Channels/101 -t 10 -r 1 -f image2 /tmp/preview_%02d.jpg-rtsp_transport tcp强制走TCP避免UDP丢包导致的花屏和拉流失败-t 10只取10秒视频-r 1每秒保存一张图片。看到预览图片后再配置服务器能省下大量排障时间。如果无法出图优先检查摄像头子码流是否独立、账号权限是否包含视频预览。3.3 多设备联合调度与数字孪生方案中的“智能联合巡检平台”需要把固定摄像头、机器人、无人机统一接入。固定摄像头是静态资源轨道机器人沿固定路线巡轮式机器人适合室外复杂地形无人机主要补盲高后果区和管线沿线。统一调度的前提是事件格式统一。无论设备来自哪个厂商上报到中心的事件都必须包含设备ID、设备类型、位置、时间、算法类型和置信度。中心平台再根据设备位置和任务优先级决定是否派出机器人复核。数字孪生模块把设备轨迹、告警位置和实时画面叠加到三维模型上调度中心可以快速判断异常发生在哪个装置、哪条管线附近。这类系统最怕设备时钟不同步。所有边缘节点必须开启NTP同步保证告警时间和数据回放时间一致否则跨设备关联分析会出现事件错位。4. 多类巡检设备实操摄像头、轨道机器人、无人机、智能头盔的参数与命令4.1 摄像头日常巡检方案固定摄像头日常巡检主要做三件事读表、查漏、看行为。仪表读取对安装角度要求很高摄像头与表盘平面夹角尽量控制在30度以内距离根据表盘大小调整保证表盘短边至少占画面宽度的15%。在光线复杂区域打开背光补偿和去雾固定白平衡避免算法在不同色温下判断不一致。漏油检测更适合设在油泵、法兰和阀门附近。方案中提到的“多维度检测算法”通常包括颜色、纹理、面积变化和位置稳定性四个维度。摄像头要有稳定的安装位置风吹导致的画面晃动会让背景差分算法崩溃。画面出现连续抖动时先做电子稳像或重新加固支架再谈识别精度。PTZ摄像头巡检需要预置位。以常见平台API为例可以通过命令让设备转动到指定位置curl -X POST http://192.168.1.10:8080/api/v1/camera/ptz \ -H Content-Type: application/json \ -d { device_id: CAM-04, action: goto_preset, preset_id: 5 }这条命令让摄像头回到预置位5等待画面稳定后再启动AI推理。不同厂商SDK的字段名不完全一样可能是preset或set_preset。在边缘节点里建议封装一层PTZ控制服务上层业务只负责调用统一接口避免被厂商SDK绑死。4.2 轨道机器人和轮式机器人参数轨道机器人可靠性高适合罐区和装置区轮式机器人灵活但受地面条件限制。从这套方案看机器人采用24小时室外无人值守设计防护等级IP656轮驱动配3D激光雷达。部署时重点调巡检速度和停机识别时间。控制项推荐设置说明巡检速度0.30.5m/s速度过快会导致图像模糊、识别率下降表计拍摄距离0.52m用激光测距或3D雷达保持定位精度停机识别时间35秒机器人到位后等待设备稳定再采集无线通信5G或WiFi6大流量视频回传时降低码率充电策略低于30%触发返航防止巡检任务中断机器人在巡检点停下来后不建议立刻抓图。自身运动带来的微小震动会持续半秒到一秒等待2秒再触发拍摄图像清晰度明显提升。轨道机器人的轨道连接处要定期检查轮式机器人在装置区要设置虚拟围栏防止误入检修吊装区域。4.3 无人机巡检高后果区油气管道高后果区路线长、位置偏适合用无人机加边缘设备做定期巡检。无人机按航线自动飞行机载AI盒子直接识别工程车辆、农用机械、违章占压和管道周边异常施工。与地面摄像头不同无人机视角变化大目标尺寸不稳定算法推理时要把检测框的宽高比约束放宽。航线设置建议高度50到80米速度5到8m/s航向重叠率30%以上。太阳能加AI边缘设备可以作为固定补盲点沿管线布置在杆塔上平时待机检测到移动目标或烟雾后自动唤醒。无人机图传码率要控制在2Mbps左右否则偏远地区容易断链本地存储的关键帧在无人机降落后自动上传。4.4 智能头盔与人工巡检互补智能头盔把“人到现场”和“AI增强”结合起来。巡检人员戴上头盔第一视角视频通过5G或WiFi传到边缘节点后台实时叠加设备温度、历史记录和操作规程。头盔的摄像头最好支持防抖否则移动中画面拖影严重。部署时要设置上行码率不超过4Mbps减少弱网环境下的卡顿。防爆要求比普通AR设备高得多头盔本体、电池和无线模块都要满足石化区域防爆认证。头盔采集到的视频同样需要经过加密网关传输不能直接暴露在公网。智能头盔解决的核心问题是“人员到位了但看不到隐患”AI负责帮人在复杂视野里快速定位风险点。5. 告警联动与工单闭环从算法仓到风险报表的配置5.1 告警事件的结构化与联动策略AI识别结果如果只是一段文字“发现烟火”中心平台很难处置。告警事件需要结构化至少包含时间、设备、位置、算法类型、置信度、检测框和截图地址。下面是一个标准事件体{ event_id: EVT-20250611-103456-001, timestamp: 2025-06-11T10:34:5608:00, device_id: CAM-07, device_type: fixed_camera, location: 常减压装置-换热区, algorithm_type: smoke_fire, confidence: 0.83, bbox: [1280, 410, 1502, 610], snapshot_url: http://edge-01/cache/EVT-xxxx.jpg }bbox是目标在原始画面中的像素坐标后续可以联动PTZ相机放大跟踪也可以在视频回放时直接定位。带内网截图地址即可不要暴露到公网。联动策略建议分三级一级事件代表明火、泄漏、人员倒地等高风险问题立即推送手机并触发现场声光报警二级事件如安全帽未戴、打电话推送到值班坐席三级事件如仪表读数趋势异常只写入日志供日检分析。如果项目要求接入DCS系统一级事件可以写入一个寄存器地址让中控DCS弹出对应画面。5.2 Webhook接入代码告警推送最易懂的方式是Webhook。中心平台向工单系统或企业微信机器人发HTTP请求格式可以这样写import requests import json alarm { event_id: EVT-20250611-103456-001, event_type: no_safety_helmet, level: 2, location: 催化裂化装置检修区, source: edge-node-03 } try: resp requests.post( http://192.168.1.30:8080/api/v1/workorder, datajson.dumps(alarm), headers{Content-Type: application/json}, timeout3 ) resp.raise_for_status() except Exception: # 写入本地失败队列网络恢复后重试 pass逻辑说明Webhook调用必须设置超时并捕获异常。中心平台短暂不可用时边缘节点要把事件先写到本地队列之后按指数退避重试。更可靠的方式是使用MQTT的QoS1消息确保消息不丢失。实际项目里告警推送失败比识别漏报更影响用户信任宁可延迟也不能丢。5.3 从告警记录到风险报表告警记录建议存在关系型数据库中方便跨场站统计。表结构可以简单设计为CREATE TABLE alarm_record ( event_id VARCHAR(64) PRIMARY KEY, device_id VARCHAR(32), site_name VARCHAR(64), algorithm_type VARCHAR(32), confidence FLOAT, snapshot_url VARCHAR(255), handle_status VARCHAR(16), handle_user VARCHAR(32), create_time DATETIME, close_time DATETIME );风险报表可以把30天内的告警按天、场站、算法类型聚合SELECT date(create_time) AS day, site_name, algorithm_type, COUNT(*) AS alarm_count, SUM(CASE WHEN handle_status processed THEN 1 ELSE 0 END) AS processed_count FROM alarm_record WHERE create_time now() - INTERVAL 30 DAY GROUP BY day, site_name, algorithm_type ORDER BY day DESC, alarm_count DESC;processed_count / alarm_count得到处置率。如果某个站点报警量突然升高但处置率低大概率是调参问题或摄像头故障需要优先处理。这样风险报表就不再是简单的数量展示而是能指导下一次算法调优。提示现场跑AI巡检时先保证摄像头画面清晰稳定、时间同步再做算法调参能省一半排障时间。6. 红外热成像与可见光校正的设备超温预警调参技巧6.1 发射率设置方案里提到“通过可见光摄像头识别到待测温设备再通过红外热图像和可见光图像校正分析判断设备是否超温”。这个逻辑看起来简单实际调试时最容易因为发射率设置错误导致整体温度偏低或虚高。红外热像仪接收的是物体表面辐射能量。氧化金属表面发射率大约0.8抛光金属只有0.1左右直接测量抛光电机外壳温度显示会比实际低几十度。现场需要对不同材质分别设置发射率漆面设备取0.85氧化金属取0.8管道保温层取0.9。同时在软件里填入反射温度、距离和相对湿度。露天设备还会受到太阳辐射影响最好在巡检前遮盖遮挡物或取设备背光面测温。6.2 图像校正与阈值告警可见光和热像镜头安装位置不同画面会有偏移。选4个对应的角点用OpenCV计算仿射变换矩阵import cv2 import numpy as np # src_pts来自可见光图像dst_pts来自热红外图像 src_pts np.float32([[100, 120], [400, 120], [400, 320], [100, 320]]) dst_pts np.float32([[96, 118], [402, 121], [401, 324], [99, 318]]) M cv2.estimateAffinePartial2D(src_pts, dst_pts)[0] warp_img cv2.warpAffine(ir_img, M, (vis_width, vis_height))这段代码把热红外图像映射到可见光坐标。之后用可见光算法输出的设备检测框作为RoI在映射后的热图上取中部区域温度值再做3x3中值滤波去除坏像素点。检测框外扩会影响测温准确度通常收缩到原始框的95%只保留设备主体内部区域。温度阈值不能拍脑袋。电机外壳表面温度超过90度或温升超过环境温度60K时告警油泵轴承温度与环境温度差值超过45K时告警。环境温度要用同一副热像图里的背景区域平均温度不要用气象站数据。持续5分钟超过阈值再触发告警可以有效过滤开关柜门短暂开启造成的温度波动。调参完成后把阈值配置固化到算法仓后续每次新增设备都按这套流程重新标定。本文还有配套的精品资源点击获取
返回列表