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

版本：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 总体架构

系统采用“接入层、数据层、算法层、规则层、业务层、展示层、运维层”的分层架构。

```mermaid
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、关键帧抽取、设备状态上报 | 烟火、人员入侵等高危实时粗检 |
| 机巢边缘服务器 | 视频流分析、图片分析、红外预处理、任务缓存、告警初筛 | 高频巡检、低延迟告警、弱网缓存 |
| 中心端服务器 | 业务平台、规则引擎、对象存储、数据库、点云分析、模型管理 | 工单闭环、综合研判、离线复核、模型迭代 |
| 训练服务器 | 样本管理、训练任务、模型评测、模型发布 | 模型开发、灰度发布、版本回滚 |

推荐拓扑：

```mermaid
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_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 告警中心模块

模块职责：

- 管理告警生成、分级、去重、证据组织、处置建议和状态流转。
- 对接巡检平台和工单系统。

告警状态：

```mermaid
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 巡检任务下发交互

```mermaid
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 实时视频告警交互

```mermaid
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 离线图片分析交互

```mermaid
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 分析交互

```mermaid
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 工单闭环交互

```mermaid
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 规则配置设计

规则配置示例：

```json
{
  "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 和签名。

统一响应格式：

```json
{
  "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`

请求：

```json
{
  "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"
}
```

响应：

```json
{
  "task_id": "task-20260720-0001",
  "status": "created"
}
```

### 6.3 无人机任务状态回调

接口：`POST /api/v1/uav/callbacks/mission-status`

请求：

```json
{
  "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`

请求：

```json
{
  "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"
      }
    }
  ]
}
```

响应：

```json
{
  "accepted": 1,
  "analysis_job_id": "job-20260720-0001"
}
```

### 6.5 创建分析任务

接口：`POST /api/v1/analysis/jobs`

请求：

```json
{
  "task_id": "task-20260720-0001",
  "resource_ids": ["res-001", "res-002"],
  "scene_set": ["塔吊", "彩钢板", "裂缝"],
  "analysis_mode": "offline",
  "priority": "normal"
}
```

响应：

```json
{
  "analysis_job_id": "job-20260720-0002",
  "status": "queued"
}
```

### 6.6 AI 推理服务接口

接口：`POST /api/v1/inference/detect`

请求：

```json
{
  "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"
  }
}
```

响应：

```json
{
  "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`

请求：

```json
{
  "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
  }
}
```

响应：

```json
{
  "decision": "create_alarm",
  "severity": "high",
  "rule_hits": [
    {
      "rule_code": "tower_crane_100m_new_only",
      "reason": "线路100米内且未匹配历史基线"
    }
  ],
  "suppressed": false
}
```

### 6.8 告警推送接口

接口：`POST /api/v1/alarms`

请求：

```json
{
  "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米内", "非豁免区", "施工机械"]
}
```

响应：

```json
{
  "alarm_id": "alarm-20260720-0001",
  "status": "pending"
}
```

### 6.9 工单回调接口

接口：`POST /api/v1/workorders/callbacks/status`

请求：

```json
{
  "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`

请求：

```json
{
  "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`

返回：

```json
{
  "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 现场测试流程

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

## 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 空间规则和业务规则为研判基础，以告警工单闭环为业务出口，以样本和模型迭代为持续优化机制。系统设计重点不是单一模型能力，而是形成“采集、识别、研判、告警、处置、反馈、迭代”的完整工程闭环。

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