
养猪业是中国畜牧业的支柱产业,2025年全国生猪出栏量超过7亿头,规模化养殖比例已突破65%。在万头级别的规模化猪场里,一栋猪舍可能饲养500-1000头猪,而一名饲养员通常需要管理2-3栋猪舍,人均照看数千头猪。传统的猪只行为监测完全依赖人工巡视------饲养员每天定时进入猪舍,用肉眼观察猪只的进食、休息、活动状况,发现异常再记录上报。这种模式存在三大根本性痛点:
**第一,覆盖不全、漏检率高。**人工巡视每天只能进行3-4次,每次每栋猪舍停留10-15分钟,95%以上的时间猪只处于无人监控状态。很多异常行为(如夜间发病、短暂攻击、采食下降)发生在巡视间隙,等到饲养员发现时往往已经错过了最佳干预时机。研究表明,人工观察对猪只异常行为的漏检率高达40-60%,尤其是亚临床症状(食欲减退、活动量下降、社交隔离)几乎无法通过肉眼及时发现。
**第二,主观性强、标准不一。**不同饲养员的经验和判断标准差异很大------同样是"猪只精神不振",经验丰富的饲养员可能判断为早期疾病征兆,新手可能认为是正常休息。行为观察缺乏量化指标,"活动量减少""采食下降"都靠主观感觉,无法形成可追溯、可比较的数据记录。这导致猪场管理决策依赖个人经验,难以标准化和规模化复制。
**第三,劳动强度大、人力成本高。**猪舍环境恶劣(氨气浓度高、粉尘大、温差大),人工巡视对饲养员的健康有损害;万头猪场需要数十名饲养员24小时轮班,人力成本占养殖总成本的15-20%。随着农村劳动力减少和人力成本上升,"有人养、没人看"的矛盾日益突出,猪场对自动化、智能化监测的需求极为迫切。
猪只行为是健康和福利状态的"晴雨表"。动物行为学研究表明,猪只的进食量、休息时长、活动水平、社交互动、嗅探频率、走动轨迹等行为参数,与健康状况高度相关------发热疾病会导致活动量下降30-50%、采食减少;消化道疾病会引起饮水增加、排便异常;呼吸道疾病会导致休息姿势改变(犬坐式呼吸);应激或疼痛会引发异常行为(咬尾、拱栏、空嚼);发情期母猪会出现站立反射、频繁走动、嗅探其他猪只;分娩前母猪会表现出筑巢行为、频繁起卧。因此,连续、客观、量化地监测猪只行为,是实现疫病早期预警、精准饲喂、福利评估、繁育管理的核心基础。
计算机视觉技术的成熟为猪只行为自动监测提供了可行的技术路径。通过在猪舍顶部安装高清摄像头,配合深度学习目标检测(YOLO系列)、多目标跟踪(DeepSORT/OC-SORT)、时序行为识别(SlowFast/TSM/ST-GCN)、姿态估计(YOLO-Pose)等算法,可以实现7×24小时不间断、无接触、不干扰猪只正常生活的行为自动监测------系统自动识别每头猪的个体身份,实时分类其当前行为(进食、休息、活动、社交、嗅探、走动等),统计行为时间占比和节律变化,发现异常行为立即预警。这不仅将人工漏检率从40-60%降低到5%以下,还能提供人工无法获取的量化行为数据(如每头猪每天的精确采食时长、活动距离、社交频次),为猪场精细化管理提供数据支撑。
本文将从系统架构、图像采集、检测跟踪、行为识别、时序分析、代码实现、工程落地、产品对比、应用场景、挑战趋势等维度,系统阐述基于计算机视觉的猪只行为实时监测技术方案,覆盖从算法原理到生产落地的完整链路,为智慧养猪从业者、计算机视觉工程师、畜牧设备厂商提供可参考的实战指南。
一、系统整体架构
猪只行为实时AI监测系统采用六层模块化架构,从底层感知到上层应用形成完整的技术闭环。每一层职责明确、接口标准化,可根据猪场规模和预算灵活配置(从单栋试点到万头场全域部署)。

猪只行为AI监测系统六层技术架构流程图:感知层→检测跟踪层→行为识别层→分析预警层→数据管理层→应用层
|-----------|---------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------|
| 层级 | 核心职责 | 关键技术/模块 | 输入→输出 |
| 感知层 | 猪舍环境与猪只图像/视频采集,多模态数据同步 | 高清工业相机(200-800万像素,30fps,全局快门,IP66/IP67防护)、鱼眼/广角镜头(单摄像头覆盖整栏)、红外补光灯(夜间无红曝)、深度相机(结构光/ToF,测量猪只体高/姿态)、红外热成像(体温监测)、智能耳标(个体身份+加速度+体温,可选)、环境传感器(温湿度/氨气/二氧化碳) | 视频流(RGB/深度/红外)+传感器数据→原始帧+时间戳+环境参数 |
| 检测跟踪层 | 猪只目标检测、个体跟踪与身份识别,为行为识别提供个体级时序数据 | 目标检测(YOLOv8n/v11n改进版,mAP 90%+,针对猪只遮挡/扎堆/光照变化优化)、实例分割(YOLO-seg/FastSAM,提取猪只精确轮廓用于姿态和体况分析)、多目标跟踪(OC-SORT/DeepSORT/BYTETrack,解决遮挡ID切换问题,跟踪MOTA 80%+)、个体ReID(基于外观特征的猪只身份重识别,跨摄像头/长时间跟踪)、姿态估计(YOLO-Pose/ST-GCN,提取猪只关键骨骼点:头部/肩部/背部/臀部/四肢/尾巴) | 原始帧→每头猪的边界框+掩码+个体ID+骨骼关键点+轨迹 |
| 行为识别层 | 基于个体时序数据识别六大核心行为及扩展行为 | 六大核心行为分类(进食/休息/活动/社交/嗅探/走动)、扩展行为(饮水/排尿/排便/攻击/爬跨/哺乳/发情/分娩/犬坐/咳嗽)、算法路线:①检测+分类(单帧行为分类,ResNet/EfficientNet)②时序建模(SlowFast/TSM/VideoSwin,利用时间上下文)③骨架姿态(ST-GCN/BCST-GCN,基于骨骼点时空图卷积)④多模态融合(视觉+音频+耳标加速度,AVSlowFast/FE-TSM)、行为定义与标注规范(每类行为的起止判定标准、持续时间阈值) | 个体轨迹+骨骼时序→每头猪每秒的行为标签+置信度 |
| 分析预警层 | 行为时序统计、节律分析、异常检测与健康预警 | 行为时间占比统计(每头猪/每栏/每天各行为时长和比例)、行为节律分析(24小时活动曲线、采食高峰、休息周期、昼夜节律)、个体行为基线建立(每头猪的正常行为模式,自适应学习)、异常行为检测(基于统计阈值/孤立森林/自编码器/LSTM预测误差,检测采食下降/活动骤减/社交隔离/异常攻击/长时间不动)、健康预警分级(观察/关注/预警/紧急四级,关联疫病知识库)、群体行为分析(栏舍级活动量同步性、扎堆指数、攻击事件统计) | 行为标签时序→行为统计报表+节律曲线+异常事件+预警通知 |
| 数据管理层 | 行为数据存储、个体档案、模型训练与版本管理 | 时序数据库(InfluxDB/TDengine,存储每秒级行为数据,支持高并发写入和快速查询)、关系数据库(MySQL/PostgreSQL,存储个体档案、猪舍信息、预警记录)、对象存储(MinIO/OSS,存储原始视频片段、关键帧、标注数据)、个体档案管理(每头猪的出生日期/品种/体重/免疫记录/繁育状态/历史行为数据)、数据标注平台(CVAT/LabelImg,行为数据标注与模型迭代)、模型训练与版本管理(MLflow/DVC,数据集版本、模型版本、训练实验追踪)、数据安全与隐私(猪只数据加密存储、访问权限控制、符合数据安全法) | 行为数据+预警+视频→结构化数据库+个体档案+可查询报表 |
| 应用层 | 面向猪场管理者、饲养员、兽医的可视化应用与业务集成 | 猪场管理大屏(实时监控画面+行为统计+预警列表+环境参数)、移动端APP/小程序(饲养员接收预警、查看个体档案、记录处理结果)、精准饲喂系统集成(根据采食行为数据自动调整饲喂量和配方)、疫病防控系统(异常行为预警联动兽医巡栏、隔离、用药记录)、繁育管理系统(发情行为检测自动提示配种、分娩行为预警接产)、福利评估系统(行为丰富度/活动空间/社交互动评分,满足动物福利认证要求)、经营分析报表(出栏预测、饲料转化率、死亡率、生产性能分析)、API开放接口(与猪场现有管理系统/物联网平台对接) | 数据+预警→可视化界面+业务联动+决策支持 |
系统架构的六大设计特点:
① 感知 - 认知 - 决策 - **数据闭环。**从摄像头采集原始视频,到检测跟踪识别个体和行为,到分析预警发现异常,到数据存储驱动模型迭代和管理决策,形成完整闭环。系统不是一次性的检测工具,而是持续学习、持续优化的智能系统------积累的行为数据越多,个体基线越准确,异常检测越精准。
② **多模态融合感知。**系统不局限于单一RGB视觉,支持深度相机(体高/姿态/体重估算)、红外热成像(体温/发热检测)、智能耳标(个体身份/加速度/体温)、环境传感器(温湿度/氨气)等多模态数据融合。不同模态互补------视觉在光照充足、无遮挡时精度高,耳标加速度在遮挡/夜间时仍能监测活动,红外热成像可直接检测体温异常,多模态融合显著提升复杂环境下的鲁棒性。
③ 传统算法 + 深度学习 + **时序模型三级混合。**行为识别不是单一模型,而是三级混合架构:传统计算机视觉(背景减除/光流/轮廓分析)用于快速活动量估算和简单行为初判;深度学习(YOLO检测/分割/姿态)用于精确的个体定位和姿态提取;时序模型(SlowFast/ST-GCN/LSTM)用于利用时间上下文识别复杂行为(如进食vs嗅探、休息vs生病不动)。三级混合兼顾精度、效率和可解释性。
④ **个体级精细化监测。**系统的核心是"个体级"而非"群体级"------通过多目标跟踪和ReID,系统能区分栏舍内的每一头猪,建立每头猪的独立行为档案和健康基线。这意味着系统可以发现"某一头猪采食下降"而不仅仅是"这一栏猪采食下降",实现精准到个体的早期疫病预警和个性化管理,这是群体级监测无法做到的。
⑤ **实时性与可扩展性平衡。**系统采用边缘计算+云端协同架构------猪舍端边缘AI盒子实时处理视频流(检测/跟踪/行为识别/本地预警),延迟小于200ms,不依赖网络;云端负责数据存储、统计分析、模型训练和跨场管理。系统支持从单栋猪舍(1个边缘盒子+4-8个摄像头)到万头猪场(数十个边缘盒子+数百个摄像头)的线性扩展,新增猪舍只需增加边缘节点,不影响现有系统运行。
⑥ **无接触、低干扰、动物友好。**系统完全基于视觉和非接触式传感器,不需要给猪只佩戴设备(耳标为可选),不干扰猪只的正常生活和自然行为,避免了可穿戴设备可能引起的应激和设备损坏。摄像头安装在猪舍顶部,猪只无法触碰,维护周期长,适合长期连续监测。
二、猪舍图像采集方案
图像采集是整个系统的基础,猪舍环境的特殊性(光照变化大、粉尘多、氨气重、猪只扎堆遮挡、夜间需要监测)对采集设备和部署方案提出了特殊要求。
2.1 摄像头选型
猪舍摄像头选型需要综合考虑分辨率、帧率、快门类型、防护等级、低光性能、镜头焦距等因素:
**分辨率:**推荐200-800万像素(1920×1080至3840×2160)。分辨率过低(如100万像素)会导致远处猪只细节模糊,影响行为识别精度;分辨率过高(如1200万以上)会增加传输带宽和计算量,且猪舍场景下边际收益递减。400万像素(2560×1440)是性价比最优的主流选择,单摄像头可覆盖15-25平方米的栏舍,每头猪在画面中占据足够像素用于行为识别。
**帧率:**推荐25-30fps。猪只行为(如走动、攻击、爬跨)的运动速度中等,25fps足以捕捉行为细节;低于15fps会导致快速运动模糊和行为片段丢失。对于需要精细分析的场景(如攻击行为识别、咳嗽检测),可采用60fps高帧率摄像头。
**快门类型:**必须使用全局快门(Global Shutter)而非卷帘快门(Rolling Shutter)。猪只走动时运动速度较快,卷帘快门会产生果冻效应(图像扭曲变形),影响检测和跟踪精度;全局快门逐帧曝光,运动物体无畸变,是运动场景的正确选择。
**防护等级:**必须达到IP66或IP67防护等级。猪舍内粉尘大、湿度高、经常高压水枪冲洗,摄像头必须防尘防水。推荐使用专门的畜牧业监控摄像头(如海康威视/大华的畜牧专用系列),外壳采用不锈钢或防腐塑料,镜头前有可清洁的玻璃保护窗,部分型号自带雨刮/喷水清洁装置。
**低光性能:**猪舍夜间通常只开弱光或完全黑暗(为了不干扰猪只休息节律),摄像头必须具备优秀的低光性能。推荐采用大靶面传感器(1/1.8英寸以上)+大光圈镜头(F1.0-F1.4)+低照度CMOS(如索尼Starvis系列),在0.001-0.01lux照度下仍能输出清晰彩色图像。完全黑暗环境下可配合940nm红外补光灯(无红曝,不干扰猪只睡眠)。
**镜头选型:**根据栏舍面积和安装高度选择镜头焦距。顶部俯拍安装高度通常为2.5-3.5米,栏舍面积15-25平方米,推荐使用2.8-4mm广角镜头(视场角80-110度),单摄像头覆盖整栏。对于大面积栏舍(30平方米以上),可使用鱼眼镜头(180度视场角)或多摄像头拼接。注意广角/鱼眼镜头会产生畸变,需要在预处理阶段做畸变校正。
**接口与传输:**推荐使用RTSP/ONVIF协议的网络摄像头(IPC),通过PoE网线供电和数据传输(一根网线解决供电+视频传输,布线简单)。猪舍环境复杂,网线需要穿管保护,接头做防水处理。对于摄像头数量多的大型猪场,可采用NVR(网络视频录像机)集中管理视频流,再分发给边缘AI盒子处理。
2.2 部署方式与摄像头布局
**安装位置:**摄像头安装在猪舍顶部(天花板/钢梁),垂直俯拍(镜头朝下),这是猪只行为监测的最佳视角------俯拍可以最大程度减少猪只之间的遮挡(每头猪的背部都可见),便于个体检测和跟踪;同时俯拍视角下猪只的位置坐标与实际空间坐标对应关系简单(近似正交投影),便于计算活动距离和轨迹。安装高度2.5-3.5米,确保覆盖整栏且每头猪有足够像素。
单栏单摄 vs **多栏共享:**标准化猪舍通常每栏15-25平方米,饲养10-20头猪,推荐"单栏单摄"------每个栏舍顶部安装一个摄像头,专门监测该栏猪只,视野集中、精度高、计算量可控。对于预算有限的场景,可采用广角/鱼眼摄像头覆盖2-3个相邻栏舍,但需要在算法中做栏舍区域分割(ROI),且边缘栏舍的猪只像素较小、精度下降。
**多摄像头协同:**对于大面积猪舍(如50平方米以上的大栏饲养20-30头猪),单摄像头无法全覆盖或边缘像素不足,可采用2-4个摄像头从不同角度覆盖,通过多目标跟踪+ReID实现跨摄像头的个体连续跟踪。多摄像头布局要注意视野重叠区域(用于个体ID传递)和避免盲区。
侧视 / **斜视补充:**纯俯拍视角对某些行为的识别有局限------如进食行为(俯拍只能看到猪在料槽旁,无法确认头部是否伸入料槽)、犬坐式呼吸(需要侧面视角观察胸部起伏)、爬跨行为(需要侧面视角观察姿态)。因此,在关键区域(料槽旁、饮水器旁、母猪产床)可补充安装侧视/斜视摄像头,与顶部俯拍摄像头形成多视角融合,提升特定行为的识别精度。
**防破坏与防遮挡:**猪只会啃咬、拱顶设备,摄像头必须安装在猪只触碰不到的高度(2.5米以上),并加装金属防护罩。料槽上方和饮水器旁容易被猪只溅起的饲料/水污染镜头,需要定期清洁或加装自动清洁装置(雨刮/喷水/压缩空气吹扫)。
2.3 光照与补光方案
猪舍光照条件复杂且变化大------白天有自然光(窗户)+人工照明,夜间可能全黑或只有应急灯,阴天/晴天/季节变化都会影响光照。稳定的光照是视觉算法稳定工作的前提。
**固定补光:**推荐在每个摄像头旁安装固定补光灯,确保猪舍内光照均匀、稳定,不受外界自然光变化影响。补光灯选择:①白光LED补光灯(色温4000-5000K,显色指数CRI>80)------白天和夜间都使用,提供稳定可见光,适合需要彩色图像和精细行为识别的场景;②940nm红外补光灯------夜间无红曝(猪只看不到940nm红外光,不干扰睡眠),配合红外敏感摄像头在完全黑暗下获取清晰黑白图像,适合夜间监测。实际部署中可采用"白光+红外"双光源,白天用白光(或自然光+白光补偿),夜间自动切换为红外(光感传感器控制)。
**光照均匀性:**补光灯要均匀照射整个栏舍,避免局部过亮(料槽上方反光)或局部过暗(角落)。推荐使用漫射型补光灯(带柔光罩)或多个补光灯从不同角度照射,减少阴影和反光。猪只身体(尤其是白色猪只)对光线反射强,要避免强光直射产生过曝。
**防频闪:**LED补光灯如果驱动质量差会产生频闪(100-120Hz),摄像头拍摄时会出现明暗条纹,影响图像质量。必须使用无频闪LED驱动(高PFC、低纹波),或确保补光灯频率与摄像头帧率不同步(避免拍频效应)。
**光照鲁棒性算法:**即使有固定补光,猪舍光照仍会有变化(如开门通风、猪只遮挡灯光、补光灯老化)。算法层面需要做光照鲁棒性处理:自动曝光/增益(相机根据环境光自动调整)、颜色恒常性(Gray World/White Patch算法校正色偏)、直方图均衡化(增强低光区域细节)、光照归一化(将图像亮度归一化到固定范围,减少光照变化对特征提取的影响)。
2.4 多模态采集
除了RGB摄像头,系统可根据需求集成多种模态传感器,提升监测能力:
**深度相机:**结构光(如Intel RealSense D435i)或ToF(如Azure Kinect/海康深度相机)深度相机可获取猪只的3D深度信息,用于:①猪只体高/体长/体宽测量(估算体重和体况评分BCS);②姿态估计(深度信息辅助区分站立/趴卧/侧卧);③遮挡处理(深度信息区分前后猪只);④活动量估算(3D空间中的位移比2D像素位移更准确)。深度相机的缺点是有效距离有限(通常3-5米)、对光照敏感(结构光在强光下精度下降)、成本较高,适合在关键栏舍(如母猪产床、育肥猪试验栏)部署。
**红外热成像:**红外热像仪(如FLIR Lepton/海康红外模组,分辨率320×256或640×512,测温精度±2℃)可非接触测量猪只体表温度,用于:①发热检测(猪只体温升高是多种疫病的早期症状,红外热成像可在猪只出现明显行为异常前检测到体温升高);②体温节律监测(正常猪只体温有昼夜节律,异常节律提示健康问题);③与行为数据融合(体温升高+活动下降+采食减少=高置信度疫病预警)。红外热成像的成本较高(单模组2000-8000元),适合在猪舍出入口或关键区域部署(如每栏一个红外测温点),而非每头猪持续监测。
**智能耳标:**内置加速度传感器、温度传感器、RFID/NFC的智能耳标可提供个体级的运动和体温数据,用于:①个体身份识别(耳标ID与视觉个体ID关联,解决视觉ReID的长期身份一致性问题);②活动量监测(加速度数据在遮挡/夜间时补充视觉数据);③体温监测(耳标温度近似体温,持续监测);④跨栏舍跟踪(猪只转栏时耳标ID自动传递)。智能耳标的缺点是需要给每头猪佩戴(有应激、有成本、有脱落/损坏风险),电池寿命有限(通常6-12个月),适合在核心群(种猪/母猪)佩戴,商品育肥猪可选择不佩戴。
**环境传感器:**温湿度、氨气(NH3)、二氧化碳(CO2)、硫化氢(H2S)传感器可监测猪舍环境参数,用于:①环境与行为关联分析(如高温导致猪只活动下降、扎堆减少、饮水增加);②环境异常预警(氨气超标自动报警,联动通风系统);③行为异常的环境因素排除(如猪只活动下降可能是因为温度过高而非生病)。环境传感器成本低(每个几百元),建议每栋猪舍安装1-2个。
**音频采集:**猪只的声音(咳嗽、打喷嚏、嚎叫、采食咀嚼声)包含丰富的健康信息。麦克风阵列可采集猪舍音频,通过音频分类模型识别咳嗽(呼吸道疾病早期症状)、异常嚎叫(疼痛/应激/攻击)等。音频与视觉融合可显著提升疫病早期预警能力------研究表明,基于音频的猪咳嗽检测准确率可达90%以上,且能在视觉行为异常前1-2天发现呼吸道疾病。音频采集的挑战是猪舍环境噪声大(风机、料线、猪只活动声),需要降噪和声源定位技术。
2.5 图像预处理
原始视频帧在进入检测跟踪算法前,需要进行预处理以提升算法稳定性和精度:
**畸变校正:**广角/鱼眼镜头产生的桶形畸变会导致图像边缘的猪只变形,影响检测和位置计算。使用相机标定(棋盘格标定法获取内参和畸变系数),通过OpenCV的undistort函数做畸变校正,得到无畸变图像。
**去噪与增强:**猪舍低光环境下图像噪声大(高斯噪声/椒盐噪声),使用高斯模糊/中值滤波/非局部均值去噪(NLM)去除噪声。低光区域使用直方图均衡化(CLAHE自适应直方图均衡化)增强细节,但要注意避免放大噪声。
**白平衡与色彩校正:**猪舍不同光源(自然光/白光LED/红外)混合会导致色偏,使用灰度世界算法(Gray World)或完美反射算法(Perfect Reflector)做自动白平衡,将图像颜色归一化到标准光照条件。对于需要精确颜色分析的场景(如皮肤发红/发绀检测),使用标准色卡定期校准相机的色彩响应。
栏舍 ROI **提取:**摄像头视野可能包含栏舍墙壁、走道、料槽、饮水器等非猪只区域,预先定义栏舍ROI(多边形区域),只在ROI内做检测跟踪,减少计算量和误检(如走道上的饲养员不会被检测为猪只)。ROI还可用于定义功能区域------料槽区(进食行为判定)、饮水区(饮水行为判定)、休息区(休息行为判定)、排泄区(排尿排便行为判定),这些功能区域的定义是行为识别的重要上下文信息。
**图像缩放与格式统一:**将原始帧缩放到模型输入尺寸(如YOLOv8n的640×640或1280×1280),注意保持长宽比(letterbox填充)避免拉伸变形。统一图像格式为RGB(OpenCV默认BGR,需转换),像素值归一化到0-1或0-255(根据模型要求)。
**多模态配准与同步:**如果使用RGB+深度+红外多摄像头,需要做空间配准(不同摄像头的像素坐标对齐,通过外参标定实现)和时间同步(不同模态的帧时间戳对齐,使用硬件触发或软件时间戳插值),确保同一时刻同一头猪的RGB、深度、红外数据对应正确。
三、猪只检测与个体跟踪
检测与跟踪是行为识别的基础------系统必须先在每一帧中准确找到每一头猪的位置(检测),然后在连续帧中保持同一头猪的身份一致性(跟踪),才能获得个体级的行为时序数据。猪舍场景的检测跟踪面临三大挑战:①猪只外观相似度高(同品种猪只毛色、体型几乎一样,难以通过外观区分个体);②遮挡严重(猪只扎堆、叠卧、走动时互相遮挡,跟踪器容易丢失目标或ID切换);③光照变化大(昼夜交替、补光切换、粉尘遮挡镜头导致图像质量波动)。
3.1 猪只目标检测
**算法选型:**猪只检测推荐使用YOLO系列的轻量化模型------YOLOv8n或YOLOv11n(参数量2-6M,推理速度快,适合边缘部署),针对猪只场景做改进优化。学术研究中提出了多种针对猪只检测的改进YOLO模型:
①LAD-YOLO(华南农业大学,2025):基于YOLOv8n,在骨干网络引入可变核卷积(AKConv),自适应调整卷积核形状以适应猪只不同姿态;颈部引入轻量级动态蛇形卷积(DSConv)增强弯曲目标(猪只身体呈弧形)的特征提取;检测头引入解耦头和动态标签分配,提升小目标和遮挡猪只的检测精度。在复杂环境(背景相似、光照变化、个体遮挡)下mAP@0.5达到92%以上。
②SR-YOLO(农业工程学报,2025):基于YOLOv8n,引入空间分组增强(SGE)模块增强特征表达,结合特征融合策略提升多尺度猪只检测能力。在群养生猪场景下mAP@0.5达到90.1%,F1值84%,检测速度满足实时要求。
③YOLO-DLHS-P(IEEE,2025):基于YOLOv8n的轻量化猪只行为识别模型,在Backbone引入C2f-DRB结构(大卷积核扩展感受野+动态感受野),增强空间感知能力;颈部引入轻量级特征融合,在保持参数量小的同时提升检测精度。在6类猪行为数据集(坐/躺/站/爬跨/爬行/进食,15983个标注,2222张图像)上实现高精度识别。
④Wavelet-YOLO11(Semantic Scholar,2025):基于YOLO11n,结合空间跨尺度注意力(SCSA)、加权特征融合单元(WFU)和小波变换卷积(WTConv),采用两阶段迁移学习策略,在复杂环境下识别6种核心猪行为(进食/休息/活动及生理代谢相关行为),兼顾轻量化和高精度。
⑤改进YOLOv5s+注意力(PLOS ONE,2025):在YOLOv5s基础上引入注意力机制(CBAM/SE),提升猪只检测和攻击行为识别能力,结合DeepSORT跟踪实现群养猪只的攻击和日常行为检测跟踪。
**数据集构建:**猪只检测模型需要针对目标猪场的场景做迁移学习或微调。通用COCO预训练模型虽然能检测"动物"大类,但对猪只的细粒度检测(尤其是遮挡/扎堆/不同姿态)精度不足。建议采集目标猪场的视频数据,标注1000-5000帧(每帧包含10-20头猪,总计1-10万个猪只实例标注),使用LabelImg/CVAT/Roboflow等工具标注边界框。标注时要注意:①标注被遮挡的猪只(即使只露出部分身体也要标注,这对遮挡场景的检测至关重要);②标注不同姿态(站立/趴卧/侧卧/走动/进食);③覆盖不同光照(白天/夜间/阴天)和不同猪只密度(稀疏/密集)。数据增强策略:Mosaic(四张图拼接,提升小目标和密集场景检测)、MixUp(图像混合,提升鲁棒性)、随机翻转(水平翻转,猪只左右对称)、随机亮度/对比度/色调(模拟光照变化)、随机遮挡(CutOut/Random Erasing,模拟猪只互相遮挡)、马赛克增强。
**训练优化:**①迁移学习:使用COCO预训练权重初始化,冻结骨干网络前10-20轮训练,再解冻全网络微调,加快收敛并提升精度;②类别处理:如果只有"猪"一个类别,训练简单;如果需要同时检测不同类别(如母猪/仔猪/不同品种),注意类别不平衡(仔猪数量少、体型小),使用类别加权损失或过采样;③损失函数:使用CIoU/DIoU边界框损失(比传统IoU更关注重叠面积和中心点距离),Focal Loss处理难易样本不平衡;④输入分辨率:使用640×640或1280×1280输入,高分辨率对小目标(远处猪只/仔猪)检测更有利,但计算量增加;⑤评估指标:mAP@0.5(IoU阈值0.5时的平均精度,目标>90%)、mAP@0.5:0.95(多IoU阈值平均精度,更严格,目标>60%)、精确率(Precision,目标>95%,减少误检)、召回率(Recall,目标>90%,减少漏检)、推理速度(FPS,边缘设备目标>30fps)。
**部署优化:**①模型导出:将PyTorch模型导出为ONNX格式,再转换为TensorRT(NVIDIA GPU/Jetson)或RKNN(瑞芯微NPU)或OpenVINO(Intel CPU)优化格式,推理速度提升2-5倍;②INT8量化:将FP32模型量化为INT8,模型大小减少75%,推理速度提升2-4倍,精度损失通常小于1%(需要用校准数据集做量化感知训练或后训练量化);③模型剪枝:去除冗余通道和层,进一步压缩模型大小和计算量;④推理批处理:边缘设备有多个摄像头时,使用batch推理(同时处理多路视频帧),提升GPU利用率和吞吐量;⑤检测-跟踪联动:不需要每帧都跑检测,使用"检测+跟踪"策略------每N帧(如每5帧)跑一次YOLO检测,中间帧用跟踪器(光流/KCF)预测猪只位置,大幅降低平均计算量(检测只在1/5帧运行),同时保持跟踪连续性。
3.2 实例分割与轮廓提取
边界框检测只能给出猪只的矩形位置,而行为识别和体况分析需要猪只的精确轮廓(分割掩码)。实例分割推荐使用:
YOLO-seg **:**YOLOv8-seg或YOLOv11-seg是检测+分割一体化模型,在YOLO检测头基础上增加分割分支,输出每头猪的边界框+像素级掩码。优点是速度快(与检测几乎同速)、端到端训练,适合实时场景。在猪只场景下,YOLOv8n-seg的mask mAP@0.5可达85%以上。
FastSAM **:**基于SAM(Segment Anything Model)的快速实例分割模型,参数量小(FastSAM-S仅2M参数),推理速度快(比原始SAM快50倍),可以对任意目标做零样本分割。使用时先用YOLO检测出猪只边界框,再用FastSAM在框内做精确分割,获得高质量掩码。FastSAM的优点是不需要针对猪只做分割标注(零样本),缺点是极端遮挡/粘连情况下分割精度可能不如专门训练的YOLO-seg。
Mask R-CNN **:**经典的两阶段实例分割模型,分割精度高(mask mAP比YOLO-seg高3-5%),但速度慢(5-10fps,不适合实时边缘部署),适合离线分析和高精度场景(如体况评分、体重估算)。
**传统分割方法(兜底):**在光照稳定、背景简单的猪舍,可使用传统方法做快速分割:背景减除(MOG2/KNN背景建模,提取运动猪只前景)+阈值分割+形态学操作(腐蚀/膨胀/开运算/闭运算)+连通域分析。传统方法速度极快(CPU上100+fps),不需要训练数据,但对光照变化和静态猪只(休息时不动,会被背景模型吸收)处理不好,适合作为辅助或兜底方案。
**掩码后处理:**分割得到的原始掩码需要后处理:①去除小面积噪点(面积小于阈值的连通域删除);②填充掩码内部空洞(猪只身体内部的小空洞用形态学填充);③粘连猪只分离(多头猪掩码粘连时,使用分水岭算法或距离变换+极大值检测分离个体);④掩码平滑(使用中值滤波或轮廓拟合平滑掩码边缘,减少锯齿);⑤轮廓提取(从掩码提取猪只的外轮廓多边形,用于计算体长/体宽/面积/周长等几何特征)。
**分割精度评估:**mask mAP@0.5(掩码IoU阈值0.5时的平均精度,目标>85%)、边界F1(轮廓精度,目标>80%)、分割IoU(平均交并比,目标>0.80)。分割精度直接影响后续的体长测量、体况评分、姿态估计,需要确保足够高。
3.3 多目标跟踪与个体 ReID
多目标跟踪(MOT)的任务是在连续视频帧中为每头猪分配稳定的个体ID,确保同一头猪在不同帧中ID一致。跟踪质量直接决定行为时序数据的准确性------如果ID频繁切换,就无法统计每头猪的行为时长和轨迹。
**跟踪算法选型:**①OC-SORT(Observation-Centric SORT,农业工程学报2025年群养生猪跟踪采用):在SORT基础上改进,以观测为中心(而非预测为中心),在遮挡严重、目标频繁丢失的场景下表现更优,减少ID切换。OC-SORT对猪只扎堆遮挡场景有针对性优化,是当前猪只跟踪的首选算法。
②DeepSORT(经典算法,PLOS ONE 2025年采用):在SORT基础上增加外观特征(ReID特征)匹配,使用级联匹配策略,适合外观有一定区分度的场景。但猪只外观相似度极高,纯外观匹配效果有限,需要结合运动模型(卡尔曼滤波)和位置信息。
③BYTETrack(字节跳动提出,高性能实时跟踪器):将检测框分为高置信度和低置信度两组,分别匹配,充分利用低置信度检测框(被遮挡的猪只检测置信度低但仍有用),在遮挡场景下表现优秀,速度快(与SORT同速),是工程部署的优秀选择。
④BoT-SORT:结合运动模型、外观特征和相机运动补偿的综合跟踪器,精度高但计算量较大,适合服务器端高精度跟踪。
**猪只跟踪的关键优化:**①运动模型适配:猪只运动不是匀速直线运动(会突然转向、停下、扎堆),卡尔曼滤波的匀速模型假设不完全成立,可使用交互式多模型(IMM,同时维护匀速/加速/转弯多个模型,自适应切换)或LSTM运动预测(学习猪只运动模式)提升预测精度;②遮挡处理:猪只遮挡是跟踪最大挑战,使用遮挡感知策略------当猪只被遮挡时(检测置信度下降/IOU降低),保持其ID不删除,用运动预测维持轨迹,遮挡结束后重新匹配;使用遮挡时长阈值(如遮挡超过30帧/1秒才删除ID),避免短暂遮挡导致ID丢失;③ID一致性约束:同一头猪在栏舍内的ID应全程稳定,使用轨迹平滑(中值滤波/卡尔曼平滑)减少ID抖动;使用轨迹合并(短暂分裂的轨迹如果时空接近则合并);④跨摄像头跟踪:多摄像头场景下,使用ReID特征(外观特征向量)在摄像头重叠区域传递ID,或使用栏舍地理信息(猪只从A栏走到B栏的时间和位置约束)辅助跨摄像头ID关联;⑤跟踪与检测置信度联动:检测置信度高的猪只优先匹配,置信度低的(可能是误检或部分遮挡)二次匹配,减少误检导致的虚假ID。
个体 ReID **(重识别):**猪只外观相似度高,纯靠跟踪器的运动模型在长时间遮挡/跨天/跨摄像头后难以保持ID一致。ReID技术通过提取每头猪的外观特征向量(embedding),在不同帧/不同摄像头中匹配同一头猪。猪只ReID的挑战和方案:①外观特征提取:使用专门训练的ReID网络(如OSNet/PCB/MGN),在猪只图像上训练,提取对姿态/光照/遮挡鲁棒的特征;特征不仅包括毛色,还包括体型比例、斑纹、耳朵形状、尾巴姿态等细微差异;②数据增强:训练时使用随机擦除(Random Erasing,模拟遮挡)、姿态归一化(将不同姿态的猪只对齐到标准姿态)、光照增强,提升特征鲁棒性;③时空约束:ReID匹配不是纯外观相似度,而是结合时空约束(同一头猪不可能在两帧间瞬移超过物理可能的距离,时间间隔越短位置约束越强),大幅减少误匹配;④多模态辅助:如果佩戴智能耳标,耳标ID是最可靠的个体身份,可与视觉ReID融合(耳标ID作为ground truth校准视觉ID),解决视觉ReID的长期一致性问题;⑤生物特征识别:研究中的猪只面部识别(类似人脸识别)、鼻纹识别(猪鼻纹类似指纹,每头猪唯一)可作为更可靠的个体识别手段,但目前技术成熟度不足,可作为未来方向。
**跟踪性能评估:**MOTA(多目标跟踪准确率,综合考虑漏检、误检、ID切换,目标>75%)、IDF1(ID F1分数,衡量ID一致性,目标>70%)、IDs(ID切换次数,越少越好)、HOTA(高阶跟踪精度,综合检测和关联质量,目标>65%)、跟踪速度(FPS,目标>30fps实时)。在猪只扎堆遮挡的复杂场景下,MOTA达到80%以上、IDF1达到75%以上是较好的工程水平。
3.4 姿态估计与骨骼点提取
姿态估计提取猪只身体的关键骨骼点(关键点),为行为识别提供更精细的姿态信息------仅凭边界框和掩码难以区分"进食"和"嗅探地面"(都在料槽/地面旁低头),但骨骼点可以揭示头部角度、颈部弯曲、四肢姿态等细微差异,显著提升行为识别精度。
**关键点定义:**猪只姿态估计通常定义10-17个关键点,包括:鼻尖、头部中心、左耳、右耳、颈部(肩颈结合处)、背部中点、胸部、左前腿(肩/肘/腕)、右前腿、左后腿(髋/膝/跗)、右后腿、臀部、尾巴根、尾巴尖。关键点数量越多,姿态描述越精细,但标注成本和计算量也越大。对于行为识别场景,12-14个关键点(头部3个+躯干3个+四肢4个+臀部/尾巴2个)是性价比最优的选择。
**算法选型:**①YOLO-Pose(YOLOv8-Pose/YOLOv11-Pose):在YOLO检测框架上增加关键点检测分支,端到端同时输出边界框+关键点,速度快(与检测同速),适合实时部署。YOLO-ASF-P2(农业工程学报2024)基于YOLOv8s-Pose改进,结合P2层高分辨率特征图和ASF架构,提升生猪关键点检测精度,再结合CNN-BiGRU时序模型识别坐/站/躺3种行为。
②ST-GCN(时空图卷积网络):将猪只骨骼点构建为时空图(空间维度是骨骼点连接关系,时间维度是连续帧的关键点轨迹),用图卷积网络同时建模空间姿态和时间变化,直接从骨骼点序列识别行为。基于ST-GCN的猪只行为识别模型平均准确率可达86.67%(华南农业大学研究)。
③BCST-GCN(Frontiers 2026):基于骨架的时空图卷积网络,引入双向交叉注意力(Bidirectional Cross-Attention),增强时间维度的特征交互,有效识别进食、走动、躺卧、犬坐等典型行为,相比基线模型准确率提升6.94%、精确率提升5.61%、召回率提升6.88%,解决了传统模型时间相关性弱和特征提取不足的问题。
④OpenPose/AlphaPose(通用人体姿态估计模型迁移):将人体姿态估计模型迁移到猪只,需要重新标注猪只关键点并微调。优点是模型成熟、精度高,缺点是需要较多标注数据且速度较慢。
**关键点标注与训练:**使用CVAT或专门的姿态标注工具标注猪只关键点,每头猪标注12-14个关键点,注意标注被遮挡的关键点(标注为"不可见"但仍给出估计位置,这对遮挡场景的姿态估计很重要)。训练数据量建议500-2000帧(每帧10-20头猪,总计5000-40000个猪只姿态标注)。训练策略:迁移学习(COCO人体姿态预训练权重初始化,再用猪只数据微调)、数据增强(随机翻转/旋转/缩放/遮挡/亮度变化)、关键点损失(使用OKS损失------基于目标关键点相似度的损失,比MSE更适合姿态估计)。
**姿态特征提取:**从连续帧的关键点序列中提取行为识别特征:①静态姿态特征(单帧):关键点坐标、骨骼长度(头-颈-背-臀的连线长度)、关节角度(颈部弯曲角、膝关节角、髋关节角)、身体朝向(头部与臀部连线的方向)、身体长宽比、头部高度(鼻尖相对于地面/背部的高度,区分低头进食/抬头站立);②动态运动特征(时序):关键点位移速度/加速度、头部运动轨迹(进食时头部在料槽处小幅度往复运动)、四肢运动频率(走动时四肢交替运动的频率)、身体重心变化(站立→趴卧→站立的转换过程)、运动方向和轨迹;③时序建模:将连续T帧(如16-32帧,0.5-1秒)的关键点坐标+骨骼角度+运动特征拼接为特征序列,输入LSTM/GRU/TCN/Transformer/ST-GCN等时序模型,输出行为分类。时序建模是区分相似行为(如进食vs嗅探、休息vs生病不动)的关键------进食有持续的头部往复运动和咀嚼动作,嗅探是头部贴近地面缓慢移动,休息是几乎不动,生病不动可能伴随呼吸急促(胸部起伏频率异常)。
**姿态估计精度评估:**OKS(目标关键点相似度,目标>0.80)、关键点AP(平均精度,目标>85%)、可见关键点召回率(目标>90%)。姿态估计精度直接影响行为识别,尤其是需要精细姿态区分的行为类别。
四、猪只行为识别
行为识别是系统的核心功能------在检测跟踪获得每头猪的个体ID、位置、轮廓、骨骼关键点之后,系统需要判断每头猪当前正在做什么。本文重点覆盖用户要求的六大核心行为:进食、休息、活动、社交、嗅探、走动,同时扩展介绍饮水、排尿排便、攻击、爬跨、哺乳、发情、分娩、犬坐等重要行为。

猪只六大核心行为识别效果对比图:左侧原始俯拍帧,中间AI检测跟踪结果(个体ID+行为标签),右侧六维行为分析面板(时间占比雷达图+轨迹热力图+异常预警)+24小时行为节律曲线
4.1 行为定义与分类体系
准确的行为定义是识别系统的基础------不同研究和猪场对同一行为的定义可能不同,必须建立明确、可操作、可标注的行为分类体系。
|--------|--------------------|-----------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------|
| 行为类别 | 英文 | 定义与判定标准 | 视觉特征 | 养殖意义 |
| 进食 | Feeding/Eating | 猪只头部伸入料槽或在料槽处采食,有咀嚼动作,持续时间大于3秒。区分"在料槽旁"(可能只是站着)和"真正进食"(头部伸入+咀嚼动作) | 位置在料槽ROI内,头部低下/伸入料槽,头部有小幅度往复运动(咀嚼),身体基本静止,前肢站稳 | 采食量和采食时长是健康和生产性能的核心指标;采食突然下降是疫病早期最敏感信号;采食节律异常提示应激或环境问题 |
| 休息 | Resting/Lying | 猪只躺卧(侧卧或胸卧/趴伏)且无明显活动,持续时间大于10秒。区分侧卧(身体完全侧躺,四肢伸展)和胸卧/趴伏(胸部着地,四肢蜷缩在身下,可能随时站起) | 身体接触地面,高度低(深度相机可测), bounding box宽高比大(躺着比站着宽),骨骼点显示四肢弯曲/伸展,几乎无位移,呼吸时胸部有轻微起伏 | 休息时长和质量反映健康和福利;正常猪只每天休息12-16小时(躺卧占58-70%);休息过少提示应激/疼痛/环境不适;休息姿势异常(如犬坐)提示呼吸道疾病 |
| 活动 | Activity/Active | 猪只处于站立状态且有明显身体活动,但不属于走动、进食、社交、嗅探等特定行为。包括站立观望、身体伸展、搔抓、拱地(非嗅探)、甩尾、打哈欠等。活动是"其他站立行为"的兜底类别 | 四肢支撑身体站立,身体有运动(头部摆动/身体转动/搔抓),但位移较小(区别于走动),不在料槽/饮水器旁(区别于进食/饮水),无与其他猪只近距离互动(区别于社交) | 活动量是健康和福利的综合指标;活动量骤降提示发病/疼痛;活动量异常升高提示应激/发情/环境不适;活动节律(昼夜活动比)反映环境和管理质量 |
| 社交 | Social/Interaction | 两头或多头猪只之间的近距离互动行为,包括鼻对鼻接触、互相嗅探身体、舔舐、轻咬、玩耍、顶撞、攻击等。持续时间大于2秒,猪只间距小于0.5米且有主动互动动作。区分友好社交(鼻接触/舔舐/玩耍)和攻击社交(猛烈顶撞/撕咬/追逐) | 两头或多头猪只距离很近(边界框重叠或间距小于体长的一半),头部朝向对方,有主动接触动作(鼻子碰鼻子/鼻子拱对方身体/嘴咬对方),双方有互动反应(非单向) | 社交行为反映群体福利和应激水平;攻击行为增加提示密度过高/混群应激/资源不足;社交隔离(某头猪不参与任何社交)提示疾病/疼痛/弱势地位;友好社交频次反映群体稳定性 |
| 嗅探 | Sniffing/Nosing | 猪只鼻子贴近地面、栏舍墙壁、设备或其他猪只,做嗅探/拱蹭动作,持续时间大于2秒。区分嗅探地面/墙壁(探索环境)和嗅探其他猪只(社交性嗅探,归入社交)。猪的嗅觉极其发达,嗅探是主要的探索和感知行为 | 头部低下,鼻子贴近地面/物体(距离小于5cm),鼻子有小幅度左右摆动或拱动动作,身体缓慢移动或静止,不在料槽处(区别于进食),无咀嚼动作(区别于进食) | 嗅探是猪只正常的探索行为,反映环境丰富度和福利水平;嗅探行为过度减少提示环境单调/应激/疾病;异常嗅探(如反复嗅探同一位置/空嚼/拱栏)提示刻板行为或应激;嗅探频次可作为环境丰富度评估指标 |
| 走动 | Walking/Locomotion | 猪只四足交替运动,身体产生明显位移,持续时间大于2秒,移动速度大于0.1米/秒。区分正常走动(平稳行走)和跑动/追逐(速度快,可能是玩耍或攻击)。走动轨迹和活动范围是重要的衍生指标 | 四肢交替运动(骨骼点显示前腿后腿交替抬起落地),身体重心有明显位移(连续帧位置变化大于阈值),身体朝向与运动方向一致, bounding box位置连续变化,非原地活动 | 走动量和活动范围反映健康和福利;跛行(走动姿势异常/某腿不敢着地)是肢体疾病的早期信号;走动减少提示发病/疼痛/环境不适;走动异常增加(如反复走同一路线)提示刻板行为/应激;活动范围缩小提示弱势/疾病 |
**扩展行为类别:**除六大核心行为外,系统可根据猪场需求扩展识别以下重要行为:①饮水(头部在饮水器处,有吞咽动作,饮水频次和时长反映健康和热应激);②排尿/排便(特定姿势,排尿时后腿微蹲、尾巴上翘,排便时类似,排泄位置和频次反映健康和栏舍管理);③攻击(猛烈顶撞/撕咬/追逐,伴随尖叫,攻击事件统计反映群体福利和密度合理性);④爬跨(一头猪爬跨另一头,前腿搭在对方背上,常见于发情或 dominance 行为);⑤哺乳(母猪侧卧,仔猪在母猪腹旁吃奶,哺乳频次和时长反映母猪母性和仔猪生长);⑥发情(母猪站立反射、频繁走动、嗅探其他猪、静立反应,发情检测是精准配种的关键);⑦分娩(母猪频繁起卧、筑巢行为、努责,分娩预警可及时接产,提高仔猪成活率);⑧犬坐(猪只像狗一样坐着,前腿支撑、臀部着地,常见于呼吸道疾病或心力衰竭);⑨咳嗽(音频+视觉,咳嗽是呼吸道疾病早期症状);⑩异常行为(咬尾、空嚼、拱栏、反复走同一路线等刻板行为,提示福利问题或应激)。
4.2 行为识别算法路线
猪只行为识别有四条主要技术路线,各有优缺点,实际系统通常采用多路线融合:
路线一:单帧检测 + 行为分类(检测即识别)
这是最简单直接的路线------将行为类别作为目标检测的类别,YOLO模型直接输出"猪只+行为标签"(如"进食的猪""休息的猪""走动的猪"),不需要单独的行为分类器。代表工作:YOLOv8n行为识别(9类别数据集:进食/休息/站立/活动/拱蹭/走动/饮水/攻击/其他,3700张图像)、YOLO-DLHS-P(6类行为:坐/躺/站/爬跨/爬行/进食,15983个标注)、Wavelet-YOLO11(6种核心行为)。
优点:①端到端,结构简单,推理速度快(一次检测同时输出位置和行为);②不需要跟踪和时序建模,部署简单;③适合行为特征明显、单帧可判断的行为(如休息vs站立、进食vs走动)。缺点:①无法利用时间上下文,对需要时序信息的行为(如进食vs嗅探、走动vs活动)区分能力弱;②行为标签在帧间可能抖动(同一头猪连续帧被标为不同行为),需要后处理平滑;③对遮挡/部分可见的猪只行为判断不准。适用场景:行为类别少(3-4类)、特征明显、对实时性要求高、计算资源有限的边缘部署。
路线二:时序行为识别(视频片段分类)
这条路线先检测跟踪每头猪,然后截取每头猪的连续视频片段(如16-32帧,0.5-1秒),用时序行为识别模型对片段分类。代表模型:SlowFast(双路径,慢路径捕捉空间语义,快路径捕捉运动信息)、TSM(Temporal Shift Module,通过时间维度位移实现零额外计算量的时序建模)、VideoSwin(基于Swin Transformer的视频理解模型)、FE-TSM(特征扩展TSM,农业工程学报2024年多模态猪行为识别采用)。
优点:①利用时间上下文,对需要运动模式的行为(进食vs嗅探、走动vs活动、攻击vs玩耍)区分能力强;②行为标签在时间上更稳定(片段级分类比单帧分类平滑);③可以捕捉行为的动态过程(如站立→趴卧的转换)。缺点:①需要先检测跟踪,再裁剪片段,再分类,流水线复杂;②时序模型计算量大(SlowFast比单帧分类慢3-5倍),边缘部署困难;③需要视频级行为标注(标注成本比单帧高);④对片段长度敏感(太短信息不足,太长延迟高)。适用场景:行为类别多(6类以上)、相似行为多、对精度要求高、有GPU服务器或高端边缘设备的场景。
路线三:骨架姿态 + 时空图卷积( ST-GCN )
这条路线先用姿态估计模型提取每头猪的骨骼关键点序列,然后用时空图卷积网络(ST-GCN)对骨骼点的时空变化建模,识别行为。代表工作:ST-GCN猪只行为识别(平均准确率86.67%,华南农业大学)、BCST-GCN(双向交叉注意力ST-GCN,Frontiers 2026,识别进食/走动/躺卧/犬坐,准确率提升6.94%)、YOLO-ASF-P2+CNN-BiGRU(关键点检测+双向GRU时序分类,识别坐/站/躺,农业工程学报2024)。
优点:①基于骨骼点,对外观变化(毛色/光照/遮挡)鲁棒性强;②骨骼点维度低(12-17个点×2坐标),计算量小,适合边缘部署;③可以捕捉精细的姿态变化(如进食时的头部角度、犬坐时的臀部姿态);④可解释性强(行为由骨骼点的运动模式决定,可分析哪些关节在动)。缺点:①依赖姿态估计精度,关键点检测错误会传导到行为识别;②对需要外观信息的行为(如毛色变化/皮肤病变)无能为力;③骨骼点在遮挡/扎堆时检测不准,影响行为识别;④标注成本高(需要标注关键点而非简单的行为标签)。适用场景:行为与姿态强相关(休息/犬坐/爬跨/哺乳/分娩)、遮挡严重、需要边缘部署、对可解释性要求高的场景。
路线四:多模态融合(视觉 + 音频 + 传感器)
这条路线融合多种模态数据进行行为识别------视觉(RGB/深度/红外)提供空间和外观信息,音频提供声音信息(咳嗽/嚎叫/咀嚼),智能耳标提供加速度和体温信息,环境传感器提供温湿度/氨气。代表工作:AVSlowFast音视频融合(改进AVSlowFast识别哺乳期母猪进食/哺乳/睡眠/拱栏/饮水/活动6种行为,平均精确率94.3%,召回率94.6%,农业工程学报2023)、视觉+传感器多模态融合(光线不足用传感器,遮挡时融合视频+传感器,正常用FE-TSM视频模型,农业工程学报2024)、视觉+红外热成像(体温+行为融合预警疫病)。
优点:①多模态互补,在复杂环境(夜间/遮挡/光照变化)下鲁棒性最强;②可以识别单靠视觉难以识别的行为(如咳嗽靠音频、发热靠红外、活动量靠加速度);③精度最高(多模态融合通常比单模态高5-10%)。缺点:①系统复杂度高,需要多种传感器和同步配准;②成本高(红外热像仪/智能耳标/麦克风阵列都不便宜);③多模态融合算法复杂(需要解决模态缺失/异步/噪声问题);④维护成本高(多种设备需要维护和校准)。适用场景:对精度要求极高、预算充足、核心猪群(种猪/母猪)监测、疫病早期预警需求强的场景。
**推荐架构:多路线混合融合。**实际生产系统不局限于单一路线,推荐采用"单帧检测分类(快速初判)+时序模型(精判)+骨架姿态(姿态相关行为)+多模态(关键场景)"的混合架构:①对简单行为(休息/站立/走动)用单帧YOLO检测分类,速度快;②对相似行为(进食vs嗅探、活动vs走动)用时序模型(TSM/SlowFast)精判;③对姿态相关行为(犬坐/爬跨/哺乳/分娩)用骨架ST-GCN;④对疫病相关行为(咳嗽/发热)用音频+红外多模态;⑤所有路线的结果通过投票/加权融合输出最终行为标签,置信度低的转人工复核或多帧确认。这种混合架构兼顾速度、精度、成本和鲁棒性。
4.3 六大核心行为识别详解
4.3.1 进食行为识别
进食是猪只最重要的行为之一,采食量和采食节律是健康和生产性能的核心指标。进食识别的难点在于区分"在料槽旁"和"真正进食"------很多猪只会在料槽旁站立、等待、甚至睡觉,但没有采食。
**识别方法:**①位置约束:猪只头部或身体在料槽ROI区域内(预先定义料槽位置),这是进食的必要非充分条件;②头部姿态:头部低下,鼻子伸入料槽或贴近料槽边缘(骨骼点显示鼻尖位置低于料槽边缘高度,头部与躯干夹角小于45度);③咀嚼动作:头部有小幅度(1-3cm)、高频(2-4Hz)的往复运动,这是咀嚼的特征,可用光流或关键点位移频谱分析检测(在2-4Hz频段有能量峰值);④持续时间:上述状态持续大于3秒才判定为进食(排除短暂经过料槽);⑤时序确认:连续3帧以上都满足进食条件才确认(减少单帧误判)。
**衍生指标:**①采食时长(每头猪每天/每顿的总进食时间);②采食次数(每天进食的次数和每次时长分布);③采食节律(24小时采食时间分布,正常猪只采食高峰在清晨和傍晚);④采食速度(单位时间采食量,需配合分量估算或称重);⑤采食同步性(群体中同时进食的猪只比例,反映饲喂管理和资源充足度);⑥采食下降率(与个体基线相比,采食时长/次数的下降百分比,下降超过30%触发预警)。
**异常预警:**①采食骤降(某头猪24小时采食时长比7天基线下降超过30-50%,是疫病早期最敏感信号,常见于发热、消化道疾病、疼痛);②采食节律紊乱(夜间异常采食/白天不食,提示应激或环境问题);③采食时间过长(可能是采食困难/口腔疾病/竞争弱势);④采食位置异常(只在料槽某一角落采食,可能是跛行/视力问题/弱势);⑤拒食(完全不进食超过12-24小时,紧急预警,可能是严重疾病)。
4.3.2 休息行为识别
休息(躺卧)是猪只最主要的行为,正常猪只每天躺卧12-16小时(占总时间的50-70%,研究中群养猪只躺卧占58.71%)。休息行为的识别相对简单(姿态特征明显),但需要区分正常休息和异常休息(如生病不动、犬坐呼吸)。
**识别方法:**①身体高度:深度相机测量猪只背部距地面高度,躺卧时高度明显低于站立(通常小于0.4米,站立时0.6-1.0米);无深度相机时用bounding box宽高比------躺卧时宽高比大于1.5(身体横向展开),站立时宽高比小于1.2;②骨骼姿态:关键点显示四肢弯曲(胸卧/趴伏)或伸展(侧卧),臀部/背部接触地面,头部可能着地(侧卧)或抬起(胸卧);③静止性:连续帧位置变化小于阈值(10秒内位移小于0.2米),身体无明显运动;④持续时间:上述状态持续大于10秒才判定为休息(排除短暂趴下又站起);⑤亚型区分:侧卧(身体完全侧躺,四肢伸展,深度图显示身体一侧着地,是深度睡眠状态)vs 胸卧/趴伏(胸部着地,四肢蜷缩在身下,头部抬起,是浅睡眠/随时可站起状态)。
**衍生指标:**①休息时长(每天总躺卧时间,正常12-16小时);②休息亚型比例(侧卧vs胸卧比例,侧卧比例高说明深度睡眠多、环境舒适);③休息节律(24小时休息分布,正常猪只夜间休息多、白天有午休);④休息位置分布(猪只选择在哪里休息,扎堆休息提示冷,分散休息提示热,避开某区域提示有贼风/潮湿);⑤起卧次数(每天站立-躺卧转换次数,频繁起卧提示不适/疼痛/临产);⑥休息同步性(群体同时休息的比例)。
**异常预警:**①休息过少(24小时躺卧时间少于8小时,提示应激/疼痛/环境不适/发情);②休息过多(躺卧超过18小时且采食下降,提示疾病/抑郁/环境过冷);③异常休息姿势(犬坐式呼吸,提示呼吸道疾病/心力衰竭;胸卧但头部抬起且呼吸急促,提示发热/疼痛;只侧卧一侧,提示另一侧肢体疼痛);④休息位置异常(单独远离群体休息,提示疾病/弱势/被攻击;在排泄区休息,提示环境恶劣/疾病);⑤频繁起卧(每小时起卧超过5次,提示疼痛/不适/临产母猪筑巢);⑥休息时呼吸异常(胸部起伏频率过快>40次/分钟或过慢<10次/分钟,提示发热/疼痛/呼吸道疾病,需结合深度图或红外热成像检测呼吸频率)。
4.3.3 活动行为识别
活动是"站立但非特定行为"的兜底类别,包括站立观望、身体伸展、搔抓、拱地、甩尾、打哈欠等。活动量是猪只健康和福利的综合指标。
**识别方法:**①站立姿态:四肢支撑身体,身体高度大于0.5米(或bounding box宽高比小于1.2),排除躺卧;②排除其他行为:不在料槽ROI(排除进食)、不在饮水器ROI(排除饮水)、无与其他猪只近距离互动(排除社交)、鼻子未贴近地面/物体(排除嗅探)、无明显位移(排除走动);③有身体活动:头部/身体/四肢有运动(非完全静止站立),如头部摆动、身体转动、搔抓(后腿挠身体)、甩尾、拱地(非嗅探的拱地动作);④持续时间:站立+活动+排除其他行为持续大于2秒判定为活动。
**衍生指标:**①活动时长(每天总活动时间,正常猪只活动占15-30%);②活动节律(24小时活动分布,正常猪只清晨和傍晚活动高峰);③活动类型分布(站立观望/搔抓/甩尾/拱地/伸展等各占比);④活动强度(单位时间内的运动幅度,可用光流能量或关键点位移总和量化);⑤昼夜活动比(白天活动量/夜间活动量,正常大于2:1,比值异常提示环境问题)。
**异常预警:**①活动骤降(24小时活动量比7天基线下降超过40%,提示发病/疼痛/抑郁,是疫病早期信号);②活动异常增加(活动量比基线增加超过50%,提示应激/发情/环境不适/饥饿);③活动节律紊乱(夜间异常活跃/白天萎靡,提示光照问题/应激/疾病);④异常活动类型(反复搔抓同一部位提示寄生虫/皮肤病;频繁甩尾提示不适/尾根刺激;空嚼/拱栏提示刻板行为/应激;反复打哈欠提示疼痛/应激);⑤活动范围缩小(某头猪只在小区域内活动,不探索环境,提示疾病/弱势/空间恐惧)。
4.3.4 社交行为识别
社交行为是猪只群体福利的重要指标,包括友好社交(鼻接触、舔舐、玩耍)和攻击社交(顶撞、撕咬、追逐)。社交行为的识别需要同时检测多头猪并分析它们之间的互动。
**识别方法:**①多猪近距离:两头或多头猪只的边界框距离小于阈值(间距小于0.5米或小于体长的一半),或边界框有重叠;②头部朝向:至少一头猪的头部朝向另一头猪(骨骼点显示鼻尖方向指向对方);③互动动作:有主动接触行为------鼻对鼻接触(两猪鼻尖距离小于10cm)、鼻子拱对方身体(一头猪鼻子贴近另一头猪的身体并做拱动)、舔舐(一头猪嘴部在另一头猪身体上做舔动动作)、轻咬/玩耍(嘴部接触对方身体但无猛烈动作)、顶撞(头部猛烈撞击对方身体)、撕咬(嘴部咬住对方身体/耳朵/尾巴)、追逐(一头猪快速追赶另一头猪);④双向性:双方有互动反应(非一头猪对另一头静止猪的单向动作),攻击行为中被攻击方有躲避/逃跑反应;⑤持续时间:互动持续大于2秒判定为社交行为(排除短暂擦身而过)。
**亚型分类:**①友好社交:鼻对鼻接触、互相嗅探身体、舔舐、轻咬玩耍、并排站立/休息------动作温和、无尖叫、无躲避;②攻击社交:猛烈顶撞、撕咬(咬耳朵/尾巴/身体)、追逐、压制(一头猪把另一头猪逼到角落)------动作猛烈、伴随尖叫(音频检测)、被攻击方躲避/逃跑/臣服(躺倒露腹);③中性社交:并排站立、同时进食/饮水、近距离休息但无主动互动------归入"共存"而非真正社交。
**衍生指标:**①社交频次(每头猪每天参与社交的次数);②社交时长(每天总社交时间);③友好/攻击比(友好社交次数/攻击社交次数,比值高说明群体稳定福利好);④攻击事件统计(每天攻击次数、攻击持续时间、参与攻击的猪只);⑤社交网络分析(构建猪只社交网络图,识别社交中心猪/被孤立猪/攻击发起者);⑥个体社交角色(社交活跃者/被孤立者/攻击者/受害者)。
**异常预警:**①攻击事件激增(某栏24小时攻击次数比7天基线增加超过100%,提示密度过高/混群应激/资源不足/温度不适);②社交隔离(某头猪24小时内无任何友好社交,且被其他猪只回避,提示疾病/弱势/被攻击,需要关注);③持续被攻击(某头猪每天被攻击超过3次,提示群体等级问题/个体弱势,需要隔离或调整群体);④异常攻击模式(某头猪持续攻击其他猪(欺凌者),或攻击特定部位(咬尾/咬耳,提示营养缺乏/环境单调/刻板行为);⑤社交减少(全栏社交频次下降超过50%,提示群体应激/疾病/环境不适)。
4.3.5 嗅探行为识别
猪的嗅觉极其发达(嗅觉受体基因数量是人类的3-4倍),嗅探是猪只最主要的探索和感知行为。嗅探行为的减少或异常模式提示环境单调、应激或疾病。
**识别方法:**①头部低下姿态:骨骼点显示鼻尖位置低(贴近地面/物体,距离小于5cm),头部与躯干夹角小于30度(明显低头);②鼻子动作:鼻尖有小幅度(1-2cm)左右摆动或前后拱动动作(嗅探时鼻子在气味源附近移动以采集更多气味分子),可用关键点位移轨迹分析(鼻尖轨迹呈小幅度锯齿状/圆形运动);③位置:在地面/栏舍墙壁/设备/其他猪只身体旁(非料槽内,排除进食);④排除进食:无咀嚼动作(头部无2-4Hz往复运动,无嘴部开合),鼻子未伸入料槽;⑤排除社交嗅探:如果嗅探对象是其他猪只,归入社交行为(社交性嗅探);嗅探地面/墙壁/设备才归入独立的嗅探行为;⑥持续时间:上述状态持续大于2秒判定为嗅探(排除短暂低头)。
**衍生指标:**①嗅探频次(每头猪每天嗅探的次数);②嗅探时长(每天总嗅探时间);③嗅探对象分布(嗅探地面/墙壁/设备/其他猪各占比);④嗅探区域分布(嗅探行为在栏舍内的空间分布热力图,识别猪只感兴趣的区域和被忽视的区域);⑤嗅探节律(24小时嗅探时间分布,探索行为通常在采食后和活动高峰时增多);⑥环境探索指数(嗅探频次+活动范围+新物体接触时间,综合评估环境丰富度和猪只好奇心)。
**异常预警:**①嗅探显著减少(某头猪24小时嗅探频次比7天基线下降超过50%,提示环境单调/应激/疾病/抑郁,猪只失去探索兴趣);②异常嗅探模式(反复嗅探同一位置超过5分钟,提示刻板行为/异常信息素/该位置有问题;空嚼伴随嗅探,提示应激/胃溃疡);③嗅探过度增加(嗅探频次比基线增加超过100%,提示新环境应激/环境变化/信息素干扰/发情);④嗅探区域异常(只嗅探排泄区/栏舍角落,提示环境丰富度不足/逃避行为;完全不嗅探某区域,提示该区域有负面刺激/贼风/潮湿);⑤社交性嗅探减少(猪只之间互相嗅探减少,提示群体社会关系破裂/应激/疾病)。
4.3.6 走动行为识别
走动是猪只最基本的运动行为,走动量、走动轨迹、走动姿势是健康(尤其是肢体健康)和福利的重要指标。
**识别方法:**①站立姿态:四肢支撑身体,排除躺卧;②明显位移:连续帧中猪只位置变化大于阈值(移动速度大于0.1米/秒,或1秒内位移大于0.1米),轨迹连续且方向一致(排除原地活动);③四肢交替运动:骨骼点显示前腿和后腿交替抬起落地(走动时对角腿同步运动------左前+右后同时抬起,右前+左后同时抬起),可用关键点运动模式分析(四肢关键点的垂直位移呈交替正弦波,相位差90度);④身体朝向:身体朝向与运动方向一致(头部朝向移动方向,排除倒退走);⑤排除其他行为:不在料槽/饮水器旁(排除进食/饮水时的小范围移动),无与其他猪只互动(排除社交时的移动),非快速奔跑(速度大于0.5米/秒且动作剧烈,可能是玩耍/攻击/逃跑,单独标记);⑥持续时间:上述状态持续大于2秒判定为走动(排除短暂移动)。
**衍生指标:**①走动时长(每天总走动时间);②走动距离(每天总移动距离,由轨迹积分计算,正常育肥猪每天走动200-500米);③走动速度分布(平均速度、最大速度、速度直方图);④活动范围(猪只在栏舍内的活动区域面积,由轨迹凸包或核密度估计计算,正常应覆盖栏舍面积的60%以上);⑤轨迹热力图(猪只在栏舍内的位置分布热力图,识别高频活动区/休息区/被忽视区);⑥走动节律(24小时走动时间分布);⑦跛行检测(走动时四肢运动不对称------某腿抬起高度低于其他腿/着地时间短/不敢负重,身体重心偏向健侧,走动速度慢,轨迹摇摆,跛行评分0-4级);⑧走动方向偏好(是否总沿同一方向走/反复走同一路线,提示刻板行为)。
**异常预警:**①走动骤减(24小时走动距离比7天基线下降超过40%,提示发病/疼痛/肢体疾病/抑郁);②跛行(走动姿势异常,某腿不敢负重,评分≥2级,提示肢蹄疾病/外伤/疼痛,需要及时检查治疗------肢蹄病是猪场常见问题,影响生产性能和福利);③走动异常增加(走动距离比基线增加超过80%,提示应激/发情/环境不适/饥饿/刻板行为);④活动范围缩小(某头猪活动范围小于栏舍面积的30%,提示疾病/弱势/被攻击/空间恐惧);⑤异常轨迹(反复沿同一路线走动(刻板行为)/只在栏舍角落小范围活动(逃避)/避开某区域(负面刺激));⑥走动速度异常(速度过慢提示疼痛/疾病,速度过快且无目的提示应激/神经症状);⑦群体走动同步异常(全栏猪只同时走动/同时静止,提示环境刺激(如喂料时间/异常噪音)/群体应激)。
五、行为时序分析与异常预警
单帧/单片段的行为识别只是原始数据,真正有价值的是对行为时序数据的统计分析和异常检测------通过建立每头猪的正常行为基线,实时监测行为变化,发现异常及时预警。这是系统从"行为记录器"升级为"健康预警系统"的关键。
5.1 行为时序统计与节律分析
**个体行为基线建立:**每头猪都有自己的行为模式(个体差异),不能用统一的"正常范围"判断所有猪。系统需要为每头猪建立个性化行为基线:①数据采集:在猪只健康、环境稳定的时期(如入栏后适应7-14天),连续采集行为数据;②基线计算:计算每头猪各行为指标的均值、标准差、中位数、四分位数(如采食时长均值=45分钟/天,标准差=8分钟;活动量均值=200分钟/天,标准差=30分钟);③节律基线:计算24小时行为节律曲线(每小时各行为的时间占比),建立正常节律模板;④动态更新:基线随猪只生长阶段(仔猪/育成/育肥/妊娠/哺乳)和环境变化(季节/温度)动态更新,使用滑动窗口(如最近7天)计算基线,避免用过时的基线判断当前状态;⑤个体差异容忍:基线的标准差反映个体行为波动性,波动性大的猪只异常阈值设宽一些,波动性小的猪只阈值设严一些。
**行为节律分析:**猪只行为有明显的昼夜节律,节律紊乱是健康和环境问题的敏感指标:①24小时行为曲线:以小时为单位,绘制每头猪/每栏各行为的时间占比曲线(进食曲线、活动曲线、休息曲线、走动曲线),正常曲线应有明显的高峰和低谷(如进食高峰在6:00-8:00和16:00-18:00,休息高峰在22:00-6:00和12:00-14:00);②节律参数提取:从曲线中提取节律参数------高峰时间(行为最活跃的时间段)、低谷时间、峰谷比(高峰值/低谷值,反映节律强度)、昼夜比(白天活动量/夜间活动量)、节律稳定性(每天曲线的相似度,用相关系数或DTW距离衡量);③节律异常检测:将当前节律曲线与基线节律模板对比,计算偏离度(如DTW距离/相关系数),偏离超过阈值触发节律紊乱预警;④群体节律同步性:计算栏内猪只行为节律的同步性(同时进食/同时休息的比例),同步性下降提示群体应激/疾病/管理问题。
**行为时间占比与预算分析:**正常猪只的行为时间分配(行为预算)有一定范围,研究中群养猪只的典型行为预算:躺卧休息58.71%、站立37.94%、进食1.96%、其他1.38%(农业工程学报2025,16头猪统计)。不同生长阶段和饲养条件下行为预算不同,系统需要:①计算每头猪每天的行为预算(各行为时间占比饼图);②与同品种/同阶段/同栏舍的群体平均预算对比,识别偏离群体的个体;③行为预算的时间趋势(每周/每月变化),识别渐进性变化(如休息时间逐渐增加、活动逐渐减少,可能是慢性疾病);④行为预算与生产性能关联分析(如采食时长与日增重的相关性、活动量与饲料转化率的关系)。
5.2 异常行为检测方法
异常行为检测是系统的核心价值------在猪只出现明显临床症状前,通过行为变化早期发现问题。异常检测有四类方法:
**方法一:统计阈值法(简单有效,工程首选)。**基于个体基线的统计阈值,当行为指标超出"正常范围"时判定异常:①绝对阈值:基于兽医和养殖经验设定的绝对标准(如采食停止超过12小时=异常,体温超过40℃=发热,攻击次数超过5次/天=异常);②相对阈值:基于个体基线的相对变化(如采食时长比7天基线下降超过30%=异常,活动量下降超过40%=异常,休息时间增加超过50%=异常);③标准差法:指标偏离基线均值超过N个标准差(通常2-3个标准差,对应95-99%置信区间)判定异常,如采食时长=均值-2.5×标准差;④百分位法:指标低于基线第5百分位或高于第95百分位判定异常,对非正态分布的数据更鲁棒;⑤多指标联合:单一指标异常可能是偶然波动,多个相关指标同时异常置信度更高(如采食下降30%+活动下降40%+休息增加50%+体温升高=高置信度疫病预警),使用规则引擎或贝叶斯网络组合多指标。统计阈值法的优点是简单、可解释、计算量小、易于部署,缺点是对渐进性变化和复杂模式不敏感,需要根据个体差异调参。
**方法二:时序预测误差法(适合渐进性变化和复杂模式)。**用模型预测猪只的正常行为时序,当实际行为与预测偏差过大时判定异常:①LSTM/GRU预测:用历史行为时序(如过去7天每小时的采食时长)训练LSTM模型预测下一个时间段的行为,实际值与预测值的误差(残差)超过阈值判定异常------LSTM能捕捉行为的时序依赖和节律模式,对"该进食时不进食""该活动时不活动"这类节律异常敏感;②自编码器(Autoencoder):将行为时序序列编码为低维特征再解码重建,重建误差大的序列判定异常------自编码器能学习正常行为的复杂模式,对与正常模式不同的异常模式敏感;③Transformer预测:用Transformer架构建模长时序依赖(过去30天的行为数据),预测未来行为,误差检测异常------Transformer比LSTM更擅长长时序建模,但计算量更大;④ prophet/ARIMA:传统统计时序模型,适合有明显趋势和季节性的行为数据,计算量小,可解释性强。时序预测误差法的优点是能捕捉复杂的时序异常和渐进性变化,缺点是需要足够的历史数据训练,模型调参复杂,可解释性较差。
**方法三:无监督异常检测(适合未知异常和群体异常)。**不需要标注异常数据,通过学习正常行为的分布,发现偏离分布的样本:①孤立森林(Isolation Forest):将行为指标向量(采食时长/活动量/休息时间/走动距离/社交频次等多维特征)输入孤立森林,异常分值高的样本判定异常------适合高维数据和未知异常,计算量小;②One-Class SVM:学习正常行为样本的边界,边界外的样本判定异常;③DBSCAN聚类:将行为样本聚类,不属于任何簇的样本(噪声点)判定异常;④自编码器/PCA重建误差:用正常数据训练自编码器或PCA,重建误差大的样本异常;⑤群体异常检测:在群体层面检测异常------某栏猪只的平均行为指标与其他栏差异过大(如A栏采食时长比全场平均低40%),或某栏内行为离散度异常增大(个体差异变大,提示部分猪只发病)。无监督方法的优点是不需要异常标注(猪场异常数据少且标注难),能发现未知异常,缺点是异常分值的阈值难设定,可能产生较多误报,需要结合规则和人工复核。
**方法四:基于规则的专家系统(适合兽医知识融合)。**将兽医和养殖专家的知识编码为规则,结合行为数据和其他数据(体温/环境/历史病历)推理异常和疾病:①症状-疾病关联规则:如"采食下降+活动减少+体温升高+犬坐呼吸=疑似呼吸道疾病","采食下降+饮水增加+腹泻=疑似消化道疾病","攻击增加+咬尾=疑似密度过高/营养缺乏/环境单调","频繁起卧+筑巢行为+母猪=疑似分娩临近";②模糊推理:使用模糊逻辑处理不确定性(如"采食明显下降"的模糊定义),输出疾病可能性评分;③贝叶斯网络:建模行为症状、环境因素、疾病之间的概率关系,通过贝叶斯推理计算疾病后验概率;④知识图谱:构建猪病知识图谱(症状-疾病-治疗-预防关联),行为异常触发知识图谱推理,给出可能疾病和建议检查项。专家系统的优点是可解释性强(能给出"为什么异常"和"可能是什么病"),能融合兽医知识,缺点是规则构建需要专家参与,覆盖的疾病有限,对未知疾病无能为力。
推荐方案:多方法融合 + **分级预警。**实际系统不使用单一方法,而是融合多种方法:①统计阈值法做第一层快速筛查(计算量小,实时性好,覆盖常见异常);②时序预测误差法做第二层精细检测(捕捉渐进性变化和复杂节律异常);③无监督异常检测做第三层未知异常发现(发现规则未覆盖的新异常);④专家系统做异常解释和疾病推理(给出可能原因和建议);⑤多方法投票/加权融合输出最终异常置信度,高置信度直接预警,中置信度标记为"观察",低置信度忽略。
5.3 健康预警分级与响应流程
**预警分级:**系统将异常分为四级,不同级别响应方式不同:
①<观察级(蓝色):单一指标轻度异常(如采食下降15-30%,活动下降20-40%),或多指标轻微偏离,可能是偶然波动或环境变化。系统记录异常,在个体档案中标注"观察",不通知饲养员,持续监测24-48小时,如果异常持续或加重则升级。
②<关注级(黄色):单一指标中度异常(采食下降30-50%,活动下降40-60%),或两个以上指标同时轻度异常,或节律明显紊乱。系统通过移动端APP/小程序通知饲养员"关注该猪只",建议下次巡栏时重点检查,记录饲养员的观察结果(如"精神尚可,无明显症状"或"发现轻微咳嗽")。
③<预警级(橙色):单一指标重度异常(采食下降超过50%,拒食超过6小时,体温超过40.5℃),或多个指标中度异常,或检测到明显异常行为(攻击/跛行/犬坐呼吸/社交隔离)。系统立即通知饲养员和兽医,建议2小时内现场检查,给出可能的疾病方向和建议检查项(体温测量/听诊/粪便检查),记录检查结果和处理措施。
④<紧急级(红色):危及生命的紧急情况(完全拒食超过12-24小时,严重呼吸困难,体温超过41.5℃,严重攻击受伤,分娩困难,疑似传染病群发)。系统立即电话/短信通知场长和兽医,建议立即现场处理,同时标记为"紧急事件",跟踪处理全过程,事后复盘。
**响应流程:**①异常检测→系统自动判定级别→②通知相关人员(按级别通知饲养员/兽医/场长)→③现场检查(人员按建议检查猪只,记录症状和测量数据)→④诊断与处理(兽医诊断,采取治疗/隔离/调整环境等措施,记录处理方案)→⑤跟踪随访(系统持续监测该猪只行为,确认是否恢复正常,处理后24-48小时内行为未改善则升级或重新评估)→⑥结案与复盘(异常解除后结案,记录完整事件链,定期复盘异常模式,优化检测规则和预警阈值)→⑦模型迭代(积累的异常案例和处理结果用于优化异常检测模型和疾病推理规则,系统越用越准)。
**预警效果指标:**①预警准确率(预警后确认为真实异常的比例,目标>70%,减少误报打扰);②预警召回率(真实异常中被系统预警的比例,目标>85%,减少漏检);③提前预警时间(从系统预警到出现明显临床症状的时间差,目标>24小时,实现早期干预);④预警响应时间(从预警到人员现场检查的时间,目标<2小时);⑤异常处理后恢复率(处理后行为恢复正常的比例,反映干预效果);⑥误报率(误报占总预警的比例,目标<30%,过高会导致饲养员忽视预警)。
六、完整 Python 代码实现
以下是一个简化版的猪只行为实时监测系统Python实现,涵盖视频采集、YOLO检测、OC-SORT跟踪、六大行为分类、行为时序统计和异常预警的完整流程。代码为教学示例,实际生产需要替换为更精确的模型和更完善的工程实现。
(以下代码使用普通段落展示,非代码块格式)
import cv2
import numpy as np
import time
from collections import defaultdict, deque
from ultralytics import YOLO
import pandas as pd
from datetime import datetime, timedelta
import warnings
warnings.filterwarnings('ignore')
==================== 配置参数 ====================
class Config:
摄像头配置
camera_url = "rtsp://admin:password@192.168.1.100:554/stream1" # RTSP摄像头地址
fps = 25
检测配置
yolo_model_path = "pig_yolov8n_best.pt" # 猪只检测模型(自定义训练)
detection_interval = 5 # 每5帧检测一次,中间帧跟踪
conf_threshold = 0.4
iou_threshold = 0.5
行为分类配置
behavior_model_path = "pig_behavior_classifier.pt" # 行为分类模型
behavior_classes = "feeding", "resting", "active", "social", "sniffing", "walking"
behavior_classes_cn = {"feeding": "进食", "resting": "休息", "active": "活动",
"social": "社交", "sniffing": "嗅探", "walking": "走动"}
ROI区域配置(栏舍功能区域,需根据实际场景标定)
feeder_roi = (100, 200), (300, 200), (300, 350), (100, 350) # 料槽区域
drinker_roi = (400, 150), (450, 150), (450, 250), (400, 250) # 饮水器区域
resting_roi = (50, 400), (500, 400), (500, 550), (50, 550) # 休息区
异常预警阈值(基于个体基线,此处为示例值)
feeding_drop_threshold = 0.30 # 采食下降超过30%预警
activity_drop_threshold = 0.40 # 活动下降超过40%预警
resting_increase_threshold = 0.50 # 休息增加超过50%预警
no_feeding_hours = 12 # 拒食超过12小时紧急预警
基线窗口
baseline_days = 7 # 用最近7天数据建立基线
==================== 猪只个体类====================
class Pig:
def init(self, pig_id):
self.id = pig_id
self.track = deque(maxlen=300) # 位置轨迹(最近300帧/12秒)
self.behavior_history = deque(maxlen=7200) # 行为历史(最近2小时,25fps*7200)
self.current_behavior = "active"
self.behavior_confidence = 0.0
self.last_detection_time = time.time()
行为统计(按天)
self.daily_behavior_duration = defaultdict(float) # 当天各行为总时长(秒)
self.daily_feeding_count = 0
self.daily_walking_distance = 0.0 # 米
self.last_position = None
self.day = datetime.now().date()
健康基线(从历史数据加载,此处为示例)
self.baseline = {
"feeding_duration": 2700, # 平均每天采食45分钟(秒)
"activity_duration": 7200, # 平均每天活动2小时
"resting_duration": 50400, # 平均每天休息14小时
"walking_distance": 300, # 平均每天走动300米
"feeding_std": 480, # 采食时长标准差8分钟
"activity_std": 1080, #活动时长标准差18分钟
}
self.alert_level = "normal" # normal/observation/attention/warning/emergency
def update_position(self, bbox, timestamp):
"""更新猪只位置和轨迹"""
cx = (bbox0 + bbox2) / 2
cy = (bbox1 + bbox3) / 2
self.track.append((cx, cy, timestamp))
计算走动距离(像素转米,需要标定,此处假设10像素=0.1米)
if self.last_position is not None:
dx = cx - self.last_position0
dy = cy - self.last_position1
dist_pixels = np.sqrt(dx**2 + dy**2)
dist_meters = dist_pixels * 0.01 # 像素转米(需标定)
if self.current_behavior == "walking":
self.daily_walking_distance += dist_meters
self.last_position = (cx, cy)
self.last_detection_time = timestamp
检查是否跨天,跨天重置日统计
today = datetime.now().date()
if today != self.day:
self.save_daily_stats()
self.daily_behavior_duration.clear()
self.daily_feeding_count = 0
self.daily_walking_distance = 0.0
self.day = today
def update_behavior(self, behavior, confidence, duration_sec):
"""更新行为标签和统计"""
self.current_behavior = behavior
self.behavior_confidence = confidence
self.behavior_history.append((behavior, time.time()))
self.daily_behavior_durationbehavior += duration_sec
if behavior == "feeding":
#简单的采食次数统计(从非进食转为进食时计数+1)
if len(self.behavior_history) >= 2 and self.behavior_history-20 != "feeding":
self.daily_feeding_count += 1
def get_velocity(self):
"""计算当前移动速度(米/秒)"""
if len(self.track) < 10:
return 0.0
recent = list(self.track)-10:
dt = recent-12 - recent02
if dt <= 0:
return 0.0
dx = recent-10 - recent00
dy = recent-11 - recent01
dist = np.sqrt(dx**2 + dy**2) * 0.01 # 像素转米
return dist / dt
def is_in_roi(self, roi_polygon):
"""判断猪只是否在指定ROI区域内"""
if not self.track:
return False
cx, cy, _ = self.track-1
result = cv2.pointPolygonTest(np.array(roi_polygon, np.int32), (cx, cy), False)
return result >= 0
def check_alerts(self):
"""检查异常并返回预警信息"""
alerts = \[\]
now = datetime.now()
计算当天已过时间比例(用于归一化)
seconds_passed = (now - now.replace(hour=0, minute=0, second=0)).total_seconds()
day_ratio = min(1.0, seconds_passed / 86400)
1. 采食下降检测
feeding_today = self.daily_behavior_duration.get("feeding", 0)
expected_feeding = self.baseline"feeding_duration" * day_ratio
if expected_feeding > 60: # 至少过了1分钟才判断
feeding_ratio = feeding_today / expected_feeding if expected_feeding > 0 else 1.0
if feeding_ratio < (1 - self.config.feeding_drop_threshold):
drop_pct = (1 - feeding_ratio) * 100
if drop_pct > 60:
alerts.append(("warning", "采食严重下降", f"采食时长比预期低{drop_pct:.0f}%"))
else:
alerts.append(("attention", "采食下降", f"采食时长比预期低{drop_pct:.0f}%"))
2. 活动下降检测
activity_today = self.daily_behavior_duration.get("active", 0) + self.daily_behavior_duration.get("walking", 0)
expected_activity = self.baseline"activity_duration" * day_ratio
if expected_activity > 120:
activity_ratio = activity_today / expected_activity if expected_activity > 0 else 1.0
if activity_ratio < (1 - self.config.activity_drop_threshold):
drop_pct = (1 - activity_ratio) * 100
alerts.append(("attention", "活动量下降", f"活动时长比预期低{drop_pct:.0f}%"))
3. 休息异常增加检测
resting_today = self.daily_behavior_duration.get("resting", 0)
expected_resting = self.baseline"resting_duration" * day_ratio
if expected_resting > 300:
resting_ratio = resting_today / expected_resting if expected_resting > 0 else 1.0
if resting_ratio > (1 + self.config.resting_increase_threshold):
increase_pct = (resting_ratio - 1) * 100
alerts.append(("observation", "休息时间增加", f"休息时长比预期高{increase_pct:.0f}%"))
4. 拒食紧急检测
last_feeding_time = None
for behavior, ts in reversed(self.behavior_history):
if behavior == "feeding":
last_feeding_time = datetime.fromtimestamp(ts)
break
if last_feeding_time is not None:
hours_since_feeding = (now - last_feeding_time).total_seconds() / 3600
if hours_since_feeding > self.config.no_feeding_hours:
alerts.append(("emergency", "长时间拒食", f"已超过{hours_since_feeding:.1f}小时未进食"))
5. 多指标联合预警(采食+活动同时下降=高置信度疫病预警)
feeding_drop = (expected_feeding > 60) and (feeding_today < expected_feeding * 0.7)
activity_drop = (expected_activity > 120) and (activity_today < expected_activity * 0.6)
if feeding_drop and activity_drop:
alerts.append(("warning", "疑似疫病早期症状", "采食和活动同时显著下降,建议立即检查体温和健康状况"))
确定最高预警级别
if alerts:
levels = a\[0 for a in alerts]
if "emergency" in levels:
self.alert_level = "emergency"
elif "warning" in levels:
self.alert_level = "warning"
elif "attention" in levels:
self.alert_level = "attention"
else:
self.alert_level = "observation"
else:
self.alert_level = "normal"
return alerts
def save_daily_stats(self):
"""保存每日行为统计到数据库/文件(此处简化为打印)"""
stats = {
"pig_id": self.id,
"date": str(self.day),
"feeding_duration": self.daily_behavior_duration.get("feeding", 0),
"resting_duration": self.daily_behavior_duration.get("resting", 0),
"activity_duration": self.daily_behavior_duration.get("active", 0),
"walking_duration": self.daily_behavior_duration.get("walking", 0),
"social_duration": self.daily_behavior_duration.get("social", 0),
"sniffing_duration": self.daily_behavior_duration.get("sniffing", 0),
"feeding_count": self.daily_feeding_count,
"walking_distance": self.daily_walking_distance,
}
print(f"日统计 猪{self.id} {self.day}: {stats}")
==================== 行为分类器(简化版,基于规则+位置+运动) ====================
class BehaviorClassifier:
"""简化版行为分类器,实际生产应使用深度学习时序模型(SlowFast/TSM/ST-GCN)"""
def init(self, config):
self.config = config
加载深度学习行为分类模型(如果有)
self.model = YOLO(config.behavior_model_path) # 行为分类模型
def classify(self, pig, frame):
"""基于规则的简化行为分类,返回(行为, 置信度)"""
velocity = pig.get_velocity() # 米/秒
in_feeder = pig.is_in_roi(self.config.feeder_roi)
in_drinker = pig.is_in_roi(self.config.drinker_roi)
in_resting = pig.is_in_roi(self.config.resting_roi)
估计身体姿态(通过bounding box宽高比,实际应用骨骼点)
此处简化:通过轨迹位置变化和ROI判断
1. 进食:在料槽区 + 低速 + 头部低下(需姿态估计,此处简化)
if in_feeder and velocity < 0.15:
return ("feeding", 0.75)
2. 走动:速度大于阈值
if velocity > 0.15:
return ("walking", 0.80)
3. 休息:在休息区 + 极低速 + 长时间静止(需姿态,此处简化)
if in_resting and velocity < 0.05:
#检查是否持续静止超过10秒
if len(pig.track) > 250: # 10秒@25fps
recent = list(pig.track)-250:
positions = (p\[0, p1) for p in recent]
movement = np.std(positions, axis=0).sum()
if movement < 20: # 10秒内位移标准差小
return ("resting", 0.85)
return ("resting", 0.60)
4. 嗅探:低速 + 头部低下(需姿态,此处简化为非料槽区的低速活动)
if velocity < 0.1 and not in_feeder and not in_resting:
return ("sniffing", 0.55)
5. 社交:与其他猪只近距离(需多猪距离计算,此处简化为活动)
实际应用中需要计算与其他猪只的距离和互动动作
6. 活动:兜底(站立但非上述行为)
return ("active", 0.50)
==================== 主系统类 ====================
class PigBehaviorMonitor:
def init(self, config):
self.config = config
self.pigs = {} # pig_id -> Pig对象
self.next_id = 1
加载YOLO检测模型
self.detector = YOLO(config.yolo_model_path)
行为分类器
self.behavior_classifier = BehaviorClassifier(config)
OC-SORT跟踪器(实际应用中使用官方实现,此处简化为基于IOU的简单跟踪)
self.trackers = {} # pig_id ->上一帧bbox
self.frame_count = 0
self.last_frame_time = time.time()
预警记录
self.alert_log = \[\]
def detect_pigs(self, frame):
"""YOLO检测猪只,返回边界框列表"""
results = self.detector(frame, conf=self.config.conf_threshold,
iou=self.config.iou_threshold, verbose=False)
boxes = \[\]
for result in results:
for box in result.boxes:
if box.cls == 0: # 类别0=猪只
x1, y1, x2, y2 = box.xyxy0.cpu().numpy()
conf = box.conf0.cpu().numpy()
boxes.append((int(x1), int(y1), int(x2), int(y2), float(conf)))
return boxes
def track_pigs(self, detections):
"""简化版多目标跟踪(基于IOU匹配,实际应用使用OC-SORT/DeepSORT)"""
matched = {} # pig_id -> bbox
unmatched_detections = list(range(len(detections)))
1. 计算现有tracker与检测的IOU矩阵
if self.trackers:
iou_matrix = np.zeros((len(self.trackers), len(detections)))
tracker_ids = list(self.trackers.keys())
for i, tid in enumerate(tracker_ids):
for j, det in enumerate(detections):
iou_matrixi, j = self._compute_iou(self.trackerstid, det:4)
2. 贪心匹配(实际应用使用匈牙利算法)
while True:
if iou_matrix.size == 0:
break
max_idx = np.unravel_index(np.argmax(iou_matrix), iou_matrix.shape)
max_iou = iou_matrixmax_idx
if max_iou < 0.3: # IOU阈值
break
tid = tracker_idsmax_idx\[0]
det_idx = max_idx1
matchedtid = detectionsdet_idx:4
iou_matrixmax_idx\[0, :] = 0
iou_matrix:, max_idx\[1] = 0
if det_idx in unmatched_detections:
unmatched_detections.remove(det_idx)
3. 未匹配的检测=新猪只,分配新ID
for det_idx in unmatched_detections:
new_id = self.next_id
self.next_id += 1
self.pigsnew_id = Pig(new_id)
matchednew_id = detectionsdet_idx:4
4. 更新trackers
self.trackers = {tid: bbox for tid, bbox in matched.items()}
5. 删除长时间未检测到的猪只(超过30秒)
now = time.time()
to_remove = \[\]
for tid, pig in self.pigs.items():
if now - pig.last_detection_time > 30:
to_remove.append(tid)
for tid in to_remove:
del self.pigstid
if tid in self.trackers:
del self.trackerstid
return matched
def _compute_iou(self, box1, box2):
"""计算两个边界框的IOU"""
x1 = max(box10, box20)
y1 = max(box11, box21)
x2 = min(box12, box22)
y2 = min(box13, box23)
intersection = max(0, x2 - x1) * max(0, y2 - y1)
area1 = (box12 - box10) * (box13 - box11)
area2 = (box22 - box20) * (box23 - box21)
union = area1 + area2 - intersection
return intersection / union if union > 0 else 0
def process_frame(self, frame):
"""处理单帧:检测→跟踪→行为分类→预警检查"""
self.frame_count += 1
now = time.time()
frame_duration = now - self.last_frame_time
self.last_frame_time = now
1. 检测(每N帧一次,中间帧用跟踪预测)
if self.frame_count % self.config.detection_interval == 1 or not self.trackers:
detections = self.detect_pigs(frame)
matched = self.track_pigs(detections)
else:
#中间帧:用跟踪器的位置(实际应用用光流/KCF预测)
matched = dict(self.trackers)
2. 更新每头猪的位置和行为
frame_alerts = \[\]
for pig_id, bbox in matched.items():
if pig_id not in self.pigs:
self.pigspig_id = Pig(pig_id)
pig = self.pigspig_id
pig.update_position(bbox, now)
#行为分类
behavior, confidence = self.behavior_classifier.classify(pig, frame)
pig.update_behavior(behavior, confidence, frame_duration)
#预警检查(每100帧/4秒检查一次,减少计算量)
if self.frame_count % 100 == 0:
alerts = pig.check_alerts()
for level, title, desc in alerts:
alert_entry = {
"time": datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
"pig_id": pig_id,
"level": level,
"title": title,
"description": desc,
}
frame_alerts.append(alert_entry)
self.alert_log.append(alert_entry)
实际应用中通过MQTT/HTTP推送预警到移动端
print(f"预警-{level} 猪{pig_id}: {title} - {desc}")
return matched, frame_alerts
def draw_results(self, frame, matched):
"""在帧上绘制检测跟踪结果和行为标签"""
for pig_id, bbox in matched.items():
if pig_id not in self.pigs:
continue
pig = self.pigspig_id
x1, y1, x2, y2 = bbox
#根据预警级别选择颜色
color_map = {
"normal": (0, 255, 0), # 绿色
"observation": (255, 255, 0), # 黄色
"attention": (0, 165, 255), # 橙色
"warning": (0, 0, 255), # 红色
"emergency": (255, 0, 255), # 品红
}
color = color_map.get(pig.alert_level, (0, 255, 0))
#绘制边界框
cv2.rectangle(frame, (x1, y1), (x2, y2), color, 2)
#绘制ID和行为标签
behavior_cn = pig.behavior_classes_cn.get(pig.current_behavior, pig.current_behavior)
label = f"ID:{pig_id} {behavior_cn} ({pig.behavior_confidence:.0%})"
cv2.putText(frame, label, (x1, y1 - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.6, color, 2)
#绘制轨迹
if len(pig.track) > 2:
points = (int(p\[0), int(p1)) for p in list(pig.track)-50:]
for i in range(len(points) - 1):
cv2.line(frame, pointsi, pointsi+1, color, 1)
绘制ROI区域
cv2.polylines(frame, np.array(self.config.feeder_roi, np.int32), True, (0, 255, 255), 2)
cv2.putText(frame, "Feeder", (self.config.feeder_roi00, self.config.feeder_roi01 - 5),
cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 255), 1)
cv2.polylines(frame, np.array(self.config.resting_roi, np.int32), True, (255, 0, 255), 2)
cv2.putText(frame, "Resting", (self.config.resting_roi00, self.config.resting_roi01 - 5),
cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 0, 255), 1)
显示统计信息
info = f"Pigs: {len(self.pigs)} | Frame: {self.frame_count} | Alerts: {len(self.alert_log)}"
cv2.putText(frame, info, (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 0.7, (255, 255, 255), 2)
return frame
def run(self):
"""主循环:从摄像头读取视频流并处理"""
cap = cv2.VideoCapture(self.config.camera_url)
if not cap.isOpened():
print(f"无法打开摄像头: {self.config.camera_url}")
return
print("猪只行为实时监测系统启动...")
print(f"行为类别: {pig.behavior_classes_cn\[c for c in self.config.behavior_classes]}")
while True:
ret, frame = cap.read()
if not ret:
print("读取帧失败,尝试重连...")
cap.release()
time.sleep(2)
cap = cv2.VideoCapture(self.config.camera_url)
continue
#处理帧
matched, alerts = self.process_frame(frame)
#绘制结果
frame = self.draw_results(frame, matched)
#显示(实际生产中推流到管理平台,不本地显示)
cv2.imshow("Pig Behavior Monitor", frame)
#每300帧(12秒)打印一次行为统计
if self.frame_count % 300 == 0:
print(f"\n=== 第{self.frame_count}帧行为统计 ===")
for pig_id, pig in self.pigs.items():
behavior_cn = pig.behavior_classes_cn.get(pig.current_behavior, pig.current_behavior)
print(f" 猪{pig_id}: 当前={behavior_cn}, 预警={pig.alert_level}, "
f"今日采食={pig.daily_behavior_duration.get('feeding',0):.0f}秒, "
f"走动={pig.daily_walking_distance:.1f}米")
#按q退出
if cv2.waitKey(1) and 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
print("系统已停止")
==================== 运行 ====================
if name == "main":
config = Config()
monitor = PigBehaviorMonitor(config)
monitor.run()
**代码说明:**以上代码是一个简化的教学示例,涵盖了猪只行为监测系统的核心流程。实际生产部署需要以下改进:①检测模型替换为针对猪只场景训练的YOLOv8n/v11n改进模型(如LAD-YOLO/SR-YOLO),mAP达到90%以上;②跟踪器替换为OC-SORT或BYTETrack,解决遮挡ID切换问题,MOTA达到80%以上;③行为分类器替换为深度学习时序模型(SlowFast/TSM/ST-GCN),利用骨骼关键点和时间上下文精确区分六大行为,而不是基于位置和速度的简单规则;④增加姿态估计模块(YOLO-Pose),提取12-17个骨骼关键点,用于进食头部姿态、休息姿态、跛行检测等;⑤增加多模态融合(红外热成像体温、智能耳标加速度、音频咳嗽检测),提升疫病预警能力;⑥ROI区域自动标定(而不是手动配置坐标),支持栏舍自动识别;⑦像素-米标定(通过相机标定和栏舍尺寸计算精确的像素/米转换系数,而不是硬编码0.01);⑧预警推送(通过MQTT/HTTP/WebSocket推送到移动端APP/小程序,支持分级通知和处理闭环);⑨数据存储(时序数据库InfluxDB/TDengine存储行为数据,MySQL存储个体档案和预警记录,MinIO存储视频片段);⑩模型热更新(支持不停止服务更新检测和行为识别模型);⑪多摄像头支持(同时处理多路视频流,跨摄像头个体ReID);⑫GPU/NPU加速(TensorRT/RKNN/OpenVINO优化推理,边缘端实时处理)。
七、工程落地与优化
猪只行为监测系统从算法原型到猪场生产落地,需要解决实时性、鲁棒性、端侧部署、系统集成等工程问题。猪场环境恶劣(粉尘大、氨气重、温差大、供电不稳定、网络差),对系统的稳定性和可维护性要求高,工程优化的质量直接决定系统能否在猪场长期稳定运行。
7.1 实时性优化
猪场通常一栋猪舍有4-8个栏舍,每个栏舍1个摄像头,单栋猪舍4-8路视频流需要同时处理,每路视频25-30fps,系统需要实时处理(延迟小于200-500ms)才能及时预警。实时性优化策略:
①检测-跟踪联动:视频流中,每N帧(如每5帧)跑一次YOLO检测(计算量大,约30-50ms/帧),中间帧用轻量级跟踪器(光流/KCF/卡尔曼滤波预测,约2-5ms/帧)预测猪只位置和轨迹,跟踪失败或每5帧重新触发检测。这样平均计算量降低到1/5(检测只在20%的帧运行),平均延迟从40ms降到10ms,同时保持跟踪连续性。行为分类可以每10-15帧(0.5秒)做一次(行为是持续状态,不需要每帧分类),进一步降低计算量。
②ROI局部处理:检测到猪只位置后,行为分类和姿态估计只在每头猪的ROI区域内做(裁剪猪只子图像输入行为模型),不处理整幅图像,计算量与猪只数量和ROI面积成正比(通常每头猪ROI只有整幅图像的5-10%,10头猪总计50-100%,但可以批处理)。栏舍ROI(功能区域判定)只做一次(整幅图像的多边形测试,计算量极小)。
③跳帧与降分辨率:对于非关键行为(休息/活动等稳定状态),可以跳帧处理(每2-3帧处理一次);对于关键行为(进食/攻击/跛行),全帧率处理。输入分辨率可以根据场景调整------大栏舍用1280×720,小栏舍用640×480,在保证猪只有足够像素的前提下降低计算量。
④多线程流水线:将视频采集、预处理、检测跟踪、行为分类、预警判断、数据存储、视频推流放在不同线程/进程,形成流水线(pipeline),各阶段并行处理,提升整体吞吐量。使用生产者-消费者模式和队列(Queue)解耦各阶段,避免某一阶段阻塞影响整体。多路视频流可以用多进程并行处理(每个进程处理1-2路视频),充分利用多核CPU和GPU。
⑤硬件加速:用GPU/NPU并行加速:YOLO检测跟踪用TensorRT(NVIDIA GPU/Jetson)或RKNN(瑞芯微NPU)或OpenVINO(Intel CPU/NPU)优化,推理速度提升2-5倍;图像预处理(颜色空间转换、缩放、归一化)用CUDA/NEON SIMD并行;行为分类模型(SlowFast/TSM)可以用TensorRT优化或蒸馏为轻量模型;模型量化(FP32→INT8),推理速度提升2-4倍,模型大小减少75%,精度损失通常小于1%。
⑥模型轻量化与蒸馏:选择轻量化模型:检测用YOLOv8n/v11n(2-6M参数)而非YOLOv8l(40M+参数);行为分类用TSM(零额外计算量的时序建模)或MobileNetV3+LSTM而非SlowFast(计算量大);姿态估计用YOLOv8n-pose而非HRNet。知识蒸馏:用大模型(YOLOv8l+SlowFast)作为教师模型,训练小模型(YOLOv8n+TSM)作为学生模型,在保持小模型速度的同时接近大模型精度(通常可恢复大模型90-95%的精度)。模型剪枝:去除冗余通道和层,进一步压缩。
⑦早停与快速拒绝:行为识别中,如果猪只位置和姿态与上一帧相同且无运动,可以直接复用上一帧的行为标签(行为是持续状态,不会瞬间变化),跳过行为分类计算。预警判断不需要每帧做,可以每5-10秒做一次(异常是持续状态,不需要毫秒级响应)。
⑧动态资源调度:根据猪场作息动态调整计算资源------白天猪只活动多(需要全帧率检测+行为分类+预警),夜间猪只休息多(可以降帧率、只做检测和异常活动监测、降低预警频率);喂料时段(采食行为多,重点监测采食)提升检测频率;非喂料时段降低频率。动态调度可以在保证关键时段精度的同时降低整体计算量和功耗。
实时性优化的目标是单路视频端到端延迟(从摄像头采集到行为输出)小于200-500ms,单边缘AI盒子可同时处理4-8路视频流,预警响应时间(从异常发生到推送通知)小于5-10秒。
7.2 鲁棒性优化
猪场环境是计算机视觉应用中最具挑战性的场景之一------光照变化大(昼夜交替、自然光+人工光、粉尘遮挡镜头)、猪只外观相似度高(同品种猪几乎一模一样)、遮挡严重(扎堆、叠卧、走动时互相遮挡)、猪只会触碰/污染设备(啃咬摄像头、拱设备、溅泥水/粪便到镜头)、供电和网络不稳定。鲁棒性优化是系统能否长期稳定运行的关键。
①光照鲁棒:猪场光照变化极大------白天可能有强烈自然光从窗户射入(局部过曝),夜间可能只有红外补光(黑白图像、细节少),阴天/晴天/季节变化,粉尘遮挡镜头导致整体变暗。应对策略:·固定补光(每个摄像头旁安装白光+940nm红外双光源,光感自动切换,确保栏舍光照稳定,减少对自然光的依赖);·自动曝光/增益(相机根据环境光自动调整,保持猪只区域亮度稳定,避免过曝/过暗);·颜色恒常性(Gray World/White Patch/深度学习颜色恒常性,校正色偏);·光照归一化(将图像亮度归一化到固定范围,如将直方图拉伸到0-255,减少光照变化对特征提取的影响);·红外/可见光双模式(夜间自动切换红外模式,算法支持红外图像的检测和行为识别------需要用红外图像训练或做域适应);·光照变化检测+重新校准(检测到光照突变时,自动调整参数或跳过几帧等待稳定)。
②遮挡与扎堆鲁棒:猪只扎堆休息、叠卧、走动时互相遮挡是猪场最常见的挑战,会导致检测漏检、跟踪ID切换、行为识别错误。应对策略:·实例分割(YOLO-seg/FastSAM生成每头猪的精确掩码,即使部分被遮挡也能通过可见部分识别);·遮挡感知跟踪(OC-SORT/BYTETrack以观测为中心,遮挡时保持ID不删除,用运动预测维持轨迹,遮挡结束后重新匹配,设置遮挡时长阈值如30-60帧才删除ID);·多摄像头视角(顶部俯拍+侧视补充,遮挡时用其他视角的信息补充,跨摄像头ReID传递ID);·深度信息辅助(深度相机区分前后猪只,即使RGB图像中重叠,深度不同也能区分个体);·部分可见行为识别(训练时包含大量遮挡样本,用数据增强模拟遮挡(CutOut/Random Erasing),让模型学会从部分可见的猪只识别行为);·群体级行为补充(个体遮挡严重时,退而求其次做群体级行为统计------栏舍整体活动量、采食区猪只数量、休息区猪只数量,虽然不能精确到个体,但仍能提供有价值的群体行为信息)。
③设备污染与防破坏:猪只会啃咬设备、拱摄像头、溅泥水/粪便/饲料到镜头上,导致镜头模糊或完全被遮挡。应对策略:·安装高度和位置(摄像头安装在2.5米以上,猪只触碰不到,加装金属防护罩,防止啃咬和拱顶);·镜头保护(使用钢化玻璃保护窗,表面镀疏水疏油膜(泥水/粪便不易附着,便于清洁),可加配自动清洁装置(雨刮/喷水/压缩空气吹扫,定期自动清洁镜头);·图像质量监测(实时监测图像清晰度(拉普拉斯方差/ Brenner梯度)和亮度,如果镜头被污染(模糊/变暗/局部遮挡超过阈值),自动报警通知饲养员清洁,同时降低该路视频的检测置信度或暂停该路的预警(避免误报);·设备选型(选择IP66/IP67防护等级、不锈钢外壳、防腐蚀的工业级畜牧专用摄像头,而非普通消费级摄像头);·定期维护(建立设备维护计划,每周检查镜头清洁度,每月校准摄像头位置和ROI,每季度检查线路和供电)。
④猪只外观相似与个体识别:同品种猪只外观几乎一模一样(白色猪尤其明显),纯靠视觉ReID难以长期保持个体ID一致(跨天/跨摄像头后ID可能切换)。应对策略:·智能耳标辅助(给核心群猪只佩戴智能耳标,耳标ID是最可靠的个体身份,视觉ID与耳标ID关联------耳标读取(RFID/UHF)时校准视觉ID,解决视觉ReID的长期一致性问题;耳标还提供加速度和体温数据,多模态融合提升行为识别和疫病预警);·生物特征识别(研究中的猪面部识别、鼻纹识别------每头猪的鼻纹类似指纹唯一,可作为更可靠的个体识别手段,目前技术成熟度不足但可作为未来方向;面部特征(毛色斑纹、耳朵形状、面部轮廓)在有斑纹的品种(如杜洛克、皮特兰)上区分度较好);·时空约束(ReID匹配时结合时空约束------同一头猪不可能在两帧间瞬移超过物理可能的距离,时间间隔越短位置约束越强,大幅减少外观相似导致的误匹配);·栏舍内ID保持(在单栏舍内,通过稳定的跟踪(OC-SORT+遮挡处理)可以保持ID一致,ID切换主要发生在跨栏舍/跨天时------对于不需要跨栏舍跟踪的场景(如育肥猪从入栏到出栏在同一栏舍),单栏舍内ID一致已经足够;对于需要跨栏舍跟踪的场景(如母猪转栏、种猪测定),用耳标辅助)。
⑤环境干扰与误报控制:猪场有很多环境干扰可能导致误检/误报------饲养员进入猪舍(被检测为"异常大目标"或"猪只活动激增")、设备运行(料线转动、风机振动、饮水器流水)、其他动物(老鼠、猫、鸟进入猪舍)、光影变化(云遮日、灯光闪烁、风扇影子转动)。应对策略:·ROI限定(只在栏舍区域内检测,排除走道和饲养员区域;饲养员进入时可以通过人体检测识别并排除,不纳入猪只行为统计);·背景减除+稳定帧(预先采集背景,当前帧与背景做差,只处理变化区域;排除静态干扰(设备、光影));·多帧确认(异常行为需要连续多帧(如3-5秒)确认才预警,排除单帧误检和瞬时干扰);·行为合理性校验(预警前检查行为是否合理------如"采食下降"需要排除喂料时段未到、料槽空了、猪只转栏等正常原因;"活动激增"需要排除饲养员进入、喂料时间等正常刺激);·误报反馈学习(饲养员处理预警时标记"误报",系统记录误报原因和场景,用于优化检测规则和阈值,持续降低误报率------目标误报率小于30%,过高会导致饲养员忽视预警)。
⑥供电与网络稳定性:猪场供电可能不稳定(电压波动、偶尔停电),网络可能差(猪场位置偏远、WiFi覆盖不好、猪舍金属结构屏蔽信号)。应对策略:·边缘计算(核心算法(检测/跟踪/行为分类/本地预警)在边缘AI盒子本地运行,不依赖网络------断网时系统仍能正常监测和本地存储预警,网络恢复后数据自动同步到云端);·本地存储(边缘盒子配备大容量SSD/HDD(1-4TB),本地存储原始视频(7-14天循环覆盖)和行为数据(长期存储),断网时数据不丢失);·UPS不间断电源(边缘盒子和关键摄像头配备UPS,停电后可继续运行30-60分钟,支持优雅关机和数据保存,避免突然断电导致数据损坏);·网络冗余(优先使用有线以太网(稳定、带宽高),WiFi/4G/5G作为备用;关键数据(预警通知)用4G/5G模块独立发送,不依赖猪场主网络);·断点续传(网络中断时数据本地缓存,网络恢复后自动断点续传到云端,确保数据不丢失、不重复)。
鲁棒性优化的目标是系统在猪场恶劣环境下7×24小时稳定运行,设备在线率大于95%,检测跟踪在遮挡/光照变化下保持稳定(MOTA>75%,ID切换率小于10%),预警误报率小于30%,设备维护周期大于1个月(不需要每周人工清洁/校准)。
7.3 端侧部署与硬件方案
猪只行为监测系统采用"边缘计算+云端管理"架构------猪舍端边缘AI盒子实时处理视频流(检测/跟踪/行为分类/本地预警),云端负责数据存储、统计分析、模型训练、跨场管理和移动端推送。端侧部署是系统的核心,硬件方案按性能和成本分为几档:
①高端方案------边缘AI服务器/工作站:NVIDIA Jetson AGX Orin(275TOPS)或工控机+RTX 3060/4060 GPU,性能强,支持大模型(YOLOv8m-seg+SlowFast行为分类+姿态估计)、8-16路视频流同时处理、多模态融合(RGB+深度+红外+音频)、高精度个体ReID。单路延迟50-100ms,支持4-8个栏舍(8-16路摄像头)。成本较高(1.5-3万元/套),适合核心群猪舍(种猪/母猪)、疫病监测需求强的猪场、研究试验场。
②中端方案------边缘AI盒子(主流推荐):瑞芯微RK3588(6TOPS NPU)或NVIDIA Jetson Orin Nano(40TOPS)/Orin NX(70-100TOPS)或华为Atlas 200I DK A2,性能中等,支持YOLOv8n-seg+INT8量化+TSM轻量行为分类+简化姿态估计,4-8路视频流同时处理。单路延迟100-200ms,支持2-4个栏舍(4-8路摄像头)。成本中等(3000-8000元/套),适合大多数规模化猪场的育肥猪舍、保育猪舍,是性价比最高的主流方案。推荐RK3588方案------国产芯片、成本低(开发板1000-2000元)、NPU算力足够、支持INT8量化、生态成熟(RKNN工具链),适合大规模部署。
③低端方案------轻量边缘设备:树莓派4B/5+Google Coral TPU USB加速棒,或普通x86工控机(Intel i3/i5+CPU推理),性能有限,支持YOLOv5n/YOLOv8n(无分割)+简化行为分类(基于位置和运动的规则分类,无时序模型),1-2路视频流处理。单路延迟200-500ms,支持1个栏舍(1-2路摄像头)。成本低(1000-3000元/套),适合小型猪场、预算有限的试点场景、或只做群体级行为监测(不需要个体级跟踪)的场景。
④AI摄像头一体机(新兴方案):内置AI芯片(RK3588/海思Hi3559A/安霸CV22)的智能摄像头,摄像头本身集成检测跟踪算法,直接输出行为数据(不需要额外边缘盒子),安装简单(一个摄像头就是一个完整节点,PoE供电+网线传输数据),使用方便。成本中等(500-1500元/摄像头),适合标准化程度高、快速部署的场景。缺点是算力有限(通常只能做检测+简单行为分类,无法做复杂时序模型和多模态融合),算法更新不如边缘盒子灵活。
**摄像头选型:**推荐400万像素(2560×1440)、25-30fps、全局快门、IP66/IP67防护、低照度(0.001lux星光级)、支持940nm红外补光、PoE供电、RTSP/ONVIF协议的工业级畜牧专用摄像头。品牌选择:海康威视/大华(工业级,质量稳定,有畜牧专用系列)、宇视/天地伟业(性价比高)、海思方案的白牌摄像头(成本低,适合大规模部署)。镜头选择2.8-4mm广角(单摄像头覆盖15-25平方米栏舍),安装高度2.5-3.5米俯拍。
**补光设备:**白光+940nm红外双光源补光灯,白光色温4000-5000K、CRI>80(白天/需要彩色图像时使用),940nm红外无红曝(夜间使用,不干扰猪只睡眠),光感传感器自动切换,安装在摄像头旁,功率5-15W,防护等级IP66。
**可选多模态设备:**深度相机(Intel RealSense D435i/海康深度相机,用于体高/姿态/体重估算,关键栏舍部署)、红外热像仪(FLIR Lepton/海康红外模组,320×256分辨率,±2℃测温精度,用于体温监测和发热预警,猪舍出入口或每栏一个测温点)、智能耳标(RFID/UHF+加速度+体温,用于个体身份辅助和多模态融合,核心群佩戴)、环境传感器(温湿度/氨气/二氧化碳,每栋1-2个)、麦克风阵列(音频采集,咳嗽检测,疫病早期预警)。
**端侧软件优化:**①模型轻量化(YOLOv8n+INT8量化+知识蒸馏+剪枝,确保在边缘NPU上实时运行);②推理框架(TensorRT for NVIDIA、RKNN for 瑞芯微、OpenVINO for Intel、CANN for 华为昇腾,比原生PyTorch快2-5倍);③内存优化(图像和中间结果原地计算,模型用内存映射mmap,多路视频分时复用内存,确保在2-4GB内存的边缘设备上流畅运行);④功耗优化(动态频率调节DFVS,空闲时降频,工作时升频,NPU硬件加速比CPU通用计算功耗低,确保设备长时间稳定运行不发热降频------RK3588满载功耗约5-8W,Jetson Orin Nano 7-15W,适合无风扇或小风扇散热);⑤远程管理(边缘设备支持远程监控------设备状态/CPU/GPU/NPU利用率/内存/温度/在线状态/模型版本/检测率/预警数,远程更新------模型OTA升级/配置下发/算法热更新,远程诊断------日志上传/异常告警/远程重启,总部可以统一管理成百上千台猪场设备,不需要现场维护);⑥系统可靠性(看门狗watchdog------程序崩溃自动重启,系统监控------CPU/内存/磁盘使用率监控,磁盘满自动清理旧视频,数据校验------行为数据和预警记录写入时校验,防止数据损坏,双系统备份------系统更新失败自动回滚到上一版本)。
7.4 系统集成与业务流程
猪只行为监测系统不是孤立的,需要与猪场现有的管理系统和业务流程集成,才能发挥最大价值。猪场通常已有环控系统、饲喂系统、猪只管理系统(如养猪通、猪联网、智草云)、财务系统等。
①与猪场管理系统(Pig Management System, PMS)集成:·个体档案同步:行为监测系统的猪只个体ID与PMS中的猪只档案(品种、出生日期、父母系、免疫记录、繁育状态、体重)关联,行为数据补充到个体档案中,形成完整的猪只全生命周期数据;·转栏/淘汰同步:PMS中的转栏、淘汰、死亡记录同步到行为系统,自动停止对应猪只的监测(避免"幽灵猪只"持续监测),转栏时自动在新栏舍中建立该猪只的监测;·预警联动:行为系统的健康预警同步到PMS,在PMS的猪只档案中标注"健康异常",触发兽医巡栏任务,治疗记录和转归结果回传到行为系统(用于验证预警准确性和优化模型)。
②与环控系统集成:·环境-行为关联分析:环控系统的温湿度、氨气、通风、光照数据与行为数据融合,分析环境对行为的影响(如温度超过28℃时猪只活动下降、饮水增加、扎堆减少------热应激;氨气超过25ppm时猪只休息减少、行为异常------空气质量差);·环境异常预警联动:行为异常(如全栏猪只活动骤增、扎堆散开)可能提示环境问题(如温度过高/通风故障/氨气泄漏),自动联动环控系统检查和调整(增加通风、降低温度);·环境控制建议:基于行为数据优化环控参数------如猪只休息时扎堆说明温度偏低,建议提高设定温度;猪只分散休息、呼吸急促说明温度偏高,建议降低温度。实现"基于动物行为的精准环控",比单纯基于温度传感器的环控更符合猪只实际需求。
③与饲喂系统集成:·采食行为-采食量关联:饲喂系统的下料量、采食时间数据与行为系统的采食行为(采食时长、采食次数、采食速度)融合,精确计算每头猪的采食量和采食效率(行为系统识别"在料槽旁"vs"真正进食",饲喂系统记录下料量,两者结合得到真实采食量);·精准饲喂:基于采食行为数据调整饲喂策略------如某头猪采食下降,自动增加适口性好的饲料或调整饲喂时间;群体采食节律变化,调整饲喂时间和频次;·饲料转化率(FCR)分析:采食行为+采食量+体重估算(深度相机/视觉体重估算),计算每头猪的FCR,识别高效个体和低效个体,用于选种和饲喂优化。
④与繁育管理系统集成:·发情行为检测:行为系统识别母猪发情行为(站立反射、频繁走动、嗅探其他猪、静立反应、接受爬跨),自动提示配种时间,与繁育系统的配种计划联动,提高配种率和受胎率------研究表明基于行为的发情检测比人工观察更及时准确,可提高受胎率5-10%;·分娩行为预警:行为系统识别母猪分娩前行为(频繁起卧、筑巢行为、叼草、不安、食欲下降),提前6-12小时预警接产,提高仔猪成活率(减少难产和仔猪被压死);·哺乳行为监测:监测母猪哺乳行为(哺乳频次、哺乳时长、仔猪吃奶行为),评估母猪母性和泌乳能力,识别哺乳异常(如母猪拒绝哺乳、仔猪吃奶不足)。
⑤与疫病防控系统集成:·疫病早期预警:行为异常(采食下降、活动减少、发热、咳嗽、犬坐呼吸、群体发病)是疫病早期最敏感的信号,行为系统的预警与疫病防控系统联动,触发兽医巡栏、采样检测、隔离、用药等防控流程------"早发现、早隔离、早治疗",减少疫病传播和损失;·群体发病监测:当同一栏舍/同一栋猪舍多头猪只同时出现类似行为异常(如同时采食下降、同时发热),系统自动判定为"群体异常事件",升级预警级别,提示可能是传染病或环境问题,立即启动防控预案;·免疫/用药记录联动:免疫和用药记录与行为数据关联,分析免疫/用药前后的行为变化(如免疫后24-48小时内采食下降、活动减少是正常免疫反应,持续超过48小时则异常),评估免疫/用药效果和副作用。
⑥与经营分析/BI系统集成:
·生产性能分析:行为数据(采食、活动、休息、生长)与生产数据(日增重、FCR、死亡率、出栏时间)交叉分析,发现影响生产性能的关键行为因素,优化饲养管理;·成本效益分析:行为监测系统的投入(设备、安装、维护)与产出(减少死亡率、提高FCR、提高配种率、减少人工)量化对比,计算ROI,为规模化部署提供决策依据;·猪场对比分析:多猪场的行为数据横向对比(如A场采食节律vs B场、A场活动量vs B场),识别管理差异和最佳实践,推广优秀猪场的管理经验;·预警效果分析:统计预警准确率、提前预警时间、处理后恢复率、误报率,持续优化检测规则和模型,评估系统价值。
⑦移动端应用与饲养员工作流:
·预警推送:通过微信小程序/APP/短信/电话将分级预警推送给饲养员和兽医,预警包含猪只ID、栏舍位置、异常类型、严重程度、建议检查项,饲养员点击导航到对应栏舍;·处理闭环:饲养员现场检查后在APP中记录检查结果(正常/异常症状/确诊疾病)、处理措施(观察/治疗/隔离/淘汰)、处理时间,形成"预警→检查→处理→跟踪→结案"完整闭环;·个体档案查询:饲养员用APP扫描猪只耳标或输入ID,查看该猪只的完整档案(基本信息+行为数据+健康记录+繁育记录+预警历史);·数据看板:场长/兽医通过APP查看猪场整体状态(在线设备数、当前预警数、今日异常猪只数、各栏舍行为概览、环境参数),远程掌握猪场情况;·培训与知识库:APP内置猪病知识库和处理指南,预警时自动推送相关疾病的症状、鉴别诊断、处理建议,辅助饲养员和兽医决策。
**业务流程设计:**猪只行为监测融入猪场日常管理的完整流程:①系统7×24小时自动监测→②检测到行为异常→③系统自动判定预警级别(观察/关注/预警/紧急)→④分级推送给相关人员(饲养员/兽医/场长)→⑤人员按建议到现场检查猪只→⑥记录检查结果和症状→⑦兽医诊断并采取处理措施(治疗/隔离/调整环境/淘汰)→⑧系统持续监测该猪只行为,跟踪恢复情况→⑨处理后24-48小时行为未改善则升级预警或重新评估→⑩异常解除后结案,记录完整事件链→⑪定期复盘异常模式,优化检测规则和预警阈值→⑫积累的异常案例用于模型迭代优化。整个流程自动化、数据化、可追溯,减少对人工经验的依赖,提升猪场管理效率和疫病防控能力。
**数据安全与合规:**猪只行为数据和视频属于猪场经营数据,需要:①本地存储为主(原始视频存猪场本地7-14天,行为结构化数据可同步云端长期保留,猪场可选择是否上云);②数据加密(传输用TLS,存储用AES,访问需认证授权);③权限管理(总部管理员/场长/兽医/饲养员不同角色不同权限,只能看自己权限范围内的数据和猪场);④数据归属(明确数据归猪场所有,服务商不得擅自使用或分享,合同中约定数据使用范围);⑤视频隐私(猪舍视频不涉及个人隐私,但饲养员进入猪舍时可能被拍到,需要做人体模糊处理或避免拍摄饲养员面部,遵守个人信息保护法);⑥数据保留期限(原始视频7-14天循环覆盖,行为数据和预警记录按猪场要求保留1-3年,到期自动删除)。
八、主流产品与方案对比
猪只行为监测和智慧养猪是近年来快速发展的赛道,国内外已有多家厂商提供相关产品和方案,技术路线和定位各有侧重。以下是主流方案的对比:
|-------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------|----------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 厂商/方案 | 技术路线 | 核心能力 | 适用场景 | 特点与局限 |
| 视动世纪智慧养猪(北京视动世纪) | AI机器视觉+物联网+大数据+数字孪生+边缘计算,自研AI视觉算法,猪场全域高清摄像头,无接触个体识别 | 生猪无接触个体识别、行为分析、健康监测、精准饲喂、圈舍管控、繁育管理、防疫预警、出栏溯源全流程智能管理,摆脱传统耳标依赖 | 规模化生猪养殖场全流程数字化升级,万头级猪场 | 功能全面(全流程覆盖)、无接触识别(不依赖耳标)、数字孪生可视化,是国内智慧养猪视觉方案的代表厂商;但方案较重(需要全域摄像头部署和平台对接)、成本较高、定制化程度高(不适合小猪场快速部署) |
| 智能耳标方案(睿畜科技、影子科技、网易味央等) | 智能耳标(RFID/UHF+加速度传感器+体温传感器)+LoRa/NB-IoT通信+云端数据分析,部分配合摄像头 | 个体身份识别、活动量监测(加速度)、体温监测、发情检测(活动量增加+体温变化)、定位(栏舍级)、健康预警 | 母猪/种猪核心群监测、发情检测、疫病早期预警 | 个体身份最可靠(耳标ID唯一)、体温和活动量数据直接(不依赖视觉)、功耗低(电池6-12个月)、部署相对简单;但需要给每头猪佩戴(有应激、有脱落/损坏风险、人工成本)、只能测活动量和体温(无法识别具体行为如进食/休息/社交/跛行)、精度受耳标佩戴位置影响、电池需要定期更换 |
| 环控 + 行为联动方案(畜牧环控厂商如大荷兰人、蒙特、京鹏环宇等) | 环境传感器(温湿度/氨气/CO2)+环控设备(通风/降温/供暖)+简单视觉或红外计数,部分集成行为分析 | 环境精准控制、猪只计数(红外/视觉)、群体活动量估算(PIR红外/视觉)、热应激预警(温度+活动量)、环境-行为联动控制 | 规模化猪场环控升级、热应激防控、群体级行为监测 | 环控是猪场刚需(方案容易落地)、环境-行为联动有实际价值(基于行为调环控比纯温度控制更精准)、厂商有猪场渠道和服务能力;但行为分析能力弱(通常只有群体活动量/计数,没有个体级行为识别和六大行为分类)、视觉算法不是核心能力(多为第三方集成)、个体健康预警能力不足 |
| 学术研究原型系统(中国农业大学、华中农业大学、华南农业大学、农业农村部设施农业工程重点实验室等) | YOLOv8n/v11n改进(LAD-YOLO/SR-YOLO/Wavelet-YOLO11)+OC-SORT/DeepSORT跟踪+ST-GCN/SlowFast行为识别+多模态融合(视觉+音频+传感器),研究级算法 | 猪只检测(mAP 90%+)、个体跟踪(MOTA 80%+)、6-9类行为识别(进食/休息/站立/活动/拱蹭/走动/攻击/爬跨/哺乳,准确率85-95%)、姿态估计、跛行检测、发情/分娩行为识别、咳嗽检测(音频) | 研究试验、算法验证、核心群精细监测、技术原型 | 算法最先进(针对猪只场景深度优化、多模态融合、时序建模)、行为类别丰富(6-9类以上)、精度高(有论文数据支撑)、可解释性强(有学术分析);但多为研究原型(工程化程度低、没有完善的产品化平台和运维体系)、部署复杂(需要研究人员调试)、成本高(研究级设备)、难以直接大规模商用(需要产品化转化) |
| 海外智慧养殖方案(荷兰Nedap、德国Big Dutchman、丹麦Schou、美国Sound Agriculture等) | 电子耳标+RFID+饲喂站+自动称重+环境控制+部分视觉,成熟的精准畜牧系统,部分集成计算机视觉 | 个体识别(耳标)、精准饲喂(饲喂站按ID下料)、自动称重(地磅/视觉体重)、发情检测(活动量+体温)、健康监测、生产性能分析、环控集成 | 欧美规模化猪场、种猪场、高价值猪只监测 | 系统成熟稳定(经过欧美猪场多年验证)、精准饲喂和称重能力强(与行为数据融合价值大)、数据平台完善(生产性能分析能力强);但价格昂贵(设备和服务费用高,国内猪场难以承受)、主要依赖耳标(无接触视觉能力弱)、本地化服务不足(国内售后和定制化困难)、不符合中国猪场管理习惯 |
| 通用安防 +AI 方案(海康威视/大华AI开放平台、商汤/旷视畜牧行业方案) | 通用安防摄像头+AI算法平台(目标检测/行为分析),针对畜牧场景做定制化训练,部分提供猪只检测/计数/行为分析算法 | 猪只检测计数、异常行为报警(基于通用行为分析)、视频监控+AI叠加、与安防系统集成、部分提供猪只行为分析API | 已有安防系统的猪场升级、简单的猪只计数和异常监测、预算有限的场景 | 摄像头和平台成熟(安防级质量稳定)、成本较低(利用现有安防设备)、集成方便(与猪场现有监控系统对接);但行为分析能力弱(通用行为分析不是针对猪只优化,六大行为分类精度低)、个体跟踪和ReID能力不足(安防算法主要做人车,猪只外观相似导致跟踪不稳定)、定制化成本高(需要针对猪场场景重新训练算法,厂商配合度有限)、缺乏猪场业务理解(没有与饲喂/环控/繁育/疫病系统的深度集成) |
| 自研方案(大型养殖集团如牧原、温氏、新希望、正邦等自研或合作研发) | 自研算法(基于YOLO/OC-SORT/ST-GCN等开源框架,针对自有猪场数据训练)+定制硬件+内部系统集成,部分与高校/AI公司合作研发 | 根据集团自身需求定制的行为监测、健康预警、精准饲喂、繁育管理、疫病防控,与内部生产管理系统深度集成 | 大型养殖集团(百万头级),有技术团队和研发预算 | 定制化程度最高(完全匹配自有猪场流程和需求)、与内部系统深度融合(数据打通、业务联动)、数据自主可控(核心生产数据不外流)、长期成本低(自研系统边际成本低,适合大规模部署);但研发成本高(需要算法团队+硬件团队+猪场业务团队,初期投入数百万至数千万)、周期长(6-18个月研发+试点)、技术风险(自研算法精度可能不如专业厂商)、维护成本高(需要持续的技术团队维护和迭代) |
**方案选型建议:**①万头级以上大型养殖集团:考虑自研或与专业AI公司深度合作定制(如牧原模式),核心算法基于开源框架自研,硬件选用工业级设备,与内部生产管理系统深度集成,数据自主可控,长期成本低。初期可以先采购成熟方案试点,验证价值后再自研。②千头-万头级规模化猪场:优先选专业智慧养猪视觉方案(如视动世纪等),功能全面、有猪场服务经验、可以与现有管理系统对接,成本和效果平衡。核心群(母猪/种猪)可以加配智能耳标辅助个体识别和体温监测,育肥猪用纯视觉方案降低成本。③小型猪场/家庭农场/试点场景:优先选轻量方案------AI摄像头一体机或低端边缘盒子+开源算法(YOLOv8n+OC-SORT),先做基础的猪只计数、群体活动量监测、简单异常预警,验证价值后再逐步升级。智能耳标方案(只监测活动量和体温)也是低成本入门选择。④核心群/母猪舍/种猪测定:推荐"视觉+智能耳标"多模态融合方案------视觉提供六大行为分类和姿态/跛行检测,耳标提供可靠个体ID和体温/活动量数据,两者融合精度最高,适合高价值猪只的精细监测。发情检测和分娩预警是核心群最有价值的应用场景。⑤疫病防控需求强的猪场:推荐"视觉+红外热成像+音频"多模态方案------视觉检测行为异常(采食下降/活动减少),红外热成像检测体温升高(发热是疫病早期信号),音频检测咳嗽(呼吸道疾病早期症状),多模态融合实现疫病超早期预警,比单一模态提前1-3天发现异常。⑥预算有限但想尝试的猪场:可以先在1-2栋猪舍试点(部署4-8个摄像头+1个边缘盒子,成本1-3万元),验证行为监测和健康预警的实际效果(如是否能提前发现病猪、是否能减少死亡率、饲养员是否愿意使用),效果好再逐步推广到全场,避免一次性大规模投入的风险。
无论选哪种方案,关键成功因素是:①明确核心目标(是疫病早期预警?还是发情检测?还是精准饲喂?还是福利评估?不同目标需要不同的功能和精度);②数据质量(摄像头位置、光照、清洁度直接影响算法效果,需要确保图像质量);③饲养员配合(预警需要饲养员及时响应和处理,否则系统形同虚设,需要培训和管理配合);④持续迭代(算法和规则需要根据猪场实际数据持续优化,误报率要持续降低,不是一劳永逸);⑤系统集成(与现有饲喂/环控/管理系统打通,才能发挥数据价值,孤立的行为监测系统价值有限)。
九、应用场景
猪只行为实时监测技术适用于养猪生产的各个环节,不同场景的侧重点和需求不同:
①疫病早期预警与健康监测(核心价值场景):这是行为监测最核心的应用场景。猪只发病早期(亚临床阶段)往往没有明显的临床症状,但行为已经发生变化------采食下降、活动减少、休息增加、社交隔离、步态异常(跛行)、呼吸异常(犬坐/咳嗽)。研究表明,行为变化比临床症状(发热、腹泻、咳嗽)早1-3天出现,比死亡率上升早3-7天。通过7×24小时连续监测每头猪的六大行为,建立个体行为基线,实时检测行为异常,可以在疫病早期(亚临床阶段)发出预警,实现"早发现、早隔离、早治疗",减少疫病传播和经济损失。典型应用:·育肥猪舍呼吸道疾病预警(采食下降+活动减少+咳嗽音频+体温升高,提前2-3天预警);·仔猪腹泻预警(采食下降+活动减少+肛周污秽+排泄行为异常,提前1-2天预警);·肢蹄病预警(跛行检测+活动减少+休息增加,早期发现肢蹄问题及时治疗);·群体发病监测(同一栏舍多头猪只同时异常,提示传染病或环境问题,立即启动防控)。价值:死亡率降低10-30%(早期干预减少死亡)、治疗成本降低20-40%(早期治疗用药少、疗程短)、疫病传播风险降低(早隔离减少传染)、抗生素使用减少(早发现早治疗,减少预防性用药)。
②母猪发情检测与精准配种(高ROI场景):母猪发情检测是猪场繁育管理的关键环节,发情检测的及时性和准确性直接影响配种率、受胎率和产仔数。传统人工查情每天1-2次,容易漏检(母猪发情持续时间仅2-3天,最佳配种时间仅12-24小时),且依赖人工经验。行为监测系统可以7×24小时连续监测母猪行为,自动识别发情行为------活动量显著增加(比平时增加50-100%)、频繁走动、嗅探其他猪只、站立反射(静立反应,按压背部时站立不动)、接受爬跨、食欲下降、烦躁不安。系统检测到发情行为后自动提示最佳配种时间(发情后12-24小时),与繁育管理系统联动生成配种任务。研究表明,基于行为的发情检测比人工观察更及时准确,漏检率从20-30%降低到5%以下,受胎率提高5-10%,每头母猪每年多产0.5-1头仔猪,经济效益显著。典型应用:·后备母猪发情检测(初情期鉴定,适时配种);·经产母猪断奶后发情检测(断奶后3-7天发情,及时配种);·深部输精/人工授精时机提示(最佳配种时间窗口);·返情检测(配种后18-24天再次发情提示未受孕,及时复配)。价值:受胎率提高5-10%、产仔数提高0.5-1头/窝/年、非生产天数(NPD)减少5-10天、人工查情成本降低50%以上。
③母猪分娩预警与仔猪成活率提升:母猪分娩是猪场最关键的生产环节之一,分娩过程中的仔猪死亡(难产、窒息、被母猪压死)占仔猪断奶前死亡的30-50%。如果能提前预知分娩时间,及时接产,可以显著提高仔猪成活率。行为监测系统可以识别母猪分娩前的特征行为------频繁起卧(每小时起卧次数从正常2-3次增加到8-10次)、筑巢行为(叼草、拱地、整理窝)、食欲下降(分娩前12-24小时采食量减少50%以上)、烦躁不安、呼吸加快、尾部抬起。系统检测到分娩前行为后提前6-12小时发出接产预警,通知饲养员准备接产(保温灯、助产工具、仔猪护理用品),分娩过程中持续监测(难产预警------产仔间隔超过30-45分钟、母猪持续努责但产不出仔猪),分娩后监测母猪哺乳行为和仔猪吃奶行为(识别母猪拒绝哺乳、仔猪吃奶不足、仔猪被压风险)。典型应用:·产房母猪分娩预警(提前6-12小时通知接产);·难产预警(产仔间隔过长、母猪异常努责,及时助产);·哺乳行为监测(哺乳频次/时长,评估母猪母性和泌乳能力);·仔猪被压预警(母猪起卧时仔猪在母猪下方,及时提醒饲养员救助)。价值:仔猪成活率提高5-15%(减少难产死亡和压死)、弱仔率降低、母猪繁殖性能提升、产房夜间人工值守成本降低(系统预警替代通宵值守)。
④精准饲喂与饲料转化率优化:饲料成本占养猪总成本的60-70%,提高饲料转化率(FCR)是降低成本的关键。行为监测系统可以精确监测每头猪的采食行为------采食时长、采食次数、采食速度、采食节律、料槽旁停留时间(vs真正进食时间),与饲喂系统的下料量数据融合,计算每头猪的真实采食量和采食效率。结合视觉体重估算(深度相机/三维重建估算体高体长体重),计算每头猪的FCR(采食量/增重),识别高效个体(FCR低、增重快)和低效个体(FCR高、增重慢、可能有亚临床疾病或遗传问题)。基于采食行为数据实现精准饲喂------·个体饲喂调整(某头猪采食下降,自动调整饲料适口性或饲喂时间;某头猪采食过量,限制饲喂防止过肥);·饲喂时间优化(根据群体采食节律调整饲喂时间,在采食高峰前下料,减少饲料浪费和霉变);·分群饲养(根据采食行为和生长速度分群,同群猪生长速度一致,减少强弱差异和欺凌);·饲料配方优化(不同品种/阶段/性别的猪采食行为不同,优化配方提高适口性和消化率);·FCR遗传评估(种猪测定中,FCR是重要的选育指标,行为监测+自动称重可以精确测定每头种猪的FCR,用于选种选育)。价值:FCR降低0.1-0.2(每头猪节省饲料20-50kg)、饲料浪费减少10-20%、生长速度提高5-10%、种猪选育精度提高(FCR精确测定)。
⑤动物福利评估与合规认证:随着消费者对动物福利的关注和欧盟等市场的动物福利法规要求,猪场需要评估和证明动物福利水平。行为监测是动物福利评估最客观、最量化的手段------动物福利的"五大自由"(免于饥渴、免于不适、免于痛苦伤害疾病、表达正常行为、免于恐惧应激)都可以通过行为数据量化评估:·表达正常行为:正常的行为预算(休息50-70%、活动15-30%、采食2-5%、社交5-10%)、丰富的行为类型(不仅有休息和采食,还有社交、嗅探、探索、玩耍)、正常的活动范围(覆盖栏舍60%以上面积);·免于不适:热应激时的行为变化(扎堆减少、饮水增加、呼吸加快、活动减少)、冷应激时的扎堆增加、环境不适时的异常行为增加(咬尾、空嚼、反复走同一路线);·免于痛苦伤害疾病:跛行检测(肢蹄疼痛)、采食下降(疾病/疼痛)、社交隔离(疾病/弱势)、异常休息姿势(疼痛/疾病);·免于恐惧应激:异常攻击增加(应激)、刻板行为(长期应激)、活动量骤变(急性应激);·免于饥渴:采食/饮水行为异常(饥渴)。行为监测系统可以自动生成动物福利评估报告(行为预算、活动范围、异常行为发生率、攻击事件、跛行比例等),满足动物福利认证(如RSPCA Assured、Global Animal Partnership、中国动物福利认证)的要求,提升猪场品牌形象和产品溢价。价值:满足动物福利法规和认证要求、提升品牌形象和产品溢价(福利猪肉价格高10-30%)、减少异常行为(咬尾/攻击)造成的损失、改善猪只健康和生产性能(福利好的猪只生长快、发病率低)。
⑥猪场管理数字化与生产性能分析:行为数据是猪场数字化管理的核心数据之一,与生产数据(增重、FCR、死亡率、配种率、产仔数)、环境数据(温湿度、氨气、通风)、管理数据(免疫、用药、转栏、饲喂)融合,形成猪场完整的数据闭环,驱动精细化管理:·个体全生命周期档案(从出生到出栏,每头猪的行为数据+健康记录+生产性能,可追溯);·栏舍/猪舍对比分析(不同栏舍/猪舍的行为差异,识别管理问题和最佳实践);·生长预测(基于采食行为和活动量预测生长速度和出栏时间,优化出栏计划和销售节奏);·异常管理复盘(所有健康预警和异常事件的完整记录,定期复盘分析根因,持续优化管理);·员工绩效考核(饲养员负责的栏舍预警响应时间、异常处理率、死亡率等数据量化,用于绩效考核);·猪场数字化看板(实时展示猪场整体状态:在线设备、当前预警、各栏舍行为概览、环境参数、生产指标,场长远程掌握猪场情况)。价值:管理效率提升30-50%(数据驱动替代经验管理)、问题定位更精准(行为数据揭示管理问题)、决策更科学(基于数据而非直觉)、可追溯性增强(全生命周期数据满足食品安全追溯要求)。
⑦研究与教学应用:行为监测系统为动物科学、兽医学、畜牧工程等领域的研究提供客观、量化、大规模的行为数据采集手段:·动物行为学研究(猪只正常行为谱、行为节律、社交网络、认知行为、情绪行为的量化研究);·动物福利研究(不同饲养密度、环境丰富度、饲养方式对行为和福利的影响);·疫病发病机制研究(疫病发生发展过程中的行为变化规律,早期诊断标志物研究);·营养与饲料研究(不同饲料配方/添加剂对采食行为和生产性能的影响);·遗传育种研究(行为性状的遗传力分析、行为与生产性能的关联分析、耐粗饲/抗逆/温顺等行为性状的选育);·教学实训(畜牧兽医专业学生观察猪只行为、学习行为评估方法的实训工具)。价值:研究数据更客观(替代人工观察,减少观察者偏差)、数据量更大(7×24小时连续采集,样本量远大于人工观察)、研究效率更高(自动分析替代人工编码)、新发现可能性(人工观察不到的夜间行为、细微行为变化)。