一、立项背景与目标
港口岸桥电机碳刷在振动、粉尘、光照多变环境下易掉落,人工巡检难以及时发现,易造成电机损坏及停机损失。本项目基于NVIDIA Jetson边缘计算平台,在Ubuntu系统上部署YOLOv8模型,实现碳刷状态的实时视觉检测,替代人工巡检。
二、软件功能与核心模块
软件功能包括:RTSP视频流实时解码与预处理、YOLOv8模型推理(在位/掉落二分类)、滑动窗口防抖滤波、检测结果可视化叠加、报警状态输出(通过HTTP/Modbus接口与PLC对接)。核心模块:
视频接入与预处理:使用OpenCV解码多路RTSP流,完成尺寸缩放、归一化及光照自适应增强;
YOLOv8推理引擎:在Jetson上将训练好的PyTorch模型转换为TensorRT格式,利用GPU加速实现实时推理。
状态判定与防抖:实现连续N帧滑动窗口投票机制,过滤因振动或飞鸟造成的单帧误检;
系统集成与输出:基于Ubuntu开发后台服务,通过HTTP/Modbus协议向PLC方提供报警状态接口,供对接人员调用。
三、业务流程与功能路径
业务流程:摄像头采集碳刷图像 → OpenCV解码并预处理 → YOLOv8 TensorRT推理输出状态 → 滑动窗口防抖确认 → 更新报警状态至共享接口 → PLC方轮询读取或接收推送。功能路径:通过Web配置页面添加RTSP源并设置检测区域;调整置信度阈值与防抖帧数;查看实时检测画面(绿框在位/红框掉落);通过HTTP接口获取当前状态供PLC对接测试。
一、整体架构与设计思路
采用边缘计算架构,以NVIDIA Jetson作为核心控制器,Ubuntu系统为运行环境。整体设计思路为:摄像头通过RTSP协议将视频流传输至Jetson,系统基于YOLOv8进行实时推理,输出碳刷在位/掉落状态,并通过HTTP/Modbus接口与PLC对接。软件采用模块化设计,分为视频采集解码、AI推理、状态防抖滤波、报警状态发布四个模块,模块间通过共享内存和消息队列解耦,保证多路视频流处理的实时性和稳定性。
二、我负责的模块与结果
本人独立负责控制器侧全部工作,包括软件算法与嵌入式部署。具体完成以下内容:
模型训练与优化:采集港口现场碳刷图像数据,完成数据标注,基于YOLOv8训练二分类检测模型,并将PyTorch模型转换为TensorRT格式进行推理加速;
软件系统开发:使用Python开发完整后端服务,集成OpenCV视频解码、YOLOv8推理引擎、滑动窗口防抖逻辑及Web可视化界面;
部署与集成:在Jetson上配置Ubuntu环境及依赖库,完成系统打包与自启动配置,并提供HTTP状态接口供PLC人员对接。
最终实现多路视频实时检测,成功替代人工巡检。
三、遇到的难点与解决方案
难点一:港口光照变化剧烈导致误检。白天强逆光、夜间补光不足时,碳刷边缘特征模糊。解决方案:在预处理阶段增加自适应直方图均衡化(CLAHE)增强对比度,并在训练时加入亮度扰动、高斯噪声等数据增强策略,模型泛化能力明显提升。
难点二:起重机振动导致检测框抖动。摄像头随设备振动,单帧偶尔出现误检为掉落。解决方案:设计滑动窗口防抖机制,连续10帧中至少有5帧判定为掉落才确认报警,同时采用卡尔曼滤波对检测框位置进行平滑处理,显著降低误报率。
难点三:Jetson资源受限,多路实时推理卡顿。同时处理4路1080P视频流时GPU内存占用高,推理延迟增大。解决方案:将视频缩放至640×640分辨率输入模型,限制每路处理帧率为5fps,并采用多线程流水线架构(解码线程与推理线程分离),最终稳定运行且CPU/GPU占用率控制在70%以内。