
在规模化养猪场里待过的人都知道栏舍里几千头猪同时活动的时候最磨人的活儿有两样一是点猪二是看猪。点猪要围着栏舍来回数好几遍数到头晕还得担心漏数看猪更费神打架、咳嗽、趴着不动、采食异常全靠饲养员肉眼盯一个班次下来眼睛都是酸的。至于人员进出管理很多猪场还停留在“签字本钥匙”的阶段谁进了哪个区、有没有按规定换鞋换衣基本靠自觉。我们这期项目做的就是把这些事交给计算机视觉。项目代号就叫“模拟项目X”核心是三个任务生猪计数、猪只行为监测、人员安全管理。配套的“猪只行为识别数据集第10542期”是整套算法持续迭代的数据基座。项目跑下来的主线逻辑很简单先用视频数据教会模型认识猪、认识人再把模型部署到边缘设备上让猪场本地实时出结果不依赖云端断网也能用。这套东西不是科研Demo而是要在生产环境里长期稳定跑所以踩坑记录特别多我把其中最有价值的经验整理出来分享。1. 一个猪场里的三类脏活累活项目到底在解决什么问题1.1 场景还原规模化养殖场一天的真实压力我先描述一下目标场景以免大家误以为这是某个实验室里的小型Demo。项目落地在一个存栏量约7000头生猪的大型养殖基地分妊娠舍、产房、保育舍、育肥舍和隔离舍。每个舍内几十个栏每个栏少则十几头、多则四五十头。饲养员一天的工作清单里点猪是硬性的早晚各一次任务巡栏时听到异常的咳嗽声、看到斗殴引起的伤口都要记录上报人员在各个区域之间流动能不能做到分区管控直接关系到生物安全。传统模式的问题不是“人不勤快”而是物理极限。点猪时猪一直在动尤其保育期的仔猪几头叠在一起根本数不清靠人工数的误差通常在5%以上巡栏的间隔再短也有空窗期半夜发生的咬尾、压伤很难及时发现。至于人员安全出入口登记只能证明“有人来过”没法证明“谁在哪个区域待了多久”“有没有穿防护服进场”。所以这套系统的价值不是替代饲养员而是把“眼睛”的数量扩大几十倍把注意力可以24小时不间断地放在每头猪身上。它能给猪场管理者提供实时数字栏内数量是否匹配、哪些猪活动量异常、哪些区域有非授权人员闯入。数据累积下来还能反推饲养流程哪里需要优化。1.2 三大任务拆解计数、行为监测、人员安全的难点共性这三个任务听着分属不同方向但技术底层高度一致都依赖目标检测和时序分析。生猪计数需要对视频里的猪做实时检测和跨帧跟踪行为监测需要先定位个体再用姿态、运动轨迹和音频特征去分类动作人员安全管理同样基于人员检测和身份识别。三者共用一套视频采集和推理框架共享同一个数据集的采集标注流程。难点共性首先是目标外观高度相似。猪和猪之间没有明显的个体外观差异白色育肥猪在模型眼里几乎长得一模一样这给跨帧跟踪带来了挑战其次是遮挡严重猪只互相叠压、接近摄像头时身体变形常规检测模型很容易漏检或误检。这两个共性问题贯穿了整个项目的数据标注、模型训练和调优阶段。第二个共性是对实时性要求高。猪场里的事件窗口很短一场咬尾可能几十秒内就结束人员闯入后如果不能在几十秒内告警现场处置的价值会大打折扣。我们不能跑一个重型模型在服务器上慢慢算而是要把识别能力压进边缘设备保证一路视频在几十毫秒内完成推理。1.3 为什么数据集建设是这一切的前提我特别想强调数据集这个开头被很多人忽略的部分。很多人一听“猪只行为识别”第一反应是“找预训练模型改改”但实际做下来会发现通用目标检测模型在猪栏场景的泛化能力很差。栏舍的光照条件、栏位网格产生的条纹、猪身上的污迹、地面水渍造成的反光这些都是工业现场特有的噪声公开数据集里几乎没有覆盖。“猪只行为识别数据集第10542期”这个名字里的编号指的是一个持续编号的数据建设计划中的第10542批样本包。每一期都围绕固定的采集点、固定的机位角度、固定的场景轮换机制进行数据收集再经过清洗和标注进入模型训练闭环。模型好不好用七成功劳都在数据集上算法反而是相对成熟的部分。2. 生猪计数让几千头猪“一遍数清”的三个关键瓶颈2.1 计数技术选型为什么放弃纯目标检测方案生猪计数第一版我们用的是纯目标检测的思路训练一个猪只检测模型统计当前画面里检测框的数量当作总数。这个方案在猪少、栏内开阔时可以做到90%以上的准确率但一到高密度场景就露馅。猪叠在一起时检测框会互相覆盖单张图片的漏检率急剧上升。而且猪随时在走动统计结果不停跳动没法给出稳定、可信的栏内数量。后续我们改成了“检测跨帧跟踪跨线计数”的三段式方案。简单说先检测出每一头猪的位置再用跟踪算法将视频中同一头猪关联起来最后在栏门口或画面中央设置一条虚拟线利用目标穿越方向统计栏内猪只数量。这个方案更像过闸机相同的猪只重复出现在画面里不会被重复计数只有真正穿越了虚拟线的个体才会计数。实践证明在高密度栏舍环境中跨线计数的稳定性远高于单帧统计。2.2 跨线计数在实践中必须处理的几个细节跨线计数听起来简单真正实现时细节非常多。这里我把几个关键细节展开说大家可以照着避坑。第一虚拟线的位置要避开猪只经常躺卧的区域。如果猪长期趴在线上不动跟踪ID会反复抖动导致计数跳动。我们最终把虚拟线设置在栏门和喂料槽之间猪只吃料和进出必然穿越的位置。每个栏的线位置单独配置不搞全场统一。第二跟踪ID断裂问题。白色猪只外观一致模型在前后帧容易跟丢一旦ID切换就会产生一次误计。我们通过添加额外的IOU匹配约束以及短时缺失预测目标消失不超过2秒时按前一帧位置补轨迹来降低断链概率。第三稽核逻辑要配合人工复核。计数结果不能只出数字要落成“栏位-数量-统计时间”的结构化记录并在数量与档案应存数不匹配时触发复检机制。自动系统负责减轻人力的负担最终确认仍需饲养员在手机端确认——这个流程设计很重要因为它承认了算法有误差边界。2.3 计数模块的实测效果在埋点运行两个月后我们统计了计数模块在三种栏型的准确率。空栏和猪只数量较少的妊娠栏较好处理数量误差基本控制在2头以内育肥舍高密度栏难度高一些栏内四五十头猪挤在一起时误差会波动到3到5头。对比之前人工点猪的经验数据这个准确率已经能替代日常早晚点猪并能作为出栏交接时的辅助依据。这里有一个实际执行的教训摄像头安装角度直接决定计数模型的上限。俯视角度低于45度时猪只互相遮挡严重多数错误都出在重叠目标上安装在栏正上方、接近垂直俯视的角度漏检最少。我们在中期巡检时重新调整了一半栏舍的摄像头角度计数准确率平均提升了4个百分点。这个提升没有增加任何模型算力和标注成本属于白捡的分。3. 行为监测认得出病猪、分得清打架才算真的“看懂”3.1 行为识别体系从“看得到”到“看得懂”计数只是第一步行为监测才是这个项目里最能体现价值的模块。我们最终圈定了六类重点行为采食、饮水、卧躺、站立/走动、争斗含咬尾、异常姿态跛行、弓背。这六类行为覆盖了保育和育肥环节80%以上的健康管理需求。训练数据来自“猪只行为识别数据集第10542期”中标注好的行为段。和单纯的目标检测不同行为识别至少要结合时序信息单帧无法判断“打架”和“玩耍蹭痒”的区别。我们使用了检测加时序分类的方案先检测个体再对每头猪生成一个持续数秒的运动轨迹和姿态变化序列输入轻量级时序分类器。这里不展开模型结构细节重点说清楚数据闭环行为事件会保存视频片段和结构化标签饲养员手机端可以一键回放确认确认后的样本回流到数据集形成再训练资源。3.2 声音辅助咳嗽和打喷嚏靠画面不够猪只呼吸道疾病在猪场是高发问题早期症状就是咳嗽、打喷嚏。靠画面识别这些问题并不平稳猪低头吃料时嘴部动作会干扰判断栏舍灯光昏暗时更不可靠。所以我们额外加了一道音频识别分支在每个栏舍部署拾音器采集环境声音做咳嗽音检测。音频识别的挑战在于环境噪声风机、水冲粪、猪拱地、铁栅栏碰撞等声音混杂在一起。我们采集了大量纯噪声样本做负样本底库咳嗽检测只有在声音分贝达到阈值且信噪比匹配时才触发。为了防止隔壁栏猪的咳嗽串扰到本栏算法还会结合空间位置过滤确保只有当前栏畜禽舍内的咳嗽事件才会生成告警。这个模块上线后咳喘类疾病的发现时间平均提前了6小时以上。3.3 行为节律分析比单次告警更值钱的是趋势单次行为事件只能反映当下的状态真正有管理价值的是行为节律的变化。系统会为每头猪或每个栏绘制24小时采食、饮水、活动节律曲线。一头猪的采食时长如果连续两天下降20%以上即使还没有出现明显的病理症状系统也会标记为“待关注”提醒饲养员重点观察。节律分析有效降低了误报率。猪是群居动物偶尔的打架、短暂的不爱吃料都很正常如果每次异常都触发告警饲养员会迅速疲劳慢慢就不再信任系统。我们设置了分级告警机制黄色关注单次行为偏差但可观察、橙色预警节律明显偏离基线、红色告警连续异常立即现场复核。这个分级机制执行到位后饲养员对告警的响应率不降反升项目团队和一线生产的配合也顺畅了很多。4. 人员安全管理不只是防偷猪而是把作业规范盯起来4.1 人员定位与身份识别把“谁在哪”搞清楚人员安全管理模块在设计之初很多猪场的诉求是“防止偷猪”。但我跟养殖场负责人聊完后发现真正的痛点远不止防盗。规模化猪场对生物安全要求极高人员未经消毒进入核心生产区、换衣换鞋不规范、在禁烟区吸烟这些才是常态风险。系统方案包含三个层次人员检测、身份识别、行为规范判断。摄像头抓到人形后先判断是否属于授权人员通过人脸特征某些入口工牌识别作为兜底再结合电子围栏区域判断该人员是否有权限进入当前区域。非授权人员闯入会触发声光告警并推送截图到管理端授权人员在非常规时间出现在非常规区域也会被标记为异常事件。4.2 动态规范检测戴没戴安全帽、穿没穿防护服对场内员工的管理我们接了作业规范检测。比较基础的是安全帽与防护服穿戴识别。训练样本包含了不同季节、不同光照下的穿戴状态数据仍然来自统一数据集体系。这一块模型难度不低因为员工衣服颜色五花八门防护服反光材质在不同角度下颜色会漂移。我们要求模型输出的是“规范穿戴/局部未穿戴/完全未穿戴”三分类结果具体判断逻辑配合穿戴区域检测而不是整个画面笼统分类。另一个值得说的细节是倒地检测。员工在栏舍内滑倒、被猪冲撞后长时间倒地不起这类事件如果无人发现会非常危险。系统检测到人员姿态异常倒地且超过设定时间没有起身时会自动通知值班室。这个功能看着简单却是员工对整套系统产生信任感的关键功能之一。养殖场环境地面湿滑有同事确实经历过滑倒因此这个场景做扎实后员工对监控摄像头的抵触情绪小了很多。4.3 隐私与权限安全管理必须先管住自己做人员管理模块隐私保护必须前置设计。视频流默认只保存在本地存储管理端只接收经过脱敏处理的关键帧和结构化事件数据不会把整段视频传到外部平台。权限上分三级饲养员可见自己负责栏舍的画面场区管理员可见全部行为事件只有场长级别的账号可以查看人员轨迹信息。这个设计在实施时说服了很多一线员工。刚上线时大家压力很大盯着摄像头觉得“被监视感”很强甚至有员工提出如果系统记录位置轨迹就离职。我们后来开了沟通会公开了数据权限设计明确提出“管理数据、不监视个人”并允许员工在非生产区域关停个人相关的记录功能。做智慧养殖项目技术能力往往不是瓶颈让人接受才是。5. 数据集第10542期数据怎么采、怎么标、怎么校验5.1 数据采集规范比数量更重要的是场景多样性很多人以为数据集建设就是拉几台摄像头录制、然后找人标注直到第10542期我们才摸到一些门道。数据量的确重要但场景多样性更关键。如果只在晴天的白天采集一到阴天、夜晚补光环境模型性能就会大幅下降。数据采集规范包含四个维度时间维度白天、夜晚、黄昏、天气光照自然光、灯光、红外补光、姿态维度站立、躺卧、侧躺、叠压、视野维度远距离全景、近距离个体。每次新增数据都会按这四维覆盖度进行检查覆盖度不足的采集计划会被打回补充拍摄。5.2 标注规范与难点遮挡目标怎么标、小目标怎么标数据集标注是最有学问的一个环节。猪只目标遮挡极其严重业内常规做法是“看到多少标多少”但这种标注对计数模型不友好漏标会误导模型。我们最终建立的标注规范是可见面积大于30%的猪只全部标注遮挡面积超过70%的目标可以不标但要在标注文件中记录为“遮挡样本”。小目标处理是另一个难题。全景画面中远处的猪只只有几十个像素人工标注时容易被忽略。我们在标注工具中增加了小目标自动筛查功能对已标注目标做尺度统计将尺寸小于设定阈值的样本单独找出来确认。这个流程看着简单却让模型在远距离识别能力上提升了明显一截。另外数据标注质量必须做双重校验。第一轮标注第二轮抽检抽检准确率要达到95%以上才算合格。我在项目里还推行了一种做法每周随机抽取一段已标注数据让饲养员复核行为标签的准确性。饲养员不一定懂算法但他们最懂猪他们指出的“这不是打架是玩耍”之类的修正对整个行为标签体系帮助很大。5.3 数据版本与模型迭代第10542期如何参与训练闭环数据集是需要版本管理的我们的每一期数据都有独立的版本编号和变更记录。第10542期对应的这批数据主要补充了冬季清晨低照度场景和保育期仔猪打堆场景。新增数据不是直接混入旧数据重新训练而是先做一轮分布对比确认新场景在旧模型上的表现差距再决定数据增强策略和训练权重配比。训练闭环是这样的模型上线后产生误报和漏报现场运营人员标记出问题样本每周回收这些样本加入下一期数据集隔周迭代一次模型。这个闭环能不能跑起来取决于现场人员的配合程度。我们特别设计了极其简单的回标工具——饲养员只需要在报警列表里点“正确”或“错误”不需要自己画框这样一线人员才愿意参与这件事情。6. 边缘落地与部署硬件选型、模型压缩、摄像头调试6.1 算力规划一路视频要占多少资源模型最终跑在猪场本地的边缘计算设备上而不是云端服务器。为什么这么选猪场网络环境普遍不稳定且视频数据涉及养殖场隐私全部上云既不现实也不经济。我们在每个猪舍部署一台边缘计算设备负责本区域的视频解码、推理、告警和本地存储。算力规划要算细账。一路1080P视频实际检测帧率不需要25帧全跑我们降低到2至5帧/秒做目标检测行为识别按事件触发而不是全帧分析。这样的策略下单路视频平均占用边缘设备的算力约为6%至10%。“数据始终在本地算法模型定期更新”这是整个部署设计的大原则。6.2 模型压缩与格式转换实机跑起来的模型得有取舍在服务器上测试模型性能很高但搬到边缘设备上就发现显存和计算量都吃紧。我们对模型做了四步处理第一模型轻量化。检测骨干网络替换为轻量级结构在精调时通过知识蒸馏把大模型的能力迁移到小模型上。这一步能让模型体积缩小到原来的三分之一左右。第二定点化量化。将模型从浮点精度转为整数精度转换后推理速度提升明显但精度会有轻微损失。损失的程度需要实测不是所有模型都能接受。我们采取的做法是精度降低不超过1个点时接受超过就调回混合精度。第三推理框架优化。部署到边缘设备时统一转换为对应的优化推理格式并开启动态批处理让多路视频可以共享计算资源。第四按场景裁剪任务。不是每个栏舍都需要跑全量功能。产房重点关注母猪压仔保育舍重点看打架育肥舍侧重数量和采食节律。按场景裁掉不用的模型分支用节省出来的算力换更高的识别帧率。6.3 摄像头安装、网络和供电的现场经验这一类细节是项目后期返工最多的部分。摄像头最好选带红外补光的枪机定焦镜头避免自动变焦带来的图像抖动安装高度建议在3米以上角度向下倾斜保证栏舍全貌可见同时避免猪只过于贴近镜头。供电和网络部署要重点考虑猪场的腐蚀性环境。猪舍内氨气浓度高接线端子很容易氧化电源接头要使用防水防腐蚀等级足够的规格。网线方面超五类线勉强够用但最好用六类及以上并做屏蔽处理。无线方案在猪场的稳定性很差钢筋结构和金属栏位对信号衰减明显能走有线就走有线。另外我强烈建议调试阶段就在现场多留几天。摄像头图像质量直接影响模型效果同一个型号的两台设备装在不同位置画面亮度和对比度差异可能非常大。现场调节白平衡、曝光补偿和红外强度比回到办公室调模型参数见效快得多。7. 常见问题与现场排查速查表这一节我把项目运行期间的典型问题和排查方案整理成速查表方便同行在部署类似项目时快速定位问题。表格里的“根因”都是我们实际排查后确认过的原因不是理论推断。问题现象可能根因排查方式处理建议单栏计数频繁跳动跟踪ID断裂猪只外观相似导致跨帧跟丢查看跟踪轨迹可视化确认猪只穿越虚拟线时的ID是否切换调整IOU匹配阈值增加目标消失轨迹预测机制夜间漏检率明显上升红外补光导致图像目标细节模糊对比白天和夜间的检测输出检查补光强度调整红外灯角度和亮度增加夜间图像样本补充训练行为识别误报率高场景固定机位中的视角变化不大但行为类别边界模糊回看告警截图确认误报集中在哪类行为增加行为类别间差异标注调整分类阈值必要时增加上下文时序长度咳嗽检测经常误报风机等环境噪声的能量分布接近咳嗽音检查音频信噪比和触发阈值采集风机噪声样本加入负样本库调整频段过滤范围人员闯入不告警人员检测的小目标漏检确认摄像头覆盖距离查看人员最远出现在哪个像素级别调整检测帧率考虑在远端追加一台摄像头或增大模型输入分辨率告警太多导致饲养员忽略系统默认阈值过敏感异常事件分级不合理统计24小时内各等级告警数量优化黄色关注告警的触发条件将单次异常改为连续异常确认后才告警边缘设备频繁重启或死机供电不稳或过热检查设备温度日志和供电电压记录加装工业级稳压电源优化设备摆放通风考虑机柜加装风扇除了表格里的问题还有一个容易踩的坑边缘设备系统时间漂移。如果设备没做时间同步所有告警事件的时间戳都会乱掉和饲养员手机端复核对照时根本对不上。我们在每台边缘设备上设置了定时时间同步任务每周检查一次所有设备的时间偏差这个小操作避免了大量莫名其妙的“数据对不上”问题。行为监测另一个常见误区是忽视猪只个体识别精度。很多人以为只要框住一头猪就算认出它了实际上栏舍内猪只互相遮挡是常态单帧出现一个框不代表模型知道它是哪一头。在行为节律分析中如果ID频繁切换采食时长统计一定是乱的。有条件的话可以在猪只耳朵加装RFID标签用视觉和RFID结合的方式校正ID这个方案我们验证过节律数据质量提升明显。最后需要注意逻辑架构上的一个问题多路视频并发推理时边缘设备的内存带宽容易被占满。虽然每路视频的推理占用计算资源不高但多路视频的编解码会抢占内存带宽导致整体延迟飙升。我们的解决方法是降低非关键路视频流的分辨率优先保障重点栏舍的画质不要全场统一用同样的码流参数。写在最后这套系统给我的几条真实体会项目推进到现在我对智慧养殖这件事有了更具体的认知。以前总觉得算法是项目的核心做了几期数据集后才发现数据质量和现场工程细节才决定系统的存活率。一个精心调优的行为识别模型如果摄像头角度没有覆盖到猪只活动的核心区域效果甚至不如一个普通模型配一个好机位。我特别想分享的一点是不要试图用系统一次性解决所有问题。我们最早规划时把“自动生成生产报表”“自动调节环控设备”“自动识别病猪并精准保健”都写进了方案实际情况是每加一个自动决策环节现场的不确定性就成倍上升。最后我们砍掉了大部分自动控制只保留识别和告警把决策权交回给饲养员。系统越专注现场越愿意用工具的价值反而更大。数据集的持续编号和积累是这套模型真正能干活的基本盘。第10542期只是中间一站它验证了一个朴素的事实模型是有记忆的。每一期数据都在帮系统更懂这个猪场的具体环境包括哪个栏杆反光、哪个时间段阳光会直射摄像头、哪栋栏舍的管道阴影会干扰识别。这些琐碎细节写不进算法论文但它们恰恰是智慧养殖落地的真实细节。如果你也要做类似项目请一定把数据集管理放到和算法调优同样的位置并预留足够的时间让现场人员参与反馈闭环。少追求一点“炫”多解决一点“稳”项目才能跑得久。