在电力巡检、工业安防或施工现场监测中,单纯的可见光视觉(RGB)往往只能告诉我们"有什么",却无法告诉我们"状态如何",设备是否过热?
为了解决这个问题,设计并实现了一套基于Jetson边缘计算平台的红外测温+可见光AI识别系统。这套系统不仅能通过YOLO模型精准识别目标,还能利用双光融合技术,将AI识别的类别与红外温度数据实时对齐,实现基于温度阈值的智能告警。
本文将复盘从双光标定、模型加速到Web可视化部署的全流程。
可见光与红外的"双光标定"
系统的基石是空间对齐。可见光相机和红外热成像仪通常拥有不同的分辨率、视场角(FOV)和物理位置。如果不对齐,AI识别出的"绝缘子"坐标映射到红外图上,可能测到的是背景天空的温度,导致数据完全失效。
因此,首先进行严格的双光标定:
数据采集:使用特制的标定板,同时采集可见光和红外图像对。
坐标映射:通过计算单应性矩阵(Homography Matrix),将可见光图像中的像素坐标 (x_rgb, y_rgb) 映射到红外图像的坐标系 (x_ir, y_ir) 中。
效果验证:确保可见光画面中的目标中心点,能精准落在红外热图的对应高温/低温区域上。


视觉感知:YOLO模型与ONNX加速
在可见光端,部署YOLO模型进行目标检测。考虑到Jetson板子的算力限制,直接运行PyTorch模型效率较低,因此采用ONNX Runtime进行推理加速。
模型导出:将训练好的YOLO模型(针对绝缘子单片、施工积水等场景优化)导出为 .onnx 格式。
TensorRT加速:在Jetson上,利用 trtexec 将ONNX模型进一步转换为TensorRT引擎(.engine),充分利用GPU的FP16算力。


逻辑融合:基于类别的温度阈值告警
这是系统的"大脑"部分。不同的目标,其安全温度阈值是完全不同的。例如,电力金具的过热阈值可能高达80℃,而人体体温超过37.5℃即为异常,或者施工现场的积水区域需要监测是否结冰。
因此,设计了如下处理逻辑:
ROI提取:根据YOLO输出的检测框,结合标定好的映射矩阵,在红外热图中截取对应的ROI区域。
温度解算:读取ROI区域内的原始辐射数据,转换为实际温度值(取最大值或平均值)。
动态阈值判定:
python
# 伪代码逻辑
if category == "insulator":
threshold = 80.0
elif category == "human":
threshold = 37.5
elif category == "water_area":
threshold = 0.0 # 监测结冰
if current_temp > threshold:
trigger_alarm()
交互呈现:基于Web的可视化界面
为了方便远程监控,开发了一套基于Web的可视化界面(使用Flask/FastAPI + Vue/HTML5)。
视频流传输:后端将处理后的视频帧(包含检测框、实时温度数值、告警高亮)编码为MJPEG或WebRTC流,推送到前端。
数据看板:界面右侧实时显示当前画面的最高温、各类别的统计数量以及告警日志。
优势:用户只需通过浏览器访问Jetson的IP地址,即可随时随地查看监控画面,无需安装任何客户端软件。
边缘部署:Jetson上的工程化落地
最后,将整个系统打包部署在NVIDIA Jetson平台上。
环境构建:配置JetPack、CUDA、cuDNN以及ONNX Runtime-GPU环境。
性能优化:
使用 jetson-stats (jtop) 实时监控CPU/GPU负载和温度。
通过多线程异步处理:视频采集、AI推理、Web推流分别在不同线程运行,确保界面流畅不卡顿。
最终效果:系统实现了实时的双光融合显示,当识别到目标且温度超标时,Web界面会立即弹出红色告警框,并记录日志。
Jetson的架构与window和linux不同,需要安装专用的onxx依赖




最终部署效果:实测平均推理可达25帧/秒以上,红外帧率11帧/秒,可见光帧率26帧/秒
