3. 视频数据预处理与增强

养殖场摄像头采集到的原始视频,几乎不可能直接送进异常识别模型。原因很实际:连续视频里大量帧是冗余的,猪只趴卧不动时前后几十帧几乎一样;夜间红外画面噪声大、对比度低;不同栏舍的光照差异悬殊;而异常事件(如咬尾、跛行、堆压)往往只占很短时间窗口。因此预处理与增强的核心任务不是"美化画面",而是在保留异常判别信息的前提下,把原始视频整理成模型能稳定学习的样本。本节按处理链路依次展开:解码抽帧、分辨率与帧率调整、去噪与光照补偿、数据增强,并说明每一步对异常识别结果的实际影响。

一、解码抽帧:先决定"看多密"

解码是把 H.264/H.265 码流还原为图像帧的过程。工程上常用 OpenCV 的 VideoCapture 或 FFmpeg 按时间戳取帧。抽帧策略直接决定样本密度与算力开销,常见三种:

  • 固定间隔抽帧:如每 5 帧取 1 帧(25fps 源视频即 5fps)。实现简单,适合行为持续时间较长的场景,如采食、饮水。
  • 按时间抽帧:每 0.5 秒或 1 秒取一帧,与源帧率解耦,多路摄像头统一节奏时更稳妥。
  • 事件触发抽帧:先用轻量运动检测或背景差分筛出"有变化"的片段,再在片段内加密抽帧。适合咬尾、突然惊群等短时异常,可显著降低无效样本。

抽帧过稀会漏掉短时异常——例如一次持续 2 秒的争斗,若 1fps 抽帧可能只留下 2 帧,模型难以判断动作连续性;抽帧过密则样本冗余、标注成本翻倍。一个可操作的判断依据是:异常事件的最短持续时间 × 目标帧率 ≥ 3~5 帧,才能让时序模型捕捉到动作过程。示例设定:某育肥舍异常事件平均持续 3 秒,取 2fps 抽帧可得约 6 帧,基本够用。

二、分辨率与帧率调整:在细节和算力间取舍

分辨率决定"看得清不清"。养殖场常见 1080P 或 4MP 摄像头,但远景栏舍里一头仔猪可能只占几十像素。若统一缩放到 640×640 送入模型,远处小目标会进一步模糊。实践中可按目标尺度反推:设仔猪在画面中约占 1/20 画面高度,1080P(高 1080)下约 54 像素,缩放到 640 后仅剩约 32 像素,接近检测下限。此时应优先裁剪感兴趣区域(ROI)再缩放,而不是整幅缩小。

帧率调整则影响时序特征。行为识别模型常以 8~16 帧片段为输入,若源视频 25fps 直接取连续帧,1 秒动作被压缩进 16 帧会丢失节奏;改为按固定时间间隔重采样到 10fps,动作速度感更接近真实。下表给出示例参数组合(属教学假设,非实测):

场景抽帧输入分辨率片段长度主要考虑
限位栏母猪姿态1fps640×640单帧姿态变化慢,单帧足够
育肥舍咬尾识别5fpsROI 裁剪后 512×51216 帧动作快,需时序信息
夜间红外巡检2fps768×7688 帧噪声大,需保留细节

三、去噪与光照补偿:让画面"稳定可学"

养殖场视频的干扰主要有三类:红外夜视的高斯噪声与椒盐噪声、粉尘和水汽造成的低对比度、以及侧窗强光或补光灯造成的局部过曝。去噪常用中值滤波(对椒盐噪声有效)或双边滤波(保边去噪,适合保留猪只轮廓);对夜间红外画面,可先做轻度高斯滤波再配合直方图均衡化提升对比度。

光照补偿要区分两种情况:全局偏暗可用 CLAHE(限制对比度自适应直方图均衡)分块增强,避免整幅拉伸导致噪声放大;局部过曝则不宜强行拉回,因为过曝区域信息已丢失,更合理的做法是在训练集中纳入同类过曝样本,让模型学会忽略。需要提醒的是,去噪与增强会改变像素统计分布,若训练集做了 CLAHE 而推理端未做,模型性能会明显下降——预处理必须训练与推理保持一致,这是最容易踩的坑。

养殖场视频预处理与增强链路及其对异常识别的影响 原始视频流 H.264 / 25fps 解码抽帧 固定间隔 / 事件触发 2~5 fps 分辨率/帧率调整 ROI 裁剪 + 缩放 重采样至 10fps 去噪与光照补偿 中值/双边滤波 CLAHE 对比增强 数据增强 翻转/裁剪 色彩抖动 各环节对异常识别的关键影响 抽帧过稀 → 短时异常(咬尾、争斗)帧数不足,时序模型无法判断动作连续性 整幅缩小 → 远处仔猪目标仅剩约 32 像素,接近检测下限;应 ROI 裁剪后再缩放 训练用 CLAHE、推理未用 → 像素分布不一致,模型性能明显下降,必须两端一致 翻转增强需谨慎:左右翻转会改变"朝向栏门/料槽"的方向语义,可能引入错误标签 数据增强方法与适用性 水平/垂直翻转 扩充视角多样性 注意方向语义 姿态类任务较安全 随机裁剪 模拟不同距离与遮挡 裁剪比例建议 0.7~1.0 避免裁掉关键部位 色彩抖动 亮度/对比度/饱和度扰动 模拟昼夜与补光差异 幅度不宜过大 增强后校验 标签随几何变换同步 抽样目视检查 验证集不做增强

四、数据增强:扩样本,但别改语义

养殖场数据天然不均衡:正常行为样本海量,异常样本稀少。数据增强通过几何与色彩变换扩充样本多样性,提升模型泛化。常用三类:

  • 翻转:水平翻转最常用,可模拟摄像头左右视角差异。但要注意方向语义——若任务依赖"猪只朝向料槽"或"从栏门进入"的方向判断,翻转会制造错误标签,此时应只对姿态、计数类任务使用。
  • 裁剪:随机裁剪模拟不同距离、部分遮挡。建议裁剪面积比例控制在 0.7~1.0,并保证裁剪框仍包含完整目标;对咬尾这类需要"两头猪相对位置"的任务,过度裁剪会破坏空间关系。
  • 色彩抖动:调整亮度、对比度、饱和度,模拟昼夜、补光灯开关、粉尘造成的色偏。幅度要克制,例如亮度扰动 ±20%、饱和度 ±15%,过大可能把健康肤色改成病态色,反而干扰识别。

增强有一条铁律:几何变换必须同步变换标注框和关键点,否则标签错位比不增强更糟。另外,验证集和测试集不做随机增强,只做与推理一致的确定性预处理,否则评估结果不可信。

五、把链路串起来:一个可执行的检查顺序

实际落地时,建议按"先定抽帧、再定尺度、后做增强"的顺序推进,并用小批量样本验证每一步。例如先取某栏舍 10 分钟视频,按 2fps 抽帧得到约 1200 帧,人工抽查异常片段是否被完整保留;再对含仔猪的远景区域做 ROI 裁剪,确认目标像素数不低于 40;随后统一施加去噪与 CLAHE,并把同一套参数固化到推理服务;最后在训练侧开启翻转与色彩抖动,抽样 50 张增强图目视检查标签是否同步。判断是否达标,可看两个信号:异常片段召回是否稳定、验证集与线上推理的指标差距是否收敛。若线上明显掉点,优先排查预处理不一致,而不是急着换模型。

预处理参数(抽帧率、缩放尺寸、CLAHE 参数、增强幅度)应作为配置文件版本化管理,与模型权重一一对应。换模型或换摄像头时,先核对预处理配置是否匹配,能避免大量"模型退化"的误判。