深夜的报警误触
上周三凌晨两点,手机突然被安防系统的误报警吵醒——监控里一个晃动的树影被识别成了“人形目标”。爬起来查看日志,发现YOLOv11在低光照场景下把噪声当成了特征,虚警率飙升到白天的三倍。这让我意识到,把白天训练好的模型直接丢到夜间环境,就像让习惯了日光的人突然走进暗室,根本看不清东西。
夜间目标检测的难点很直观:光照不足导致信噪比暴跌,颜色信息基本丢失,常规的RGB通道在暗处几乎失效。但需求又很刚性:安防、自动驾驶夜视、野外监测……这些场景不会因为天黑就暂停工作。
低光照图像的本质问题
先拆解一下低光照图像到底出了什么问题。用OpenCV读一张夜间图片,把像素值直方图画出来就能看到,大量像素堆积在0-50的暗区,整体对比度被压缩。这时候YOLO的Backbone再强,也抽不出有区分度的特征。
更麻烦的是噪声。ISO拉高之后,传感器噪声在暗处被放大,在模型眼里可能和真实边缘特征长得差不多。我试过直接对夜间图做直方图均衡化,结果噪声也跟着被增强,检测框开始到处乱跳。
# 常见的错误做法:直接暴力拉亮度defbad_lowlight_enhance(image