45 KiB
铁路无人机智能巡检系统设计说明书
版本:V1.0
1. 设计目标与范围
1.1 建设目标
建设一套面向铁路无人机巡检业务的智能分析系统,覆盖无人机任务接入、多源巡检数据处理、AI 隐患识别、空间规则研判、告警工单闭环、模型数据迭代和运行监控等能力。
系统目标包括:
- 自动接入无人机图像、视频、红外热图、激光雷达点云、TIF/DEM/DSM 和飞控定位数据。
- 对工务、防洪、供电、电务、安防、施工监管等场景进行智能识别和风险判定。
- 将 AI 识别结果与线路 GIS、里程、设施台账、禁入区域、天窗时间、施工计划、业务阈值进行融合。
- 输出可追溯、可复核、可闭环的告警工单。
- 支撑边缘端实时分析、中心端离线分析、点云三维分析和模型持续迭代。
- 为现场验收、运维运营和后续场景扩展提供标准化接口和数据体系。
1.2 业务范围
系统覆盖以下巡检业务域:
| 业务域 | 典型场景 | 核心能力 |
|---|---|---|
| 工务巡查 | 违法开挖、深基坑、违规堆土、塔吊、烟火、危树、彩钢板、落石、裂缝、水毁、沟渠堵塞 | 可见光检测、分割、变化检测、GIS 缓冲区规则、三维测量 |
| 防洪监测 | 防洪点形变、边坡变化、体积异常 | LAS/TIF 处理、点云配准、DEM 差分、体积计算 |
| 供电保障 | 接触网异物、设备发热、螺栓缺失、鸟巢 | 小目标检测、设备 ROI、红外测温、部件级识别 |
| 电务巡检 | 信号机破损倾斜、电缆槽盖板缺失、线缆异物、杆上设备发热 | 设施检测、缺陷分类、倾角估计、热异常识别 |
| 安防治理 | 人员入侵、动物入侵、围墙破损 | 视频检测、目标跟踪、禁入区域规则、时间规则 |
| 施工监管 | 安全帽、反光衣、施工合规 | PPE 检测、施工区域规则、施工计划关联 |
1.3 设计原则
- 场景化建模:不同隐患采用不同算法组合,不用单一模型承载所有任务。
- 规则可配置:报警距离、时间窗口、阈值、豁免区、重复告警合并策略均配置化。
- 数据可追溯:每条告警保留原始数据、模型版本、规则命中、人工确认和工单状态。
- 边云协同:实时高危场景优先边缘处理,复杂点云/高精度复核在中心端完成。
- 渐进上线:先覆盖高价值、低歧义场景,再扩展裂缝、螺栓、形变等高难度场景。
- 闭环迭代:误报、漏报、重复告警、人工确认结果全部进入数据闭环。
- 接口标准化:无人机平台、巡检平台、工单系统和 AI 服务通过统一协议解耦。
2. 系统总体设计
2.1 总体架构
系统采用“接入层、数据层、算法层、规则层、业务层、展示层、运维层”的分层架构。
flowchart TB
subgraph A["接入层"]
A1["无人机平台 SDK/API"]
A2["视频流 RTSP/RTMP/GB28181"]
A3["图片/红外/点云/TIF 文件接入"]
A4["巡检任务/施工计划/设施台账"]
end
subgraph B["数据层"]
B1["对象存储"]
B2["PostgreSQL/PostGIS"]
B3["Redis 缓存"]
B4["Kafka 消息队列"]
B5["样本与标注库"]
end
subgraph C["算法层"]
C1["可见光检测/分割"]
C2["视频实时分析"]
C3["红外热异常分析"]
C4["点云/TIF 形变分析"]
C5["变化检测与基线比对"]
end
subgraph D["规则层"]
D1["GIS 空间规则"]
D2["业务阈值规则"]
D3["天窗/施工豁免规则"]
D4["告警聚合去重"]
end
subgraph E["业务层"]
E1["巡检任务管理"]
E2["告警中心"]
E3["工单闭环"]
E4["模型迭代管理"]
E5["统计报表"]
end
subgraph F["展示层"]
F1["Web 管理端"]
F2["GIS 一张图"]
F3["三维点云/剖面视图"]
F4["移动端/大屏"]
end
A --> B --> C --> D --> E --> F
E --> B
D --> B
C --> B
2.2 部署拓扑
系统支持边缘端和中心端混合部署。
| 部署节点 | 部署模块 | 适用任务 |
|---|---|---|
| 无人机/载荷端 | 轻量推理 SDK、关键帧抽取、设备状态上报 | 烟火、人员入侵等高危实时粗检 |
| 机巢边缘服务器 | 视频流分析、图片分析、红外预处理、任务缓存、告警初筛 | 高频巡检、低延迟告警、弱网缓存 |
| 中心端服务器 | 业务平台、规则引擎、对象存储、数据库、点云分析、模型管理 | 工单闭环、综合研判、离线复核、模型迭代 |
| 训练服务器 | 样本管理、训练任务、模型评测、模型发布 | 模型开发、灰度发布、版本回滚 |
推荐拓扑:
flowchart LR
U["无人机/机巢"] --> E["边缘计算节点"]
E --> MQ["消息队列/断点续传"]
MQ --> C["中心业务平台"]
C --> S["对象存储/数据库/PostGIS"]
C --> A["AI 离线分析集群"]
A --> M["模型管理与样本库"]
C --> W["巡检平台/工单系统"]
C --> V["Web/GIS/三维可视化"]
2.3 核心数据流
系统包含三类主数据流。
第一类是实时视频流:
- 巡检任务启动。
- 无人机平台推送实时视频流和飞行状态。
- 边缘分析服务按场景抽帧、检测、跟踪。
- 高危结果进入规则引擎。
- 命中规则后生成告警并推送工单。
第二类是巡飞后离线分析流:
- 巡飞结束后上传图片、红外热图、航迹、元数据。
- 数据接入服务生成分析任务。
- AI 批处理服务按场景运行检测、分割、变化检测。
- 规则引擎进行空间和业务判定。
- 告警中心生成工单,人工确认后回流样本库。
第三类是点云/TIF 精密分析流:
- 激光雷达巡飞生成 LAS/LAZ。
- 前端或中心端处理成 TIF/DEM/DSM。
- 与历史基准数据进行配准和差分。
- 计算变化区域、面积、体积和置信度。
- 形成防洪点形变告警和三维复核材料。
3. 模块设计
3.1 巡检任务管理模块
模块职责:
- 管理巡检计划、巡检任务、航线、巡检场景、任务状态。
- 对接无人机平台进行任务下发、状态同步、异常中断处理。
- 将任务与线路、里程、设施、巡检专业、分析模型进行绑定。
输入:
- 巡检计划、线路范围、巡检专业、航线编号、任务时间。
- 无人机平台返回的任务状态、飞行状态、数据上传状态。
输出:
- 分析任务、数据接入任务、告警关联任务 ID。
- 任务执行日志、异常状态、重试任务。
关键设计:
- 任务状态机:
created -> dispatched -> flying -> data_uploading -> analyzing -> completed -> closed。 - 异常状态:
dispatch_failed、flight_aborted、upload_failed、analysis_failed。 - 任务需支持幂等下发,同一个业务任务多次请求不能生成重复航线任务。
- 任务需支持按线路、里程、设备类型、时间范围查询。
3.2 无人机数据接入模块
模块职责:
- 对接无人机厂商 SDK/API,接收实时流、图片、红外、点云、元数据。
- 统一不同厂商数据格式,形成系统内部标准数据对象。
- 支持大文件断点续传、弱网缓存、文件校验和重传。
输入:
- 实时视频流、巡检图片、红外热图、LAS/LAZ、TIF/DEM/DSM。
- RTK/PPK、经纬度、飞行高度、姿态角、云台角、相机内参、拍摄时间。
输出:
- 标准化数据资源记录。
- 对象存储文件地址。
- 数据完成事件。
关键设计:
- 文件进入对象存储,元数据进入 PostgreSQL/PostGIS。
- 视频流进入边缘分析服务,关键帧和告警片段回存对象存储。
- 每个资源生成唯一
resource_id,并记录task_id、line_id、mileage_range、capture_time。 - 上传完成后向 Kafka 发布
inspection.data.ready事件。
3.3 数据预处理模块
模块职责:
- 对图像、视频、红外、点云进行质量检查、增强、坐标标准化和 ROI 裁剪。
- 生成算法服务可直接消费的数据包。
图像预处理:
- 去畸变、曝光修正、去模糊评估、雨雾增强、夜间增强。
- 大图切片,适配小目标检测。
- 基于航迹和相机参数估算 GSD。
视频预处理:
- 抽帧、关键帧选择、运动目标跟踪、重复帧过滤。
- 按告警前后时间窗口截取视频片段。
红外预处理:
- 读取温度矩阵。
- 设置发射率、环境温度、距离补偿参数。
- 与可见光图像做 ROI 对齐。
点云预处理:
- 点云去噪、体素降采样、地面滤波、坐标转换。
- 控制点校正、ICP/NDT 配准、栅格化为 DEM/DSM/TIF。
3.4 AI 算法引擎模块
模块职责:
- 承载目标检测、实例分割、语义分割、变化检测、点云分析、热异常分析。
- 对外提供统一推理接口。
- 管理模型版本、推理配置、阈值和灰度发布。
算法服务划分:
| 服务 | 输入 | 输出 | 场景 |
|---|---|---|---|
vision-detector |
图片/关键帧 | bbox、类别、置信度 | 挖机、塔吊、人员、动物、鸟巢、信号机 |
vision-segmenter |
图片/切片 | mask、多边形、面积 | 基坑、堆土、裂缝、积水、滑坡、围墙破损 |
video-analyzer |
视频流 | 目标轨迹、持续时间、截图 | 烟火、人员入侵、动物入侵 |
thermal-analyzer |
红外热图 + ROI | 最高温、平均温、温升 | 接头发热、杆上设备发热 |
pointcloud-analyzer |
LAS/TIF/DEM | 变化区域、体积、剖面 | 防洪点、危树、堆土、边坡形变 |
change-detector |
当前数据 + 基线数据 | 新增/变化目标 | 塔吊、彩钢板、基坑、边坡 |
关键设计:
- 算法输出只描述“识别到了什么”和“测量值是多少”。
- 是否告警由规则引擎统一判定。
- 模型服务统一返回
model_name、model_version、confidence、threshold、inference_time_ms。 - 生产模型采用 ONNX/TensorRT 部署,训练模型采用 PyTorch。
3.5 GIS 空间规则模块
模块职责:
- 将 AI 结果映射到线路、里程、设施和空间区域。
- 判断目标是否位于线路缓冲区、防护网内、施工区域、重点防洪点等范围。
- 输出规则命中结果和解释。
核心能力:
- 坐标系转换:WGS84、GCJ02、地方工程坐标。
- 线路缓冲区计算:100 米、500 米或按业务配置。
- 里程映射:经纬度/工程坐标映射到
Kxxx+yyy。 - ROI 判断:点、框、多边形与线路、防护网、站区、边坡区域的空间关系。
- 空间聚合:同一目标多帧、多图、多任务结果合并。
关键设计:
- 所有空间对象存入 PostGIS。
- AI 结果进入规则引擎前需具备
geometry字段。 - 无法精确定位时标记为
location_confidence=low,进入人工复核队列。
3.6 业务规则引擎模块
模块职责:
- 根据场景规则、空间规则、时间规则、专业阈值、豁免规则判定告警。
- 支持规则配置、版本管理、灰度启用和命中解释。
规则类型:
| 规则类型 | 示例 |
|---|---|
| 空间规则 | 线路 100 米内塔吊报警,防护网内人员报警 |
| 时间规则 | 非天窗时间人员进入防护网报警 |
| 阈值规则 | 防洪点体积变化超过 1 立方米报警 |
| 温度规则 | 设备绝对温度或相对温升超过阈值报警 |
| 变化规则 | 新增彩钢板、新增塔吊报警,存量不重复报警 |
| 豁免规则 | 已确认正常施工区域在有效期内不重复报警 |
| 聚合规则 | 同一目标在 30 分钟内只生成一条主告警 |
输出:
alarm_candidate:疑似告警。alarm:正式告警。suppressed_alarm:被豁免或去重抑制的结果。
3.7 告警中心模块
模块职责:
- 管理告警生成、分级、去重、证据组织、处置建议和状态流转。
- 对接巡检平台和工单系统。
告警状态:
stateDiagram-v2
[*] --> pending
pending --> pushed
pushed --> accepted
pushed --> rejected
accepted --> processing
processing --> resolved
rejected --> false_positive
resolved --> closed
false_positive --> closed
告警等级:
critical:影响行车安全或可能快速扩大的高危事件,如接触网高危异物、明火、严重滑坡。high:需要及时处置,如违法开挖、人员入侵、设备严重发热。medium:需要复核或计划处置,如广告牌破损、围墙破损、沟渠堵塞。low:观察类或趋势类,如轻微变化、低置信度疑似隐患。
3.8 工单闭环模块
模块职责:
- 根据告警创建工单,跟踪派发、接单、处置、复核、关闭。
- 接收人工确认结果,并将结果回写样本库和规则白名单。
关键设计:
- 告警与工单一对一或多对一关联。
- 对同一区域重复告警进行工单合并。
- 人工确认类型包括:真实隐患、误报、重复、正常施工、已知存量、需持续观察。
- 正常施工、已知存量类结果可生成豁免记录。
3.9 基线库与变化检测模块
模块职责:
- 管理塔吊、彩钢板、基坑、防洪点、边坡等需要历史对比的目标基线。
- 支持目标级、区域级、三维底座级基线。
基线类型:
- 目标基线:塔吊、彩钢板、广告牌、已确认基坑。
- 区域基线:施工区域、禁入区域、防洪点。
- 三维基线:点云、DEM、DSM、TIF。
- 状态基线:已闭环告警、已确认存量、豁免期。
变化检测流程:
- 获取当前巡检结果。
- 查询空间邻近历史基线。
- 计算目标相似度、位置距离、外观变化、几何变化。
- 输出新增、消失、扩大、破损、未变化。
- 将变化结果提交规则引擎。
3.10 数据标注与模型迭代模块
模块职责:
- 管理样本入库、标注任务、质检、训练集划分、模型评测、模型发布。
样本来源:
- 历史巡检数据。
- AI 告警截图和视频片段。
- 误报样本。
- 漏报补录样本。
- 专家复核样本。
- 高风险场景人工标注样本。
模型迭代流程:
- 样本采集和清洗。
- 标签体系匹配。
- 标注和质检。
- 训练集、验证集、测试集划分。
- 模型训练和评测。
- 边缘端性能压测。
- 灰度发布。
- 生产版本替换和回滚预案。
3.11 系统管理与运维模块
模块职责:
- 用户、角色、权限、组织、线路权限管理。
- 模型版本、规则版本、接口配置、厂商配置管理。
- 日志、审计、监控、告警、健康检查。
权限模型:
- 平台管理员:系统配置、模型发布、规则维护。
- 业务管理员:线路、任务、工单、统计。
- 专业复核人员:查看告警、确认结果、提交处置意见。
- 运维人员:查看服务健康、日志、资源状态。
- 第三方系统账号:通过 API 访问限定接口。
4. 模块间交互方式
4.1 巡检任务下发交互
sequenceDiagram
participant P as 巡检平台
participant T as 任务管理服务
participant U as 无人机平台
participant D as 数据接入服务
participant A as 分析调度服务
P->>T: 创建巡检任务
T->>U: 下发航线任务
U-->>T: 返回任务编号
U-->>T: 飞行状态回调
U-->>D: 上传图片/视频/红外/点云
D-->>A: 发布数据就绪事件
A-->>T: 更新任务为分析中
交互要点:
- 任务下发接口必须幂等。
- 无人机平台回调需带厂商任务 ID 和系统任务 ID。
- 数据接入完成后不直接生成告警,而是发布分析事件。
4.2 实时视频告警交互
sequenceDiagram
participant U as 无人机视频流
participant V as 视频分析服务
participant R as 规则引擎
participant G as GIS 服务
participant C as 告警中心
participant W as 工单系统
U->>V: 推送视频流
V->>V: 抽帧/检测/跟踪
V->>G: 请求空间定位
G-->>V: 返回线路/里程/区域
V->>R: 提交候选事件
R-->>C: 生成告警
C->>W: 推送工单
适用场景:
- 烟火。
- 人员入侵。
- 动物入侵。
- 施工机械持续作业。
4.3 离线图片分析交互
sequenceDiagram
participant D as 数据接入服务
participant Q as Kafka
participant S as 分析调度服务
participant AI as AI 推理服务
participant R as 规则引擎
participant C as 告警中心
D->>Q: inspection.data.ready
Q->>S: 消费数据事件
S->>AI: 创建批处理推理任务
AI-->>S: 返回检测/分割结果
S->>R: 提交结构化识别结果
R-->>C: 输出告警/抑制/复核
交互要点:
- 批处理任务支持断点续跑。
- 单张图片失败不影响整个巡检任务完成。
- 推理结果必须与原始资源强关联。
4.4 点云/TIF 分析交互
sequenceDiagram
participant D as 点云数据接入
participant P as 点云预处理
participant B as 三维基线库
participant A as 点云分析服务
participant R as 规则引擎
participant C as 告警中心
D->>P: LAS/LAZ/TIF 数据
P->>P: 去噪/配准/栅格化
P->>B: 查询历史基线
B-->>A: 返回基准 TIF/DEM
A->>A: 差分/体积计算
A->>R: 提交变化结果
R-->>C: 生成防洪点形变告警
4.5 工单闭环交互
sequenceDiagram
participant C as 告警中心
participant W as 工单系统
participant H as 人工复核
participant B as 基线/豁免库
participant M as 样本库
C->>W: 创建工单
W-->>C: 返回工单编号
H->>W: 提交处置结果
W->>C: 回传工单状态
C->>B: 更新豁免/基线
C->>M: 写入样本和标签
5. 详细设计
5.1 领域对象设计
核心对象:
| 对象 | 说明 | 关键字段 |
|---|---|---|
InspectionTask |
巡检任务 | task_id、line_id、mileage_start、mileage_end、status、scene_set |
FlightMission |
无人机飞行任务 | mission_id、vendor、route_id、uav_id、flight_status |
InspectionResource |
巡检数据资源 | resource_id、task_id、resource_type、storage_url、capture_time、geometry |
AnalysisJob |
分析任务 | job_id、task_id、resource_id、model_group、status、retry_count |
AIResult |
AI 原始识别结果 | result_id、resource_id、model_version、category、geometry、confidence |
RuleHit |
规则命中记录 | rule_id、result_id、hit_status、reason、rule_version |
Alarm |
告警 | alarm_id、scene、severity、location、evidence、status |
WorkOrder |
工单 | order_id、alarm_id、assignee、status、close_result |
BaselineObject |
基线目标 | baseline_id、object_type、geometry、first_seen_time、status |
ExemptionArea |
豁免区 | exemption_id、scene、geometry、valid_from、valid_to、reason |
ModelVersion |
模型版本 | model_id、version、framework、metrics、status |
5.2 数据存储设计
| 存储 | 技术选型 | 存储内容 |
|---|---|---|
| 关系数据库 | PostgreSQL + PostGIS | 任务、告警、工单、规则、空间对象、台账 |
| 对象存储 | MinIO/S3 | 图片、视频、红外、点云、TIF、报告附件 |
| 缓存 | Redis | 任务状态、视频流状态、热点规则、去重窗口 |
| 消息队列 | Kafka | 数据接入事件、分析任务事件、告警事件、工单回调 |
| 时序监控 | Prometheus | 服务指标、GPU/CPU、推理耗时、队列积压 |
| 日志检索 | OpenSearch/ELK | 应用日志、审计日志、错误日志 |
| 样本库 | 对象存储 + 元数据表 | 训练样本、标注文件、模型评测数据 |
5.3 任务调度设计
任务类型:
- 实时任务:视频流分析,低延迟、高优先级。
- 批处理任务:巡飞后图片/红外分析,中优先级。
- 重计算任务:点云/TIF 分析,高算力、可排队。
- 复核任务:人工确认后触发的二次分析。
调度规则:
critical场景优先使用边缘端实时分析。- 点云任务按照线路、防洪点和数据规模排队。
- 批处理任务按任务完成时间和业务优先级排序。
- 失败任务自动重试,超过次数进入人工处理队列。
5.4 告警去重设计
去重维度:
- 同一任务、同一场景、同一目标类别。
- 空间距离在阈值范围内。
- 时间窗口在配置范围内。
- 目标外观或基线对象相似。
去重策略:
- 查询近 30 分钟或本轮任务内同类告警。
- 判断空间距离和多边形重叠率。
- 若为同一目标,则追加证据,不新建工单。
- 若为新增目标,则生成新告警。
- 若命中豁免区,则记录抑制结果。
5.5 空间定位与里程映射设计
定位流程:
- 从图片或视频帧读取 GPS、RTK、飞高、云台角、相机内外参。
- 将 AI 检测框中心或分割多边形投影到地面坐标。
- 若有正射图或点云数据,优先使用三维投影修正。
- 使用 PostGIS 查询最近线路中心线。
- 计算线路里程、左右侧、距离线路中心线距离。
- 关联最近设施台账。
输出字段:
line_idmileagesidedistance_to_track_mnearest_asset_idlocation_confidence
5.6 规则配置设计
规则配置示例:
{
"rule_code": "tower_crane_100m_new_only",
"scene": "塔吊",
"enabled": true,
"conditions": [
{"field": "distance_to_track_m", "operator": "<=", "value": 100},
{"field": "baseline_match", "operator": "==", "value": false},
{"field": "confidence", "operator": ">=", "value": 0.65}
],
"severity": "high",
"dedupe_window_minutes": 1440,
"action": "create_alarm"
}
规则引擎执行步骤:
- 加载场景规则。
- 补充空间上下文。
- 补充时间上下文。
- 查询豁免区和基线库。
- 执行条件匹配。
- 输出命中原因。
5.7 模型服务设计
模型服务统一协议:
- 输入:资源地址、场景集合、ROI、阈值、任务参数。
- 输出:标准 AI 结果数组。
- 模型服务不直接操作工单。
- 模型服务需支持健康检查、版本查询和灰度流量。
推理服务部署方式:
- Python FastAPI 提供推理服务接口。
- ONNX Runtime/TensorRT 提供加速推理。
- Triton Inference Server 可用于多模型统一托管。
- 点云算法可采用 Python + Open3D,性能敏感部分用 C++/PCL。
5.8 分场景功能实现
5.8.1 违法开挖
实现步骤:
- 数据预处理阶段对线路两侧缓冲区进行 ROI 裁剪。
- 检测挖机、砂石车、施工车辆等施工机械。
- 分割裸土、基坑和施工扰动区域。
- 将目标位置映射到线路缓冲区。
- 查询施工计划和豁免区。
- 未命中豁免且达到置信度阈值时生成告警。
关键点:
- 单纯识别机械不足以判断违法,需要结合施工计划和人工确认。
- 已确认正常施工区域写入豁免区,并设置有效时间。
5.8.2 塔吊
实现步骤:
- 高分辨率图像切片检测塔吊。
- 根据目标位置计算与线路距离。
- 查询塔吊基线库。
- 若为新增且 100 米范围内,生成告警。
- 若为存量,仅更新最新巡检时间。
5.8.3 彩钢板
实现步骤:
- 首轮巡飞建立彩钢板基线。
- 后续巡飞通过目标检测和变化检测识别新增彩钢板。
- 对破损、散落、脱落状态进行分类。
- 按距离线路、面积、状态进行风险分级。
5.8.4 裂缝识别
实现步骤:
- 对挡墙、边坡、隧道口衬砌等区域进行专用低空高分辨率采集。
- 切片进入裂缝分割模型。
- 对裂缝骨架化,计算长度、宽度和方向。
- 根据 GSD 或相机参数换算实际尺寸。
- 输出疑似裂缝,进入人工复核。
5.8.5 防洪点形变
实现步骤:
- 接收 LAS/LAZ 或 TIF/DEM 数据。
- 与历史基准数据进行配准。
- 进行高程差分和变化区域提取。
- 过滤植被、噪声和低置信变化。
- 计算面积、体积、最大高差。
- 超过阈值生成防洪点形变告警。
5.8.6 接触网异物
实现步骤:
- 先定位接触网、线缆、塔杆、横担区域。
- 在 ROI 内进行异物检测和分割。
- 对塑料薄膜、防尘网、风筝等高危类别设置高优先级。
- 多帧确认异物是否持续存在。
- 命中高危规则时生成告警。
5.8.7 设备发热
实现步骤:
- 可见光识别设备部件位置。
- 将设备 ROI 映射到红外热图。
- 读取最高温、平均温和周边环境温度。
- 判断绝对温度、相对温升和历史趋势。
- 生成热异常告警并附带热图证据。
5.8.8 人员和动物入侵
实现步骤:
- 实时视频抽帧检测人员和动物。
- 多帧跟踪过滤偶发误检。
- 判断目标是否在防护网内或禁入区域。
- 判断当前是否为非天窗时间。
- 命中规则后生成入侵告警。
5.8.9 施工规范监管
实现步骤:
- 检测施工区域内人员。
- 对人员头部和躯干区域识别安全帽、反光衣。
- 结合施工计划判断是否属于施工监管场景。
- 对未佩戴安全帽、未穿反光衣生成违规告警。
5.9 边缘端离线容错设计
边缘端需支持:
- 网络中断后本地缓存任务和数据。
- 告警先本地生成,网络恢复后补传中心端。
- 数据上传采用分片和校验。
- 模型包支持本地版本回滚。
- 中心端和边缘端通过心跳维护在线状态。
6. 接口设计
6.1 接口通用约定
协议:
- 内部服务:HTTP REST + Kafka。
- 高性能推理:REST 或 gRPC。
- 文件上传:分片上传或对象存储预签名 URL。
- 视频流:RTSP、RTMP、GB/T 28181 或 WebRTC。
认证:
- 平台用户使用 OAuth2/JWT。
- 第三方系统使用 AK/SK 签名。
- 回调接口增加时间戳、nonce 和签名。
统一响应格式:
{
"code": "0",
"message": "success",
"request_id": "req-20260720-000001",
"data": {}
}
错误码:
| 错误码 | 说明 |
|---|---|
0 |
成功 |
40001 |
参数错误 |
40101 |
未认证或签名错误 |
40301 |
无权限 |
40401 |
资源不存在 |
40901 |
幂等冲突 |
50001 |
系统内部错误 |
50301 |
下游服务不可用 |
6.2 创建巡检任务
接口:POST /api/v1/inspection/tasks
请求:
{
"external_task_id": "EXT-20260720-001",
"line_id": "line-001",
"mileage_start": "K123+000",
"mileage_end": "K130+000",
"route_id": "route-001",
"scene_set": ["违法开挖", "塔吊", "烟火", "人员入侵"],
"priority": "high",
"planned_start_time": "2026-07-20T09:00:00+08:00"
}
响应:
{
"task_id": "task-20260720-0001",
"status": "created"
}
6.3 无人机任务状态回调
接口:POST /api/v1/uav/callbacks/mission-status
请求:
{
"task_id": "task-20260720-0001",
"vendor": "uav-vendor",
"vendor_mission_id": "mission-001",
"status": "flying",
"uav_id": "uav-001",
"timestamp": "2026-07-20T09:10:00+08:00",
"position": {
"longitude": 116.1,
"latitude": 39.1,
"altitude": 120.5
}
}
6.4 巡检数据上传完成回调
接口:POST /api/v1/inspection/resources/complete
请求:
{
"task_id": "task-20260720-0001",
"resources": [
{
"resource_id": "res-001",
"resource_type": "image",
"storage_url": "s3://rail-uav/task-001/img-001.jpg",
"capture_time": "2026-07-20T09:15:00+08:00",
"metadata": {
"longitude": 116.1,
"latitude": 39.1,
"altitude": 118.0,
"gimbal_pitch": -35.0,
"camera_model": "camera-001"
}
}
]
}
响应:
{
"accepted": 1,
"analysis_job_id": "job-20260720-0001"
}
6.5 创建分析任务
接口:POST /api/v1/analysis/jobs
请求:
{
"task_id": "task-20260720-0001",
"resource_ids": ["res-001", "res-002"],
"scene_set": ["塔吊", "彩钢板", "裂缝"],
"analysis_mode": "offline",
"priority": "normal"
}
响应:
{
"analysis_job_id": "job-20260720-0002",
"status": "queued"
}
6.6 AI 推理服务接口
接口:POST /api/v1/inference/detect
请求:
{
"job_id": "job-20260720-0002",
"resource": {
"resource_id": "res-001",
"url": "s3://rail-uav/task-001/img-001.jpg",
"type": "image"
},
"scenes": ["违法开挖", "塔吊"],
"roi": {
"type": "LineStringBuffer",
"line_id": "line-001",
"buffer_m": 100
},
"model_policy": {
"model_group": "vision-detector",
"version": "production"
}
}
响应:
{
"job_id": "job-20260720-0002",
"model": {
"name": "vision-detector",
"version": "v1.0.0"
},
"results": [
{
"category": "塔吊",
"confidence": 0.91,
"bbox": [120, 80, 420, 560],
"polygon": [[120, 80], [420, 80], [420, 560], [120, 560]],
"attributes": {
"object_size": "large"
}
}
]
}
6.7 规则判定接口
接口:POST /api/v1/rules/evaluate
请求:
{
"task_id": "task-20260720-0001",
"result_id": "result-001",
"scene": "塔吊",
"category": "塔吊",
"confidence": 0.91,
"geometry": {
"type": "Point",
"coordinates": [116.1, 39.1]
},
"measurements": {
"distance_to_track_m": 83.2
}
}
响应:
{
"decision": "create_alarm",
"severity": "high",
"rule_hits": [
{
"rule_code": "tower_crane_100m_new_only",
"reason": "线路100米内且未匹配历史基线"
}
],
"suppressed": false
}
6.8 告警推送接口
接口:POST /api/v1/alarms
请求:
{
"task_id": "task-20260720-0001",
"scene": "违法开挖",
"category": "挖机",
"severity": "high",
"confidence": 0.88,
"location": {
"line_id": "line-001",
"mileage": "K123+456",
"longitude": 116.1,
"latitude": 39.1,
"distance_to_track_m": 72.5
},
"evidence": {
"image_url": "s3://rail-uav/task-001/alarm-001.jpg",
"video_clip_url": "s3://rail-uav/task-001/alarm-001.mp4"
},
"rule_hits": ["线路100米内", "非豁免区", "施工机械"]
}
响应:
{
"alarm_id": "alarm-20260720-0001",
"status": "pending"
}
6.9 工单回调接口
接口:POST /api/v1/workorders/callbacks/status
请求:
{
"alarm_id": "alarm-20260720-0001",
"workorder_id": "wo-20260720-0001",
"status": "closed",
"result": "真实隐患",
"comment": "现场确认存在施工开挖",
"operator": "工务人员",
"closed_time": "2026-07-20T15:00:00+08:00"
}
处理逻辑:
- 更新告警和工单状态。
- 将结果写入样本库。
- 如结果为误报,进入误报样本集。
- 如结果为正常施工,生成或更新豁免记录。
6.10 豁免区配置接口
接口:POST /api/v1/exemptions
请求:
{
"scene": "违法开挖",
"line_id": "line-001",
"geometry": {
"type": "Polygon",
"coordinates": [[[116.1, 39.1], [116.2, 39.1], [116.2, 39.2], [116.1, 39.2], [116.1, 39.1]]]
},
"valid_from": "2026-07-20T00:00:00+08:00",
"valid_to": "2026-08-20T00:00:00+08:00",
"reason": "正常养护施工"
}
6.11 模型版本接口
接口:GET /api/v1/models
返回:
{
"models": [
{
"model_group": "vision-detector",
"version": "v1.0.0",
"status": "production",
"scenes": ["塔吊", "人员入侵", "动物入侵"],
"metrics": {
"precision": 0.91,
"recall": 0.87,
"map50": 0.89
}
}
]
}
7. 技术框架选择
7.1 后端平台
推荐技术栈:
- Java Spring Boot / Spring Cloud:任务、告警、工单、权限、规则配置等业务服务。
- Python FastAPI:AI 推理服务、数据预处理服务、点云分析服务。
- Kafka:异步事件和解耦。
- Redis:缓存、分布式锁、去重窗口。
- PostgreSQL + PostGIS:业务数据和空间数据。
- MinIO/S3:巡检文件和证据附件。
- Nginx:统一入口、反向代理、静态资源。
选择理由:
- 业务平台偏事务和集成,Java 生态更稳。
- AI 服务偏算法和 GPU,Python 生态更合适。
- Kafka 适合大文件处理后的异步分析事件。
- PostGIS 适合线路、缓冲区、禁入区、空间判断。
7.2 AI 与数据处理
推荐技术栈:
- PyTorch:模型训练。
- ONNX Runtime / TensorRT:模型推理加速。
- OpenCV:图像预处理、视频抽帧、图像增强。
- MMDetection / Ultralytics YOLO / Detectron2:检测与分割模型开发。
- PCL / Open3D:点云去噪、配准、分割、体积计算。
- GDAL / Rasterio:TIF/DEM/DSM 栅格数据处理。
- CUDA:GPU 加速。
7.3 前端与可视化
推荐技术栈:
- Vue 3 + TypeScript:Web 管理端。
- Element Plus / Ant Design Vue:管理端组件。
- MapLibre GL / OpenLayers:二维 GIS 地图。
- CesiumJS:三维场景、点云和地形展示。
- ECharts:统计报表。
- WebSocket:任务状态、告警状态实时刷新。
7.4 部署与运维
推荐技术栈:
- Docker:服务容器化。
- Kubernetes / K3s:中心端和边缘端服务编排。
- Helm:部署模板管理。
- Prometheus + Grafana:监控。
- Loki/ELK:日志。
- Harbor:镜像仓库。
- GitLab CI/Jenkins:构建发布。
7.5 安全与权限
推荐技术:
- OAuth2/JWT:用户认证。
- RBAC:角色权限。
- AK/SK:第三方接口签名。
- TLS:传输加密。
- 审计日志:任务、告警、规则、模型发布、工单操作全记录。
8. 功能点详细实现
8.1 巡检任务管理
功能点:
- 新建巡检任务。
- 任务下发至无人机平台。
- 任务状态实时同步。
- 任务失败重试。
- 任务数据完整性检查。
- 任务分析进度展示。
实现方式:
- 任务表记录业务任务和状态。
- 厂商任务 ID 与系统任务 ID 绑定。
- 状态回调进入任务状态机。
- 上传完成事件触发分析任务。
- 任务完成后生成任务报告。
8.2 多源数据接入
功能点:
- 图片上传。
- 视频流接入。
- 红外热图接入。
- LAS/LAZ/TIF 接入。
- 元数据解析。
- 数据质量评分。
实现方式:
- 文件上传至对象存储。
- 元数据写入资源表。
- 数据完成事件写入 Kafka。
- 对图片清晰度、曝光、GPS、相机参数进行自动检查。
- 不合格数据标记为
low_quality,必要时触发重飞建议。
8.3 AI 智能识别
功能点:
- 场景模型自动选择。
- 批量推理。
- 实时推理。
- 推理结果结构化。
- 模型版本记录。
实现方式:
- 分析调度服务根据
scene_set选择模型组。 - 图片大图切片后进入检测模型。
- 分割结果转为多边形。
- 推理结果写入
ai_result表。 - 模型版本随结果固化,保证可追溯。
8.4 空间规则研判
功能点:
- 线路距离计算。
- 防护网内外判断。
- 里程定位。
- 禁入区判断。
- 施工区域豁免。
实现方式:
- AI 结果转为 PostGIS geometry。
- 查询线路中心线并计算最近点。
- 根据最近点计算里程。
- 使用
ST_Contains、ST_DWithin、ST_Intersects判断空间关系。 - 结果写入规则命中记录。
8.5 告警生成与处置
功能点:
- 告警分级。
- 告警去重。
- 证据附件组织。
- 工单创建。
- 状态跟踪。
- 处置结果回写。
实现方式:
- 规则命中后生成告警候选。
- 告警中心执行去重和聚合。
- 保存告警截图、原图、视频片段、热图、点云变化图。
- 调用工单系统接口创建工单。
- 工单回调更新告警状态。
8.6 统计分析
功能点:
- 按线路统计隐患数量。
- 按场景统计有效告警率。
- 按单位统计处置闭环率。
- 按模型统计误报和漏报。
- 按时间统计风险趋势。
实现方式:
- 告警和工单状态进入统计宽表。
- 重要指标异步聚合。
- 前端通过 ECharts 展示趋势、排行、地图热力。
8.7 模型迭代
功能点:
- 样本自动归档。
- 标注任务创建。
- 模型训练记录。
- 模型评测对比。
- 灰度发布和回滚。
实现方式:
- 人工确认结果自动生成样本标签建议。
- 模型训练记录训练集版本、参数、指标。
- 新模型先在离线测试集评估,再进行灰度流量验证。
- 支持按线路、场景、边缘节点灰度发布。
9. 测试方案
9.1 测试分层
| 测试类型 | 测试目标 | 主要对象 |
|---|---|---|
| 单元测试 | 验证函数和类逻辑 | 规则判断、坐标转换、状态机、接口参数 |
| 接口测试 | 验证服务 API 契约 | 任务、数据、推理、告警、工单 |
| 集成测试 | 验证跨模块流程 | 任务下发到告警闭环全链路 |
| 算法测试 | 验证模型准确率 | 检测、分割、点云、红外 |
| 性能测试 | 验证吞吐和延迟 | 视频流、批处理、点云任务 |
| 稳定性测试 | 验证长时间运行 | 边缘节点、消息队列、存储 |
| 安全测试 | 验证认证和权限 | 登录、接口签名、越权、审计 |
| 现场测试 | 验证真实环境效果 | 航线、采集质量、定位、告警 |
9.2 核心测试用例
| 用例 | 前置条件 | 操作 | 预期结果 |
|---|---|---|---|
| 创建巡检任务 | 存在线路和航线 | 调用创建任务接口 | 返回任务 ID,状态为 created |
| 任务下发 | 无人机平台在线 | 下发任务 | 获取厂商任务 ID,状态更新为 dispatched |
| 图片分析 | 上传巡检图片 | 触发分析任务 | 生成 AI 结果和规则命中记录 |
| 塔吊新增告警 | 100 米内新增塔吊 | 执行检测与规则 | 生成 high 告警 |
| 塔吊存量抑制 | 基线库已有塔吊 | 执行检测与规则 | 不生成重复告警 |
| 人员入侵 | 非天窗时间防护网内人员 | 实时视频分析 | 生成入侵告警 |
| 正常施工豁免 | 存在有效豁免区 | 识别施工机械 | 告警被抑制并记录原因 |
| 防洪点体积变化 | TIF 差分超过阈值 | 执行点云/TIF 分析 | 输出变化体积并生成告警 |
| 工单回写 | 告警已推送 | 回调工单关闭 | 告警状态变为 closed |
| 误报回流 | 工单结果为误报 | 回写处置结果 | 样本进入误报样本集 |
9.3 算法测试指标
| 场景 | 指标 | 建议验收口径 |
|---|---|---|
| 目标检测 | Precision、Recall、mAP50 | 按场景单独验收,不混合统计 |
| 小目标 | 漏检率、最小可识别像素尺寸 | 需指定采集高度和分辨率 |
| 分割 | mIoU、Dice、面积误差 | 基坑、堆土、积水、裂缝分别统计 |
| 点云形变 | 配准误差、体积误差、变化定位误差 | 与人工测量或专业软件结果对照 |
| 红外测温 | 温度误差、异常召回率 | 固定距离、角度、发射率条件 |
| 告警规则 | 有效告警率、重复告警率 | 结合人工确认结果统计 |
9.4 性能测试指标
| 指标 | 建议目标 |
|---|---|
| 实时视频分析延迟 | 单路视频告警延迟小于 5 秒 |
| 图片批处理吞吐 | 单 GPU 每分钟处理能力按模型实测确定 |
| 点云/TIF 分析耗时 | 单防洪点任务在可接受窗口内完成 |
| 告警推送延迟 | 规则命中后 3 秒内推送 |
| 系统可用性 | 核心服务月可用性不低于 99% |
| 数据上传成功率 | 巡检数据完整入库率不低于 99% |
9.5 现场测试流程
- 选择典型线路和重点场景。
- 按采集规范执行无人机巡飞。
- 校验数据质量和定位精度。
- 执行 AI 分析和规则研判。
- 专业人员复核告警。
- 统计误报、漏报、重复告警。
- 输出问题清单和优化计划。
10. 演示方案
10.1 演示目标
演示系统从巡检任务、数据接入、AI 识别、空间研判、告警工单、人工闭环到统计分析的完整业务链路,突出系统的工程闭环能力和多源数据融合能力。
10.2 演示环境
演示环境建议包含:
- 一套 Web 管理端。
- 一套 GIS 地图页面。
- 一套告警中心页面。
- 一套工单闭环页面。
- 若干可见光图片、视频片段、红外热图、TIF/点云样例。
- 模拟无人机平台回调服务。
- 模拟工单系统回调服务。
10.3 演示数据准备
建议准备以下样例:
| 样例 | 用途 |
|---|---|
| 违法开挖图片 | 展示施工机械识别和线路缓冲区告警 |
| 塔吊图片 | 展示新增目标和基线比对 |
| 人员入侵视频 | 展示实时视频告警和目标跟踪 |
| 接触网异物图片 | 展示高危异物识别 |
| 红外设备热图 | 展示设备 ROI 测温和热异常 |
| 防洪点 TIF 数据 | 展示前后期差分和体积计算 |
| 工单回调样例 | 展示人工确认和样本回流 |
10.4 演示流程
第一步:创建巡检任务。
- 在任务页面选择线路、里程、巡检场景和航线。
- 提交后系统生成任务编号。
- 展示任务状态从
created到flying。
第二步:接入巡检数据。
- 模拟无人机上传图片、视频、红外和 TIF 数据。
- 展示数据资源列表、上传状态、数据质量评分。
第三步:运行 AI 分析。
- 触发分析任务。
- 展示检测框、分割区域、热异常 ROI、点云/TIF 差分结果。
- 展示模型版本和置信度。
第四步:规则研判。
- 在地图上展示线路缓冲区、防护网、重点防洪点。
- 展示命中的空间规则、时间规则和业务阈值。
- 展示被豁免或被去重抑制的结果。
第五步:生成告警工单。
- 告警中心展示告警等级、位置、里程、证据图片、处置建议。
- 工单系统接收告警并返回工单编号。
第六步:人工闭环。
- 模拟专业人员确认真实隐患、误报或正常施工。
- 系统更新告警状态。
- 误报样本进入样本库,正常施工进入豁免区。
第七步:统计分析。
- 展示按线路、场景、等级、处置状态统计的报表。
- 展示模型有效告警率和误报趋势。
10.5 演示验收点
| 验收点 | 判断标准 |
|---|---|
| 任务链路完整 | 能从任务创建流转到分析完成 |
| 数据接入正常 | 图片、视频、红外、点云/TIF 均能入库 |
| AI 结果可视化 | 检测框、分割、多边形、热图、差分图能展示 |
| 规则解释清楚 | 每条告警能说明触发原因 |
| 告警位置准确 | 能展示线路、里程、坐标和距离 |
| 工单闭环完整 | 工单创建、回写、关闭可完成 |
| 样本回流可追溯 | 人工确认结果能进入样本库 |
10.6 演示风险预案
| 风险 | 预案 |
|---|---|
| 无人机平台现场不可用 | 使用模拟回调和预置数据 |
| 视频流不稳定 | 使用录制视频流循环播放 |
| 点云数据处理耗时长 | 提前生成差分结果,现场展示结果加载 |
| 网络不稳定 | 使用本地对象存储和本地数据库 |
| 模型误检影响展示 | 准备人工复核和规则解释页面,展示闭环能力 |
11. 部署实施计划
11.1 阶段划分
| 阶段 | 目标 | 交付物 |
|---|---|---|
| 阶段一:基础平台 | 完成任务、数据、告警、工单、地图基础能力 | 平台基础版、接口联调文档 |
| 阶段二:P0 场景上线 | 完成违法开挖、塔吊、烟火、人员入侵、动物入侵等场景 | P0 模型、规则配置、现场测试报告 |
| 阶段三:多源能力扩展 | 完成红外、点云/TIF、变化检测 | 热异常分析、形变分析、基线库 |
| 阶段四:数据闭环 | 完成标注、模型迭代、灰度发布 | 样本库、模型管理、评测报告 |
| 阶段五:规模化运维 | 完成监控、审计、性能优化和多线路推广 | 运维手册、验收报告、推广方案 |
11.2 交付清单
- 系统设计说明书。
- 接口设计文档。
- 数据库设计文档。
- 部署手册。
- 运维手册。
- 算法模型说明和评测报告。
- 测试用例和测试报告。
- 演示数据和演示脚本。
- 用户操作手册。
12. 风险控制
| 风险 | 影响 | 应对 |
|---|---|---|
| 业务阈值未确定 | 告警规则无法稳定 | 规则配置化,先疑似告警,后续按专业确认调整 |
| 数据样本不足 | 模型准确率不足 | 建立样本闭环,先覆盖高频场景 |
| 小目标难识别 | 螺栓、线缆异物漏检 | 专用航线、高分辨率采集、局部精检 |
| 点云配准误差 | 形变误报 | 控制点校正、多期趋势、置信区间 |
| 接口不稳定 | 联调周期拉长 | 模拟器先行,中间协议解耦 |
| 边缘算力不足 | 实时性下降 | 模型量化、任务分级、边云协同 |
| 重复告警过多 | 用户体验下降 | 基线库、去重窗口、豁免区 |
| 现场环境变化 | 模型漂移 | 持续监控、误报回流、周期复训 |
13. 总结
本系统以无人机巡检数据为入口,以 AI 场景识别为核心,以 GIS 空间规则和业务规则为研判基础,以告警工单闭环为业务出口,以样本和模型迭代为持续优化机制。系统设计重点不是单一模型能力,而是形成“采集、识别、研判、告警、处置、反馈、迭代”的完整工程闭环。
通过边缘端和中心端协同部署,系统既能支撑烟火、人员入侵等实时高危场景,也能支撑防洪点形变、危树侵限、设备发热、裂缝识别等复杂专业场景,为铁路巡检业务提供可扩展、可追溯、可运营的智能化能力。