基于YOLOv5的猪只行为实时监测系统设计与实现

发布时间:2026/7/26 11:29:37

基于YOLOv5的猪只行为实时监测系统设计与实现 1. 项目背景与核心价值养猪业作为传统农业的重要组成部分长期以来面临着人工巡检效率低下、异常行为发现滞后等问题。我在大三暑期实习期间曾亲眼目睹某大型养猪场因为未能及时发现母猪压死仔猪的行为导致单日损失超过3万元。这个经历让我意识到基于计算机视觉的猪只行为实时监测系统具有巨大的实用价值。YOLOYou Only Look Once作为当前最先进的实时目标检测算法之一其单阶段检测架构特别适合需要快速响应的农业监控场景。相比传统的Faster R-CNN等两阶段检测器YOLOv5在保持较高精度的同时推理速度可达到140FPS在RTX 3060显卡上这意味着我们可以用更低的硬件成本实现多路视频的实时分析。2. 系统架构设计2.1 整体技术方案系统采用B/S架构设计前端使用Vue.js实现可视化界面后端基于Flask框架搭建核心检测模块采用PyTorch实现的YOLOv5s模型。这种架构选择主要基于以下考虑轻量级模型YOLOv5s仅14MB适合部署在边缘设备Python生态完善便于快速开发调试Web界面方便农场管理人员远程查看数据流设计如下摄像头采集视频流RTSP协议OpenCV进行帧提取1080P25fpsYOLOv5进行行为检测结果可视化与异常报警2.2 关键技术创新点在标准YOLOv5基础上我们做了三个重要改进引入CBAM注意力机制模块使模型更关注猪只关键部位如头部、腿部采用K-means算法重新聚类锚框适配猪场监控的特殊视角设计多尺度特征融合结构提升对小目标如新生仔猪的检测精度实测表明改进后的模型在自建数据集上mAP0.5达到92.3%比基线模型提升6.8个百分点。3. 数据集构建与模型训练3.1 数据采集与标注我们联合山东某养猪集团采集了超过200小时的监控视频涵盖6个不同品种的猪只5类典型行为进食、饮水、躺卧、争斗、爬跨不同光照条件白天、夜间红外使用LabelImg工具进行标注时特别注意了对重叠个体采用遮挡处理标注法为每帧添加环境亮度标签保留至少30%的困难样本模糊、遮挡等情况最终得到的数据集包含12,458张标注图像类别分布如下行为类别样本数量占比进食4,81238.6%饮水1,95715.7%躺卧3,20525.7%争斗1,0348.3%爬跨1,45011.7%3.2 模型训练细节训练环境配置GPU: RTX 3090 (24GB显存)CUDA 11.1 cuDNN 8.0.5PyTorch 1.9.0关键训练参数# yolov5s_pig.yaml nc: 5 # 类别数 depth_multiple: 0.33 width_multiple: 0.50 anchors: [12,16, 19,36, 40,28, 36,75, 76,55] # 重新聚类的锚框 # 训练命令 python train.py --img 640 --batch 32 --epochs 300 --data pig.yaml --cfg yolov5s_pig.yaml --weights yolov5s.pt采用渐进式学习率策略初始lr0.01cosine衰减前3epochs进行warmup添加Label Smoothingε0.1防止过拟合4. 系统实现关键代码4.1 核心检测逻辑class PigBehaviorDetector: def __init__(self, model_path): self.model torch.hub.load(ultralytics/yolov5, custom, pathmodel_path, force_reloadTrue) self.model.conf 0.6 # 置信度阈值 self.model.iou 0.45 # NMS阈值 def process_frame(self, frame): # 图像预处理 img cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) results self.model(img, size640) # 行为分析 detections results.pandas().xyxy[0] behaviors defaultdict(int) for _, det in detections.iterrows(): behaviors[det[name]] 1 # 特殊行为判断 if det[name] mounting and det[confidence] 0.8: self.trigger_alarm(mounting, det) return results.render()[0], behaviors4.2 异常行为报警机制def trigger_alarm(self, behavior_type, detection): # 空间位置分析 x_center (detection[xmin] detection[xmax]) / 2 y_center (detection[ymin] detection[ymax]) / 2 # 时间连续性检查防止误报 if behavior_type in self.last_alarm_time: if time.time() - self.last_alarm_time[behavior_type] 10: return # 发送报警支持微信/短信/声光 alarm_msg f{behavior_type} detected at ({x_center:.0f},{y_center:.0f}) requests.post(ALARM_API, json{msg: alarm_msg}) self.last_alarm_time[behavior_type] time.time()5. 部署优化与性能测试5.1 边缘计算部署方案为适应猪场复杂的网络环境我们提供三种部署模式本地服务器部署配置Jetson Xavier NX性能同时处理4路1080P视频约15FPS/路功耗30W云端部署推荐配置AWS EC2 g4dn.xlarge成本约$0.526/小时按需计费混合部署边缘设备处理实时检测云端进行数据存储与长期分析5.2 性能对比测试测试环境Intel i7-11800H RTX 3060 Laptop GPU模型版本输入尺寸mAP0.5推理速度(FPS)显存占用(MB)YOLOv5s640×64085.5%1421,245改进版640×64092.3%1181,387YOLOv5m640×64089.7%952,156注意实际部署时应根据硬件条件调整输入尺寸。在Jetson设备上推荐使用416×416输入可提升约40%的推理速度。6. 常见问题与解决方案6.1 模型优化方向问题夜间检测精度下降明显解决方案添加红外图像数据增强随机亮度/对比度调整在模型前端增加低照度增强模块如Zero-DCE采用Temporal Filtering对连续帧结果进行平滑问题母猪压仔检测漏报解决方案增加俯视角度摄像头设计专门的空间关系判断算法添加压力传感器作为辅助判断6.2 工程实践技巧视频流处理优化# 使用线程池处理多路视频 from concurrent.futures import ThreadPoolExecutor with ThreadPoolExecutor(max_workers4) as executor: futures {executor.submit(process_stream, url): url for url in rtsp_urls}模型热更新技巧# 监控模型文件变化自动重载 while True: current_mtime os.path.getmtime(best.pt) if current_mtime ! last_mtime: reload_model() last_mtime current_mtime time.sleep(5)内存泄漏排查使用tracemalloc监控内存变化特别注意OpenCV的imencode/imdecode调用定期重启长时间运行的服务进程7. 项目扩展方向在实际部署过程中我们发现几个有价值的扩展方向个体识别系统结合猪只耳标进行ReID再识别构建个体行为档案实现精准饲喂管理健康状态预测分析进食/饮水频率变化检测异常步态如跛行体温异常监测结合热成像群体行为分析社会关系网络构建领地行为模式挖掘应激反应早期预警这个项目从构思到最终实现历时8个月期间经历了3次大的架构调整。最深刻的体会是农业AI项目必须深入一线场景单纯追求算法指标而没有解决实际痛点的系统注定难以落地。我们在山东某猪场部署的测试系统经过6个月运行已将仔猪死亡率降低了17%这或许就是技术最好的价值证明。

相关新闻