🔍搜索⌘K

白天训的模型,晚上直接跑会乱报——推理端得先门控

问题

我手上有个检测模型,只在白天拍的画面上训练出来的。部署的时候设备是二十四小时开机的,白天黑夜都在跑。我心里默认模型”既然能认白天,晚上应该也差不多能凑合”。

现象

真把夜里的画面喂进去,才发现完全不是那么回事。夜里用的是另一种成像(红外那种冷色调、噪点也跟白天不一样),模型从来没见过这种样子的图,于是一通乱检——明明画面里什么都没有,它硬给你报出一堆目标,而且报得还挺自信。白天好好的准确率,夜里直接崩成筛子。

问题不在模型训得不好,而在我拿错了数据去喂它:你只教过它白天长什么样,就别指望它晚上也认得。

怎么解决

既然训练数据做不到白天黑夜都覆盖,那就别让不匹配的帧进模型。我在推理端加了一道门控,两招都试过:

  • 按时间段管:只在白天那个时间窗里跑检测,夜里干脆不调模型。
  • 按亮度管:每一帧先算个平均亮度,低于某个阈值的暗帧直接跳过,根本不送进模型。

两招本质一样——把模型没见过的那种帧,在进模型之前就挡在门外。

结论

训练数据和部署场景必须对齐,这是底线。对齐不了的时候,别硬指望模型”通吃”,老老实实在推理端把不匹配的输入过滤掉。模型的边界,要靠代码在它外面画清楚,不是靠它自己懂事。