news 2026/5/22 0:26:15

计算机视觉与深度学习融合的群养猪行为识别与分类算法【附算法】

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
计算机视觉与深度学习融合的群养猪行为识别与分类算法【附算法】

✨ 长期致力于计算机视觉、深度学习、攻击识别、多物体玩耍识别、饮水和玩耍饮水器分类、进食识别、行为量化研究工作,擅长数据搜集与处理、建模仿真、程序编写、仿真设计。
✅ 专业定制毕设、代码
如需沟通交流,点击《获取方式》


(1)时空注意力卷积网络攻击检测:

构建基于SlowFast双路网络与通道时空注意力融合的模型,命名为SF-AT。快速路径以高帧率(30fps)捕获运动细节,慢速路径以低帧率(6fps)捕获全局语义。引入通道时空注意力模块,在时空维度上自适应校准特征权重。在自建群养猪视频数据集上训练,包含二百四十小时标注数据,攻击行为片段标注七千二百段。训练采用交叉熵损失和在线难例挖掘,初始学习率零点零零一,共六十轮。测试集上攻击识别准确率达到百分之九十八点二,误报率百分之二点三。相比基线SlowFast网络,准确率提高四点一个百分点。模型在Jetson Xavier NX边缘设备上推理速度为二十五帧每秒,满足实时监控要求。采用时序动作定位网络进一步输出攻击起止时间,平均时间交并比达到零点七八。

(2)多目标交互图卷积玩耍行为识别:

针对猪与多种玩具(篮球、链条、橡胶棒)的交互,设计图卷积网络GCN-Play。将每头猪的头部、躯干、四肢关键点检测(使用HRNet)和玩具位置作为图节点,边表示空间距离和交互可能性。图卷积层数三层,隐层维度一百二十八。在七百段玩耍视频上训练,识别玩耍与非玩耍的准确率为百分之九十六点五,对玩具类型分类准确率为百分之九十一点三。进一步引入时间卷积网络捕捉动作序列,实现对玩耍强度的量化(轻度、中度、剧烈),kappa系数为零点八六。该方法首次实现了对群体中多物体玩耍行为的自动识别,玩耍持续时间与人工记录相关系数零点九四。

(3)轻量化双流网络饮水分辨与进食时长估计:

为解决饮水与玩饮水器难以区分的问题,设计双流网络WaterNet。空间流采用MobileNetV3处理单帧图像识别饮水区域,时间流采用时序差分卷积处理光流图识别头部摆动模式。融合层使用门控机制自适应加权。在保育猪圈采集数据,标注饮水事件三千二百次,玩饮水器事件一千八百次。模型分类准确率百分之九十三点四,其中饮水召回率百分之九十五点二。进食识别方面,基于YOLOv5检测猪头部和食槽区域,提取头部与食槽的交并比序列,采用隐半马尔可夫模型分割进食回合。进食时间估计与人工测量对比,绝对误差小于七秒每餐。模型已部署到猪场自动饲喂系统,实时生成每头猪的日采食时长曲线,帮助早期发现病弱个体。

import torch import torch.nn as nn import torch.nn.functional as F from torchvision.models import mobilenet_v3_small class SlowFast_AT(nn.Module): def __init__(self, num_classes=2): super().__init__() self.slow_path = mobilenet_v3_small(pretrained=True) self.fast_path = mobilenet_v3_small(pretrained=True) # replace first conv to accept different temporal strides self.slow_path.features[0][0] = nn.Conv2d(3, 16, kernel_size=7, stride=2) self.fast_path.features[0][0] = nn.Conv2d(3, 16, kernel_size=7, stride=1) # temporal attention module self.temporal_attn = nn.Sequential( nn.AdaptiveAvgPool3d((1,1,1)), nn.Conv3d(1280, 64, kernel_size=1), nn.ReLU(), nn.Conv3d(64, 1280, kernel_size=1), nn.Sigmoid() ) self.fc = nn.Linear(1280*2, num_classes) def forward(self, x_slow, x_fast): # x_slow shape: (B,3,T_slow,H,W) , T_slow = 8 # x_fast shape: (B,3,T_fast,H,W) , T_fast = 32 b,_,t_s, h,w = x_slow.shape x_slow = x_slow.permute(0,2,1,3,4).reshape(b*t_s, 3, h, w) out_slow = self.slow_path.features(x_slow) out_slow = out_slow.view(b, t_s, -1).mean(dim=1) b,_,t_f, h,w = x_fast.shape x_fast = x_fast.permute(0,2,1,3,4).reshape(b*t_f, 3, h, w) out_fast = self.fast_path.features(x_fast) out_fast = out_fast.view(b, t_f, -1).mean(dim=1) concat = torch.cat([out_slow, out_fast], dim=1) attn = self.temporal_attn(concat.unsqueeze(-1).unsqueeze(-1)) return self.fc(concat * attn.squeeze()) class GCN_Play(nn.Module): def __init__(self, in_features=64, hidden=128, num_classes=2): super().__init__() self.gc1 = nn.Linear(in_features, hidden) self.gc2 = nn.Linear(hidden, hidden) self.fc = nn.Linear(hidden, num_classes) self.adj = None def forward(self, x, adj): # x: (batch, nodes, in_features) x = F.relu(self.gc1(x)) x = torch.bmm(adj, x) # graph convolution x = F.relu(self.gc2(x)) x = torch.bmm(adj, x) x = x.mean(dim=1) return self.fc(x) class WaterNet(nn.Module): def __init__(self): super().__init__() self.spatial = mobilenet_v3_small(pretrained=True) self.temporal = nn.Sequential( nn.Conv3d(3, 32, kernel_size=(3,3,3), padding=1), nn.ReLU(), nn.AdaptiveAvgPool3d((1,1,1)) ) self.gate = nn.Sigmoid() self.fc = nn.Linear(1280+32, 2) def forward(self, rgb_frame, optical_flow_clip): spatial_feat = self.spatial.features(rgb_frame).mean([2,3]) flow_feat = self.temporal(optical_flow_clip).view(rgb_frame.size(0), -1) alpha = self.gate(spatial_feat) fused = alpha * spatial_feat + (1-alpha) * flow_feat return self.fc(fused)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/22 0:26:13

涡流检测驱动的发动机气门硬度分选技术【附算法】

✨ 长期致力于核环境机器人、机器人运动学、机械臂振动抑制、自适应动力学控制研究工作,擅长数据搜集与处理、建模仿真、程序编写、仿真设计。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流,点击《获取方式》 (1)核辐射环境下涡流检测机…

作者头像 李华
网站建设 2026/5/22 0:21:24

Kimi LeetCode 2547. 拆分数组的最小代价 C++实现

这道题的核心思路是动态规划 记忆化搜索。我们定义 dfs(i) 为从下标 i 开始拆分数组的最小代价,答案即为 dfs(0)。关键观察子数组的重要性 k trimmed(subarray).length。其中 trimmed 操作会移除子数组中只出现一次的数字。如果我们用 cnt[x] 记录数字 x 在当前子…

作者头像 李华
网站建设 2026/5/22 0:21:15

【PC】MToolsv0.1.0一款宝藏级电脑多媒体处理工具箱

【PC】MToolsv0.1.0一款宝藏级电脑多媒体处理工具箱 链接:https://pan.xunlei.com/s/VOt9djutjtaudN70tesyS3QYA1?pwdhpbr# 说明:一款功能强大、界面精美的现代化桌面工具,集成图片处理、音视频编辑、AI 智能工具、开发辅助等功能&#xff0…

作者头像 李华
网站建设 2026/5/22 0:20:17

新旧版鸿蒙系统的区别详解——升级前必读指南

新旧版鸿蒙系统的区别详解——升级前必读指南纯血鸿蒙同旧版鸿蒙的主要区别在于:老版本底层依赖Android框架进行兼容,而新一代则实现了完全自主研发。HarmonyOS 5标志着纯血鸿蒙时代的开启,目前最新的HarmonyOS 6.1版本功能完善。一、简明对比…

作者头像 李华
网站建设 2026/5/22 0:15:13

从零开始:5分钟掌握Mermaid Live Editor,告别复杂图表绘制烦恼

从零开始:5分钟掌握Mermaid Live Editor,告别复杂图表绘制烦恼 【免费下载链接】mermaid-live-editor Edit, preview and share mermaid charts/diagrams. New implementation of the live editor. 项目地址: https://gitcode.com/GitHub_Trending/me/…

作者头像 李华