恒美微站
首页
关于我们
建站服务
主题模板
案例展示
资讯中心
联系我们
养殖场猪牛羊计数与出栏识别系统落地全复盘
首页
资讯中心
/
养殖场猪牛羊计数与出栏识别系统落地全复盘
养殖场猪牛羊计数与出栏识别系统落地全复盘
发布时间:2026/10/19 9:53:49
干养殖的朋友应该都有过这种体验傍晚赶羊入圈喊上饲养员一起数数两遍数字不一样第三遍终于数清了但天也黑了。养猪场更夸张几百头育肥猪挤在大栏里人工清点基本靠分组哄赶一个上午进去几个人猪受惊吓不说数字也经常对不上。牛虽然个头大数起来相对容易但要判断哪头牛到了该出栏的体重、哪头牛长得慢光靠眼睛也能看可一千头牛你怎么排优先级这套“养殖场猪牛羊计数出栏识别统计系统”核心就干一件事用摄像头和图像识别把养殖场的盘点、计数、出栏判断变成自动化。系统要能识别猪、牛、羊三种牲畜统计存栏数量并针对接近出栏体重、生长异常的个体做标记。整个过程不依赖人工入场猪牛羊不用被轰来赶去场长在办公室打开手机或者电脑就能看到实时存栏和出栏建议。写这篇文章是想把我在一个模拟项目上的完整落地过程做个复盘。主要包括现场怎么布摄像头、算法选型怎么定、猪牛羊三个畜种各自怎么调优以及实测阶段遇到的各种丢帧、漏检、重复计数问题。准备上这套系统的朋友可以参考一下自己搞算法研究的也能看看真实养殖场景和公开数据集到底差在哪。1. 人工盘点到底错在哪一个被低估的养殖场痛点1.1 在五百头猪的圈舍里人工数数为什么会崩很多人没进过育肥猪大栏不知道里面是什么状态。五百头七八十公斤的猪散在几百平方米的栏里料槽一响全部挤过来黑压压一片头尾交错。这时候你让两个人站在栏边数数一个人数左边一个人数右边不出十秒就会乱。猪在走动视角在变刚数过的猪又跑到另一侧结果就是重复计数、漏计数同时发生。我们当时在试点猪场做过一次对照测试三个人分别用计数器独立清点同一个栏三次结果最大差了四十七头。牛相对好数因为牛的行动慢、个体差异大但牛的盘点问题出在“绕圈看耳标”上。栏里的牛卧着的时候头都朝外你得走进栏里挨个看耳标这对人和牛都不安全。而且牛的体型评估靠目测同一头牛上午看偏瘦下午看偏肥不同饲养员的判断差异非常大。羊的问题又是另一种羊群密集、毛色接近、移动速度不算慢尤其是小羊羔一旦混进羊群人工根本无法逐只识别。这些痛点看起来只是“数数不准”实际影响的是钱。存栏数量是养殖场资产盘点的核心指标银行评估、保险理赔、饲料采购、出栏计划全依赖它。数字不对后面所有决策都建立在错误的基础上。1.2 出栏决策靠“感觉”背后的成本漏洞比数数更隐蔽的问题是出栏时机的判断。大多数中小养殖场怎么决定卖猪靠经验看看猪屁股圆不圆摸一下背膘觉得“差不多了”就联系贩子。这套做法有三个漏洞。一是错过最佳出栏窗口育肥猪超过最佳体重后料肉比会明显升高每多养一天就多赔一天饲料钱但人眼看不出那个临界点。二是大小不均同一批猪出栏时体重能差二十公斤贩子按体型压价小个头的猪拖低了整批均价。三是缺乏记录哪头猪长得慢、哪头猪生病后掉膘了这些信息全靠饲养员脑子里记人一走就断档。牛和羊的出栏判断更复杂。牛的出栏标准里有个体况评分BCS从1到5分评分需要观察牛的脊柱、肋骨、尾根附近的脂肪覆盖情况人工打分的主观性很强。羊的出栏则更多依赖体重分层育肥羊到了月龄体重是否达到标准需要逐只过秤这项工作在规模养殖场里非常消耗人力。所以这套系统真正解决的不是“数数”本身而是把“数数”和“出栏判断”这两件事从人肉感知变成数据感知。摄像头放在那里每天自动过一遍存栏数、个体档案、体重推算、出栏建议都有依据。接下来我讲一下具体怎么搭。2. 从摄像头到报表系统的整体链路怎么搭2.1 视频采集点位设计与选型先说摄像头。很多做AI落地的人容易忽略一个问题算法再强摄像头没装好一切都白搭。养殖场环境特殊粉尘大、湿度高、光照不匀摄像头选型和安装位置直接决定识别效果。我在项目里用的方案是每个圈舍安装一到两台网络摄像头800万像素4mm到6mm定焦镜头支持宽动态和红外夜视。安装高度离地三米五以上镜头向下倾斜约三十度到四十五度。这个角度是反复试出来的——如果正上方垂直俯拍动物之间互相遮挡最严重只有背部的圆点检测模型根本分不清头尾如果角度太平又会被栏舍的隔墙挡住视线只能看到靠近镜头一侧的动物。安装点位要避免两个坑一是避免正对大门和窗户强烈的逆光会让画面惨白晚间的灯光也会造成镜头发雾二是避免低角度近距安装猪用鼻子拱镜头、牛用头蹭支架这种事真会发生机器被撞歪角度之后识别精度直线下降。有条件的话给摄像头加个防护罩定期清灰镜头脏污是影响识别率的最小但最常见的问题。另外需要提醒的是不要迷信“高清越高越好”。在边缘设备的算力约束下我们通常把画面压缩成1080P甚至720P再送进算法太高的分辨率反而拖慢处理速度。摄像头的核心价值是动态范围和夜视能力而不是纯粹的分辨率。实测中光线均匀、画面干净比像素高重要得多。2.2 推理设备的性能边界推理设备的选择要结合部署规模来定。我在模拟项目里先做的是单场单棚验证用的是一台国产边缘计算盒子标称算力8TOPS。后面扩展到多棚多路就换成了带独立显卡的工控机。这里有个实际经验边缘盒子虽然便宜但扩展性差一旦你要同时处理四路以上视频流最好还是用GPU方案。部署算力之前要先把算法参数量定下来。我的做法是先用轻量级模型在单路1080P视频上实测抽帧送入模型做推理单帧处理时间控制在40到60毫秒之间边缘盒子能稳定跑起来同样的模型放到GPU上单帧处理能压到10毫秒以内可以多路并发。如果连轻量级模型在边缘盒子上都跑不动那就只能降分辨率或者降抽帧率但这会影响跟踪算法的效果需要通盘考虑。推荐一个基本配置逻辑单棚单路用边缘盒子预计成本低、功耗小两到三个棚共用一个盒子问题不大超过四个棚直接上工控机或服务器。整个系统要设计成局域网内运行摄像头、推理设备、数据服务器都在本地通过交换机连接不依赖公网这样养殖场断网的极端情况下系统依然能工作。2.3 数据从视频流到存栏记录的处理管线系统的数据链路可以用一句话概括视频流进来经过抽帧、检测、跟踪、统计四个步骤最终生成一条存栏记录。我分开讲一下每一步的工程细节。第一步是拉流。摄像头一般通过RTSP协议输出视频流我们用一个轻量级的拉流服务把摄像头的视频流接入到推理设备。这里有个容易踩的坑RTSP长连接在养殖场局域网里偶尔会断流需要用看门狗机制定时探测连接状态断了自动重连。第二步是抽帧。视频流是25帧每秒全部送进模型不现实也没必要。我的经验是每秒抽两到五帧动物在栏内移动速度不快五帧足够覆盖运动变化。抽帧后做缩放、归一化再送进检测模型。第三步是检测加跟踪。这是整个系统的核心我在下一章详细讲算法选型。简单来说检测模型每帧输出一批动物框跟踪模型把这些框关联成一条条轨迹这样系统就知道画面里同一头动物出现了多长时间、移动了多远。第四步是统计。统计模块分两层实时统计和时段统计。实时统计显示“当前栏内有多少头”时段统计记录“从早上到现在的最大存栏数、最小存栏数、进出栏记录”。这些数据最终写入本地数据库再通过一个简单的网页看板展示出来场长打开手机就能看到。3. 核心算法的选型与落地检测、跟踪、识别三件套3.1 检测模型从YOLOv5到YOLOv8再到RT-DETR怎么挑检测算法这方面我实际用过的方案有三个YOLOv5s、YOLOv8n和RT-DETR。先说结论对于这个项目YOLOv8n是我最终的选择。YOLOv5s的生态成熟网上资料多部署方便但训练出来的模型在动物高密度遮挡场景下小目标的召回率不够理想。育肥猪大栏场景里很多猪在画面中占比很小YOLOv5s容易漏检边上被压住半边的猪。YOLOv8n在检测头结构上做了改进小目标检测能力更好模型体积也更小用TensorRT加速后推理速度在同级别设备上比YOLOv5s快约百分之二十。RT-DETR是另一条路线基于Transformer的检测器精度上限高但计算量大得多。我在项目里试过一次在GPU上跑效果确实好但部署到边缘设备后速度不达标最后还是放弃了。所以建议是以你的推理设备为准先在设备上实测推理时间再决定用哪种模型别只看论文里的mAP数据。还有一个容易被忽略的点检测类别数不要设置太多。有的团队一上来就想让模型同时识别“猪、牛、羊、人、饲料槽、饮水器”类别越多模型越难收敛。我的做法是只设置“pig、cow、sheep、person”四个类别槽位、水碗这些场景要素用固定区域的逻辑去判断不需要模型来识别。3.2 计数不靠“数框”靠轨迹跟踪如果只是把检测框数一数画面里有几个框就报数字几那系统在无人无遮挡的理想画面里还能用一到真实场景就彻底崩了。猪一走动猪与猪之间的遮挡关系变化检测框会频繁丢失、分裂、合并直接数框会和实际数量差出一大截。正确的做法是检测加跟踪。我给项目用的是ByteTrack跟踪算法它是目前性价比比较高的方案。ByteTrack的一个关键是它不会因为检测框分数低就立刻丢弃而是用两阶段匹配策略把高质量框和低质量框分开处理。动物在遮挡后短暂离开再出现算法依然能把轨迹接上不容易把同一头猪当成两头。具体落地时我会把跟踪结果和区域计数逻辑结合起来。系统里预先画好每个栏舍的虚拟区域当一头动物的轨迹在区域内持续出现超过三秒就判定它在栏内加入存栏统计。这个“三秒”阈值不是随便拍的太短会把过路的牛也算进去太长又会在动物快速走动时漏报。不同畜种需要单独调猪我用的两秒牛羊用三秒因为牛和羊在栏内的活动节奏不一样。还有一个细节轨迹管理要设置超时清理。动物长时间静止时比如睡觉跟踪器不会产生新的检测框旧轨迹还在内存里如果一直不清理会导致内存膨胀、跟踪器卡顿。我设置了六十秒无更新的轨迹自动清空等动物再次站起来时重新识别。3.3 个体识别耳标识别与外观ID怎么结合计数解决了“有多少头”出栏判断还需要知道“是哪一头”。这里有两个方案各有适用场景。方案一是电子耳标加读写器。每个动物佩戴电子耳标低频或超高频在出栏通道、称重台等关键位置安装读写器动物经过就自动识别。这个方案精度极高但成本也不低还要给动物逐个佩戴耳标适用于每头牲畜价值较高的牛场。方案二是视觉识别。在栏舍通道上方装摄像头对经过的动物拍摄背部、侧面的照片通过颜色耳标、身体花纹、体尺特征做个体匹配。经过通道的牛通常十几秒内就能完成识别不需要触碰动物识别准确率能到百分之九十以上。我在实际项目里采用的是混合方案猪和牛用视觉识别加电子耳标联动羊因为群体数量大、个体经济价值低只做数量分层统计不追求逐只识别。具体做法是摄像头识别出动物经过通道的时间戳和位置读写器记录耳标ID两边数据按时间窗口做关联得到“哪个个体在什么时间经过了哪个位置”。这样既拿到了个体身份又有了体态特征的时间序列之后做体重估算和出栏评分就都有了数据基础。4. 实测中踩过的坑遮挡、光照、粪泥与出栏判断4.1 漏检与重复计数的根源这个系统上线之后我们遇到的第一个大问题就是漏检。第一天试运行系统报的存栏数和人工清点对不上猪少报了十几头。后来我调出原始视频一帧一帧看发现漏检大多发生在猪睡觉的时段。猪睡觉时一只压着一只叠成一堆检测模型只能看到最上面几头下面的猪完全被挡住了。这个问题靠算法本身解决不了必须从统计逻辑上绕过去。我的处理办法是把统计时间维度拉长不要求每一帧都数全。系统每小时做一次“可信度评分”如果一个小时内检测到的最大数量持续出现超过十分钟就认定这个数量接近真实存栏数。换句话说系统不跟人工清点抢“某一瞬间准确”而是用长时间数据找“趋于稳定的最大值”。这个方法在猪栏里效果很好实测和人工清点的误差能控制在百分之三以内。重复计数的根源则出在相邻栏舍之间。动物的轨迹在跨栏边界时会断裂再接续如果两个栏的虚拟区域重叠同一头猪就会被算两次。解决方法是把虚拟区域边界往栏舍中心收一点留出缓冲带边界处的动物不计入任何一栏等它进入某一栏内部之后再计数。4.2 出栏体重估算的工程化做法出栏判断最核心的指标是体重但视觉系统不能直接称重必须做估算。我的方案是通过目标检测得到的动物轮廓提取体长、肩宽、体高三个维度的像素尺寸再结合摄像头安装在固定高度、固定角度获得的比例尺信息把像素尺寸换算成实际物理尺寸最后用体尺到体重的回归模型算出预估值。这里有一个关键点摄像头角度不同同样的猪在画面里的体长差异很大。所以安装摄像头时要尽量固定角度并且在校准时记录标准参照物。我在试点棚里放了一根已知长度一米的标杆用它在画面中的像素长度来实地标定比例尺。做完标定之后体重估算误差稳定在±8%以内。对于出栏决策来说这个精度已经够用了。牛的体重估算更倾向于用体况评分加体尺双重判断。牛的体重基数大百分之八的误差可能就是三四十公斤所以不能只靠视觉数据做单一判断。系统会结合电子耳标的历史体重记录比如地磅数据做趋势修正把视觉估算的结果和称重历史做一个加权融合输出一个“综合出栏评分”。这个评分在牛场现场验证时和资深饲养员的人工判断一致性达到了八成以上。4.3 夜间与强逆光场景的处理养殖场是全天候作业场景夜间没有光照时普通摄像头根本看不清动物。这个问题必须在选型阶段就解决。我用的摄像头支持红外夜视在零照度环境下自动切换红外模式。但红外模式有一个副作用画面变成黑白且整体对比度偏低对检测模型的性能有影响。为了应对夜间场景我做了两件事。一是给红外图像单独准备一套训练数据把白天和晚上的画面分开标注分别训练或者做数据增强混合进模型确保模型见过红外光照下的动物形态。二是合理布置辅助补光。养殖场牛羊舍通常有照明灯但灯光在画面里会造成局部过曝不如用红外补光灯来得均匀。实测下来红外灯加红外摄像头在夜间的检测准确率能接近白天画面的九成。强逆光则主要影响出入口和过道。牛舍的大门朝南晴天上午逆光严重动物进出时画面发白。我的应对方案是调整安装位置让摄像头镜头尽量与光照方向垂直同时在软件上开启宽动态模式压低亮部、提亮暗部。这个物理位置的选择比后期调参数有效得多布点的时候务必到现场多看几个时间段的光照情况。4.4 维护节奏与模型更新的经验模型上线不是终点日常维护才是大头。养殖场环境对设备的侵蚀比想象中严重粉尘、氨气、水汽会附着在镜头表面导致画面模糊。我要求场内人员每两周清洁一次镜头同时每次清洁后用标准参照物拍一段视频用于校验模型的标定状态。有几次报警显示“存栏异常”最后查下来不是算法问题是镜头脏了导致检测框漂移。模型的迭代更新也要有节奏。新入栏的一批猪体型和毛色可能和之前的批次不同如果模型是老数据训练的初期会出现掉精度的情况。我的做法是每周导出一次“低置信度检测样本”安排标注人员补标每两周做一次增量训练把新样本融入模型。一轮下来模型的泛化能力会越来越贴合这个场的实际环境。5. 给猪牛羊分别定制不同畜种的算法调优记录5.1 猪高密度、强遮挡、运动快的处理猪是三个畜种里算法挑战最大的。育肥猪大栏的密度极高一平方米一头都很常见猪的活动也很剧烈抢食的时候整个栏里的猪都在快速移动。这种场景下检测模型的小目标召回率要专门强化。我的做法是在训练数据里刻意增加“被遮挡猪只”的标注让模型学习到“只露半边身体也算一头猪”的特征。跟踪层面猪的轨迹破碎问题严重。一头猪从栏的一端冲到另一端可能只要几秒钟在抽帧率较低的情况下轨迹会断裂。除了提高抽帧率我还调整了跟踪器的阈值参数允许更大距离的轨迹匹配让快速移动的猪也不容易跟丢。猪的体重估算也依赖运动状态判断只有猪处于站立、侧向面对镜头姿态时才提取体尺趴着或蜷缩时不做估算避免误差。5.2 牛个体大、拍摄角度受限、耳标占比小的解法牛的问题和猪相反目标大、个体少但是拍摄角度很受限。牛舍的栏位结构复杂很多区域无法获得干净的俯拍视角而且牛的耳标在耳朵上大部分时间里耳标是被遮挡的状态。直接用视觉算法识别牛个体难度比预想中大得多。工程化的解法是把“牛的识别”拆成两个环节。第一个环节是身体特征识别牛的毛色斑点、角型、面部特征相对独特用视觉模型做粗匹配第二个环节是电子耳标的点状确认在通道和采食区布置读写器当牛经过时准确读取耳标ID。粗匹配加上点状确认两个信息融合就能准确到个体。实际测试下来单靠视觉做个体匹配的准确率是百分之七十五左右叠加读写器后能达到百分之九十八。另外牛体的体尺估算要考虑牛的角度。牛站立时从侧面可以看到完整体躯但很多时候摄像头拍到的是牛背体长数据提取不出来。我的做法是在牛舍的采食通道上方专门布一台侧向视角摄像头牛低头采食的时候正好把侧面身体完整暴露出来这是最理想的体尺采集时机。5.3 羊群体密集、毛色相近、快速移动的处理羊是这套系统里个体识别最弱、但数量统计最急迫的畜种。羊群的毛色高度一致个体之间几乎没有外观差异视觉识别很难逐只分辨。但在实际养殖中羊出栏通常按批次、按体重分层处理并不需要精确到每一只的个体档案所以我把重点放在“分群计数”和“体重分布估算”上。分群计数主要用在羊的转群和出栏环节。通道只允许单只羊依次通过时系统对经过的羊逐只计数准确率能到百分之九十七以上。放在大栏内做存栏统计时羊群的拥挤程度和移动速度会影响计数稳定性。方案是增加抽帧频率以及用“多帧投票”的方式去掉瞬时抖动误差。体重分布估算对羊来说更有实用价值。羊在通过耳标识别通道时侧向摄像头记录体高和体宽结合称重地磅的历史数据建立回归模型估算每只羊的体重区间。这样一来场长在出栏前就能看到“这批次羊有多少只超过四十公斤、多少只在三十五到四十公斤之间”分层卖货价格自然更理想。6. 这套系统到底值不值投入产出与下一步扩展6.1 硬件与开发成本估算先说钱的事。一套覆盖三四个圈舍的最小规模系统包括摄像头、边缘计算设备、交换机、硬盘录像机、安装辅材硬件成本大概在几万元量级。如果只做一个圈的验证投入可以压到更低如果扩展到几十个圈舍并上GPU服务器硬件成本会到几十万元。开发成本则取决于你是自己写算法还是找方案商自己写主要花时间找方案商则是按点位数和功能收项目费。这里给一个直白的建议头一次做先在一个圈舍跑通别一上来就全场铺开。一个圈的设备成本和调试成本都是可控的等算法在这个场的环境下稳定了再按同样的配置复制到其它圈舍。复制过程中你会发现硬件部署越来越快真正花时间的是每个圈舍的光照、视角和栏舍结构调整。从投入产出比来看这套系统最大的价值不是省了几个数数的工人而是减少了出栏决策误差。按一个五百头规模的育肥场计算如果把出栏体重控制的偏差从百分之八缩小到百分之三每头猪的饲料和售价差异带来的收益提升通常足以覆盖整套系统的年化成本。6.2 场长最关心的报表和出栏建议怎么给系统做出来不是给算法看的是给场长看的。所以界面和数据展示必须贴近养殖场的习惯。我在项目里设计了三张核心报表。第一张是存栏日报表按圈舍列出当前存栏数、较昨日变化、进出栏记录。数字异常时用醒目标记提醒比如某栏存栏突然少了十头系统会提示“该栏可能存在逃逸或计数异常请人工核查”。第二张是个体出栏建议表按各圈的个体体重估算和生长趋势排序标出“建议本周出栏”“继续育肥”“生长异常需复检”。第三张是体重分布直方图让场长一眼看出整批牲畜的体重集中区间方便跟收购方谈价格。报表的推送方式也要实用。可以定时推送到微信小程序或者网页端关键异常用短信提醒。我在项目里遇到一个有意思的情况场长对看板上的曲线图兴趣不大反而对“哪头牛今天应不应该出栏”这个结论文档特别在意。这说明农业场景的AI产品结果要比过程更重要。6.3 后续可扩展的方向这套系统的数据底座如果建好了后续可以往三个方向扩展。第一个方向是饲喂联动存栏数和体重估算结果接进自动饲喂系统实现分栏、分体重精准投料降低料肉比。第二个方向是疫病预警通过跟踪轨迹和活跃度分析发现某头动物长时间不进食、不运动提前预警异常状态。第三个方向是资产盘点把存栏数据接入养殖场的财务和保险系统每月自动生成资产报告。另外值得一提的方向是出栏通道的自动化改造。目前识别统计还是以观察为主如果加上自动称重和分级分拣设备识别结果可以直接驱动机械臂和分栏门实现从出栏判断到分栏操作的全自动流水线。这个方向的硬件投入会比较大但一旦跑通规模养殖场的周转效率会有明显提升。最后说一点我的个人体会农业场景的视觉识别难点从来不在模型结构而在对现场环境的深刻理解。种猪睡成一堆、牛背上的泥巴、凌晨四点的圈舍灯光这些才是决定系统能不能用的关键。做这套系统的过程里我有一半时间不是在调参而是在棚里看动物怎么活动、光线怎么变化。先当好半个养殖员才能写出真正能落地的算法。