Files
AItrackwalker/railway-uav-inspection-system-design.md
T

45 KiB
Raw Blame History

铁路无人机智能巡检系统设计说明书

版本: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 核心数据流

系统包含三类主数据流。

第一类是实时视频流:

  1. 巡检任务启动。
  2. 无人机平台推送实时视频流和飞行状态。
  3. 边缘分析服务按场景抽帧、检测、跟踪。
  4. 高危结果进入规则引擎。
  5. 命中规则后生成告警并推送工单。

第二类是巡飞后离线分析流:

  1. 巡飞结束后上传图片、红外热图、航迹、元数据。
  2. 数据接入服务生成分析任务。
  3. AI 批处理服务按场景运行检测、分割、变化检测。
  4. 规则引擎进行空间和业务判定。
  5. 告警中心生成工单,人工确认后回流样本库。

第三类是点云/TIF 精密分析流:

  1. 激光雷达巡飞生成 LAS/LAZ。
  2. 前端或中心端处理成 TIF/DEM/DSM。
  3. 与历史基准数据进行配准和差分。
  4. 计算变化区域、面积、体积和置信度。
  5. 形成防洪点形变告警和三维复核材料。

3. 模块设计

3.1 巡检任务管理模块

模块职责:

  • 管理巡检计划、巡检任务、航线、巡检场景、任务状态。
  • 对接无人机平台进行任务下发、状态同步、异常中断处理。
  • 将任务与线路、里程、设施、巡检专业、分析模型进行绑定。

输入:

  • 巡检计划、线路范围、巡检专业、航线编号、任务时间。
  • 无人机平台返回的任务状态、飞行状态、数据上传状态。

输出:

  • 分析任务、数据接入任务、告警关联任务 ID。
  • 任务执行日志、异常状态、重试任务。

关键设计:

  • 任务状态机:created -> dispatched -> flying -> data_uploading -> analyzing -> completed -> closed
  • 异常状态:dispatch_failedflight_abortedupload_failedanalysis_failed
  • 任务需支持幂等下发,同一个业务任务多次请求不能生成重复航线任务。
  • 任务需支持按线路、里程、设备类型、时间范围查询。

3.2 无人机数据接入模块

模块职责:

  • 对接无人机厂商 SDK/API,接收实时流、图片、红外、点云、元数据。
  • 统一不同厂商数据格式,形成系统内部标准数据对象。
  • 支持大文件断点续传、弱网缓存、文件校验和重传。

输入:

  • 实时视频流、巡检图片、红外热图、LAS/LAZ、TIF/DEM/DSM。
  • RTK/PPK、经纬度、飞行高度、姿态角、云台角、相机内参、拍摄时间。

输出:

  • 标准化数据资源记录。
  • 对象存储文件地址。
  • 数据完成事件。

关键设计:

  • 文件进入对象存储,元数据进入 PostgreSQL/PostGIS。
  • 视频流进入边缘分析服务,关键帧和告警片段回存对象存储。
  • 每个资源生成唯一 resource_id,并记录 task_idline_idmileage_rangecapture_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_namemodel_versionconfidencethresholdinference_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。
  • 状态基线:已闭环告警、已确认存量、豁免期。

变化检测流程:

  1. 获取当前巡检结果。
  2. 查询空间邻近历史基线。
  3. 计算目标相似度、位置距离、外观变化、几何变化。
  4. 输出新增、消失、扩大、破损、未变化。
  5. 将变化结果提交规则引擎。

3.10 数据标注与模型迭代模块

模块职责:

  • 管理样本入库、标注任务、质检、训练集划分、模型评测、模型发布。

样本来源:

  • 历史巡检数据。
  • AI 告警截图和视频片段。
  • 误报样本。
  • 漏报补录样本。
  • 专家复核样本。
  • 高风险场景人工标注样本。

模型迭代流程:

  1. 样本采集和清洗。
  2. 标签体系匹配。
  3. 标注和质检。
  4. 训练集、验证集、测试集划分。
  5. 模型训练和评测。
  6. 边缘端性能压测。
  7. 灰度发布。
  8. 生产版本替换和回滚预案。

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 告警去重设计

去重维度:

  • 同一任务、同一场景、同一目标类别。
  • 空间距离在阈值范围内。
  • 时间窗口在配置范围内。
  • 目标外观或基线对象相似。

去重策略:

  1. 查询近 30 分钟或本轮任务内同类告警。
  2. 判断空间距离和多边形重叠率。
  3. 若为同一目标,则追加证据,不新建工单。
  4. 若为新增目标,则生成新告警。
  5. 若命中豁免区,则记录抑制结果。

5.5 空间定位与里程映射设计

定位流程:

  1. 从图片或视频帧读取 GPS、RTK、飞高、云台角、相机内外参。
  2. 将 AI 检测框中心或分割多边形投影到地面坐标。
  3. 若有正射图或点云数据,优先使用三维投影修正。
  4. 使用 PostGIS 查询最近线路中心线。
  5. 计算线路里程、左右侧、距离线路中心线距离。
  6. 关联最近设施台账。

输出字段:

  • line_id
  • mileage
  • side
  • distance_to_track_m
  • nearest_asset_id
  • location_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"
}

规则引擎执行步骤:

  1. 加载场景规则。
  2. 补充空间上下文。
  3. 补充时间上下文。
  4. 查询豁免区和基线库。
  5. 执行条件匹配。
  6. 输出命中原因。

5.7 模型服务设计

模型服务统一协议:

  • 输入:资源地址、场景集合、ROI、阈值、任务参数。
  • 输出:标准 AI 结果数组。
  • 模型服务不直接操作工单。
  • 模型服务需支持健康检查、版本查询和灰度流量。

推理服务部署方式:

  • Python FastAPI 提供推理服务接口。
  • ONNX Runtime/TensorRT 提供加速推理。
  • Triton Inference Server 可用于多模型统一托管。
  • 点云算法可采用 Python + Open3D,性能敏感部分用 C++/PCL。

5.8 分场景功能实现

5.8.1 违法开挖

实现步骤:

  1. 数据预处理阶段对线路两侧缓冲区进行 ROI 裁剪。
  2. 检测挖机、砂石车、施工车辆等施工机械。
  3. 分割裸土、基坑和施工扰动区域。
  4. 将目标位置映射到线路缓冲区。
  5. 查询施工计划和豁免区。
  6. 未命中豁免且达到置信度阈值时生成告警。

关键点:

  • 单纯识别机械不足以判断违法,需要结合施工计划和人工确认。
  • 已确认正常施工区域写入豁免区,并设置有效时间。

5.8.2 塔吊

实现步骤:

  1. 高分辨率图像切片检测塔吊。
  2. 根据目标位置计算与线路距离。
  3. 查询塔吊基线库。
  4. 若为新增且 100 米范围内,生成告警。
  5. 若为存量,仅更新最新巡检时间。

5.8.3 彩钢板

实现步骤:

  1. 首轮巡飞建立彩钢板基线。
  2. 后续巡飞通过目标检测和变化检测识别新增彩钢板。
  3. 对破损、散落、脱落状态进行分类。
  4. 按距离线路、面积、状态进行风险分级。

5.8.4 裂缝识别

实现步骤:

  1. 对挡墙、边坡、隧道口衬砌等区域进行专用低空高分辨率采集。
  2. 切片进入裂缝分割模型。
  3. 对裂缝骨架化,计算长度、宽度和方向。
  4. 根据 GSD 或相机参数换算实际尺寸。
  5. 输出疑似裂缝,进入人工复核。

5.8.5 防洪点形变

实现步骤:

  1. 接收 LAS/LAZ 或 TIF/DEM 数据。
  2. 与历史基准数据进行配准。
  3. 进行高程差分和变化区域提取。
  4. 过滤植被、噪声和低置信变化。
  5. 计算面积、体积、最大高差。
  6. 超过阈值生成防洪点形变告警。

5.8.6 接触网异物

实现步骤:

  1. 先定位接触网、线缆、塔杆、横担区域。
  2. 在 ROI 内进行异物检测和分割。
  3. 对塑料薄膜、防尘网、风筝等高危类别设置高优先级。
  4. 多帧确认异物是否持续存在。
  5. 命中高危规则时生成告警。

5.8.7 设备发热

实现步骤:

  1. 可见光识别设备部件位置。
  2. 将设备 ROI 映射到红外热图。
  3. 读取最高温、平均温和周边环境温度。
  4. 判断绝对温度、相对温升和历史趋势。
  5. 生成热异常告警并附带热图证据。

5.8.8 人员和动物入侵

实现步骤:

  1. 实时视频抽帧检测人员和动物。
  2. 多帧跟踪过滤偶发误检。
  3. 判断目标是否在防护网内或禁入区域。
  4. 判断当前是否为非天窗时间。
  5. 命中规则后生成入侵告警。

5.8.9 施工规范监管

实现步骤:

  1. 检测施工区域内人员。
  2. 对人员头部和躯干区域识别安全帽、反光衣。
  3. 结合施工计划判断是否属于施工监管场景。
  4. 对未佩戴安全帽、未穿反光衣生成违规告警。

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 / RasterioTIF/DEM/DSM 栅格数据处理。
  • CUDAGPU 加速。

7.3 前端与可视化

推荐技术栈:

  • Vue 3 + TypeScriptWeb 管理端。
  • 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_ContainsST_DWithinST_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 现场测试流程

  1. 选择典型线路和重点场景。
  2. 按采集规范执行无人机巡飞。
  3. 校验数据质量和定位精度。
  4. 执行 AI 分析和规则研判。
  5. 专业人员复核告警。
  6. 统计误报、漏报、重复告警。
  7. 输出问题清单和优化计划。

10. 演示方案

10.1 演示目标

演示系统从巡检任务、数据接入、AI 识别、空间研判、告警工单、人工闭环到统计分析的完整业务链路,突出系统的工程闭环能力和多源数据融合能力。

10.2 演示环境

演示环境建议包含:

  • 一套 Web 管理端。
  • 一套 GIS 地图页面。
  • 一套告警中心页面。
  • 一套工单闭环页面。
  • 若干可见光图片、视频片段、红外热图、TIF/点云样例。
  • 模拟无人机平台回调服务。
  • 模拟工单系统回调服务。

10.3 演示数据准备

建议准备以下样例:

样例 用途
违法开挖图片 展示施工机械识别和线路缓冲区告警
塔吊图片 展示新增目标和基线比对
人员入侵视频 展示实时视频告警和目标跟踪
接触网异物图片 展示高危异物识别
红外设备热图 展示设备 ROI 测温和热异常
防洪点 TIF 数据 展示前后期差分和体积计算
工单回调样例 展示人工确认和样本回流

10.4 演示流程

第一步:创建巡检任务。

  • 在任务页面选择线路、里程、巡检场景和航线。
  • 提交后系统生成任务编号。
  • 展示任务状态从 createdflying

第二步:接入巡检数据。

  • 模拟无人机上传图片、视频、红外和 TIF 数据。
  • 展示数据资源列表、上传状态、数据质量评分。

第三步:运行 AI 分析。

  • 触发分析任务。
  • 展示检测框、分割区域、热异常 ROI、点云/TIF 差分结果。
  • 展示模型版本和置信度。

第四步:规则研判。

  • 在地图上展示线路缓冲区、防护网、重点防洪点。
  • 展示命中的空间规则、时间规则和业务阈值。
  • 展示被豁免或被去重抑制的结果。

第五步:生成告警工单。

  • 告警中心展示告警等级、位置、里程、证据图片、处置建议。
  • 工单系统接收告警并返回工单编号。

第六步:人工闭环。

  • 模拟专业人员确认真实隐患、误报或正常施工。
  • 系统更新告警状态。
  • 误报样本进入样本库,正常施工进入豁免区。

第七步:统计分析。

  • 展示按线路、场景、等级、处置状态统计的报表。
  • 展示模型有效告警率和误报趋势。

10.5 演示验收点

验收点 判断标准
任务链路完整 能从任务创建流转到分析完成
数据接入正常 图片、视频、红外、点云/TIF 均能入库
AI 结果可视化 检测框、分割、多边形、热图、差分图能展示
规则解释清楚 每条告警能说明触发原因
告警位置准确 能展示线路、里程、坐标和距离
工单闭环完整 工单创建、回写、关闭可完成
样本回流可追溯 人工确认结果能进入样本库

10.6 演示风险预案

风险 预案
无人机平台现场不可用 使用模拟回调和预置数据
视频流不稳定 使用录制视频流循环播放
点云数据处理耗时长 提前生成差分结果,现场展示结果加载
网络不稳定 使用本地对象存储和本地数据库
模型误检影响展示 准备人工复核和规则解释页面,展示闭环能力

11. 部署实施计划

11.1 阶段划分

阶段 目标 交付物
阶段一:基础平台 完成任务、数据、告警、工单、地图基础能力 平台基础版、接口联调文档
阶段二:P0 场景上线 完成违法开挖、塔吊、烟火、人员入侵、动物入侵等场景 P0 模型、规则配置、现场测试报告
阶段三:多源能力扩展 完成红外、点云/TIF、变化检测 热异常分析、形变分析、基线库
阶段四:数据闭环 完成标注、模型迭代、灰度发布 样本库、模型管理、评测报告
阶段五:规模化运维 完成监控、审计、性能优化和多线路推广 运维手册、验收报告、推广方案

11.2 交付清单

  • 系统设计说明书。
  • 接口设计文档。
  • 数据库设计文档。
  • 部署手册。
  • 运维手册。
  • 算法模型说明和评测报告。
  • 测试用例和测试报告。
  • 演示数据和演示脚本。
  • 用户操作手册。

12. 风险控制

风险 影响 应对
业务阈值未确定 告警规则无法稳定 规则配置化,先疑似告警,后续按专业确认调整
数据样本不足 模型准确率不足 建立样本闭环,先覆盖高频场景
小目标难识别 螺栓、线缆异物漏检 专用航线、高分辨率采集、局部精检
点云配准误差 形变误报 控制点校正、多期趋势、置信区间
接口不稳定 联调周期拉长 模拟器先行,中间协议解耦
边缘算力不足 实时性下降 模型量化、任务分级、边云协同
重复告警过多 用户体验下降 基线库、去重窗口、豁免区
现场环境变化 模型漂移 持续监控、误报回流、周期复训

13. 总结

本系统以无人机巡检数据为入口,以 AI 场景识别为核心,以 GIS 空间规则和业务规则为研判基础,以告警工单闭环为业务出口,以样本和模型迭代为持续优化机制。系统设计重点不是单一模型能力,而是形成“采集、识别、研判、告警、处置、反馈、迭代”的完整工程闭环。

通过边缘端和中心端协同部署,系统既能支撑烟火、人员入侵等实时高危场景,也能支撑防洪点形变、危树侵限、设备发热、裂缝识别等复杂专业场景,为铁路巡检业务提供可扩展、可追溯、可运营的智能化能力。