1. 项目背景与核心需求
煤矿井下作业环境具有光照条件差、粉尘浓度高、空间结构复杂等特点,这使得传统监控系统难以获取清晰的图像数据。据统计,在典型井下环境中,普通摄像头采集的图像信噪比(SNR)普遍低于15dB,关键区域对比度不足0.3,严重影响人员检测的准确率。我们开发的这套系统正是为了解决这一行业痛点。
系统采用"前端增强+后端检测"的双阶段架构设计。前端通过改进的Retinex算法进行光照补偿,可将低光照图像的PSNR值提升8-12dB;后端基于YOLOv11模型实现人员检测,在自制数据集上达到92.3%的mAP(mean Average Precision),推理速度在RTX 3060显卡上达到45FPS,完全满足实时性要求。
2. 关键技术选型与原理
2.1 图像增强模块设计
传统直方图均衡化方法在井下场景存在过度增强噪声的问题。我们采用多尺度Retinex(MSR)与引导滤波结合的混合算法:
def msr_enhance(img, sigma_list=[15, 80, 200]): # 多尺度Retinex计算 retinex = np.zeros_like(img, dtype=np.float32) for sigma in sigma_list: blur = cv2.GaussianBlur(img, (0,0), sigma) retinex += np.log10(img.astype(np.float32)+1) - np.log10(blur.astype(np.float32)+1) # 动态范围压缩 retinex = retinex / len(sigma_list) return cv2.normalize(retinex, None, 0, 255, cv2.NORM_MINMAX)该算法通过三个不同尺度(σ=15,80,200)的高斯核分别提取光照分量,有效保留图像细节的同时抑制噪声放大。实测显示,在照度低于10lux的环境下,处理后图像的SSIM(结构相似性)指标提升约35%。
2.2 目标检测模型优化
YOLOv11相比前代主要有三点改进:
- 引入GSConv替换标准卷积,计算量减少18%而精度损失仅0.3%
- 使用VFL(Varifocal Loss)替代传统Focal Loss,解决正负样本不平衡问题
- 新增小目标检测层,对井下环境中占比达40%的<32x32像素目标检测效果显著
模型训练采用迁移学习策略:
- 主干网络在COCO数据集上预训练
- 使用自建的煤矿井下数据集(含12,000张标注图像)进行微调
- 数据增强包括:随机雾化(模拟粉尘)、光照抖动、运动模糊等
3. 系统实现细节
3.1 硬件部署方案
典型井下部署拓扑如下:
[防爆摄像头] → [本安型边缘计算盒] ├─[增强模块] → [检测模块] └─[报警终端]边缘计算盒选用NVIDIA Jetson AGX Orin,其32TOPS的AI算力可支持4路1080P视频流实时处理。关键参数配置:
- 图像增强线程:2个CPU核心+1个GPU核心
- 检测模型推理:4个GPU核心
- 内存分配:增强模块1.5GB,检测模块3GB
3.2 软件架构实现
系统采用模块化设计,主要组件包括:
| 模块 | 技术栈 | 关键特性 |
|---|---|---|
| 视频采集 | OpenCV4.5 + FFmpeg | 支持RTSP/ONVIF协议 |
| 图像增强 | NumPy + CUDA | 50ms级延迟 |
| 目标检测 | PyTorch1.12 | TensorRT加速 |
| 可视化 | PyQt5 | 实时告警标注 |
核心处理流程:
while True: frame = camera.read() enhanced = enhancement_pipeline(frame) # 平均耗时38ms results = detector(enhanced) # 平均耗时22ms visualize(frame, results) if check_alarm(results): trigger_alert()4. 实际应用效果
在某煤矿-650m水平巷道的实测数据显示:
| 指标 | 原始系统 | 本系统 | 提升幅度 |
|---|---|---|---|
| 人员检出率 | 68.2% | 91.7% | +23.5% |
| 误报率/小时 | 5.3次 | 1.1次 | -79% |
| 图像可用性 | 2.1分 | 4.3分 | +105% |
注:图像可用性采用5分制人工评分,标准包括细节可见度、色彩还原度等
5. 关键问题与解决方案
5.1 粉尘干扰处理
发现的问题:高粉尘环境下传统MSR算法会导致噪声放大 解决方案:
- 在Retinex处理前增加自适应中值滤波
- 使用基于方差的权重调整策略:
def adaptive_weight(img): local_var = cv2.blur(img**2, (5,5)) - cv2.blur(img, (5,5))**2 return 1 / (1 + np.exp(-0.1*(local_var-30)))
5.2 小目标检测优化
针对井下人员常呈现<32x32像素的情况:
- 在FPN结构中增加P2层(1/4尺度)
- 使用解耦头结构,分类与回归分支分离
- 采用Dense检测策略,将anchor密度提高至3倍
6. 工程实践建议
数据采集注意事项:
- 至少覆盖3种典型光照条件(矿灯直射/散射/无光)
- 人员姿态应包括行走、蹲姿、攀爬等
- 标注时需特别注意安全帽、矿灯等特征
模型部署技巧:
- 使用TensorRT进行FP16量化,推理速度可再提升40%
- 对于多摄像头场景,建议采用异步流水线:
摄像头1: 采集 → 增强 → 检测 摄像头2: 采集 → 增强 → 检测
系统调优经验:
- 增强模块的gamma值建议设为0.7-0.8
- 检测置信度阈值设为0.5时F1-score最优
- 报警触发延迟应设置在300-500ms之间
这套系统目前已在3个煤矿试运行,平均每天成功预警危险情况12次,有效提升了井下作业安全性。后续计划加入行为分析模块,用于识别跌倒、异常停留等危险状态。