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,动作速度感更接近真实。下表给出示例参数组合(属教学假设,非实测):
| 场景 | 抽帧 | 输入分辨率 | 片段长度 | 主要考虑 |
|---|---|---|---|---|
| 限位栏母猪姿态 | 1fps | 640×640 | 单帧 | 姿态变化慢,单帧足够 |
| 育肥舍咬尾识别 | 5fps | ROI 裁剪后 512×512 | 16 帧 | 动作快,需时序信息 |
| 夜间红外巡检 | 2fps | 768×768 | 8 帧 | 噪声大,需保留细节 |
三、去噪与光照补偿:让画面"稳定可学"
养殖场视频的干扰主要有三类:红外夜视的高斯噪声与椒盐噪声、粉尘和水汽造成的低对比度、以及侧窗强光或补光灯造成的局部过曝。去噪常用中值滤波(对椒盐噪声有效)或双边滤波(保边去噪,适合保留猪只轮廓);对夜间红外画面,可先做轻度高斯滤波再配合直方图均衡化提升对比度。
光照补偿要区分两种情况:全局偏暗可用 CLAHE(限制对比度自适应直方图均衡)分块增强,避免整幅拉伸导致噪声放大;局部过曝则不宜强行拉回,因为过曝区域信息已丢失,更合理的做法是在训练集中纳入同类过曝样本,让模型学会忽略。需要提醒的是,去噪与增强会改变像素统计分布,若训练集做了 CLAHE 而推理端未做,模型性能会明显下降——预处理必须训练与推理保持一致,这是最容易踩的坑。
四、数据增强:扩样本,但别改语义
养殖场数据天然不均衡:正常行为样本海量,异常样本稀少。数据增强通过几何与色彩变换扩充样本多样性,提升模型泛化。常用三类:
- 翻转:水平翻转最常用,可模拟摄像头左右视角差异。但要注意方向语义——若任务依赖"猪只朝向料槽"或"从栏门进入"的方向判断,翻转会制造错误标签,此时应只对姿态、计数类任务使用。
- 裁剪:随机裁剪模拟不同距离、部分遮挡。建议裁剪面积比例控制在 0.7~1.0,并保证裁剪框仍包含完整目标;对咬尾这类需要"两头猪相对位置"的任务,过度裁剪会破坏空间关系。
- 色彩抖动:调整亮度、对比度、饱和度,模拟昼夜、补光灯开关、粉尘造成的色偏。幅度要克制,例如亮度扰动 ±20%、饱和度 ±15%,过大可能把健康肤色改成病态色,反而干扰识别。
增强有一条铁律:几何变换必须同步变换标注框和关键点,否则标签错位比不增强更糟。另外,验证集和测试集不做随机增强,只做与推理一致的确定性预处理,否则评估结果不可信。
五、把链路串起来:一个可执行的检查顺序
实际落地时,建议按"先定抽帧、再定尺度、后做增强"的顺序推进,并用小批量样本验证每一步。例如先取某栏舍 10 分钟视频,按 2fps 抽帧得到约 1200 帧,人工抽查异常片段是否被完整保留;再对含仔猪的远景区域做 ROI 裁剪,确认目标像素数不低于 40;随后统一施加去噪与 CLAHE,并把同一套参数固化到推理服务;最后在训练侧开启翻转与色彩抖动,抽样 50 张增强图目视检查标签是否同步。判断是否达标,可看两个信号:异常片段召回是否稳定、验证集与线上推理的指标差距是否收敛。若线上明显掉点,优先排查预处理不一致,而不是急着换模型。