当前位置: 首页 > news >正文

舍饲环境下母羊产前典型行为识别方法解析【附代码】

✨ 长期致力于舍饲环境、母羊、产前行为、行为识别、福利化研究工作,擅长数据搜集与处理、建模仿真、程序编写、仿真设计。
✅ 专业定制毕设、代码
如需沟通交流,点击《获取方式》


(1)三轴加速度与红外传感器融合的数据采集装置:

设计可穿戴式项圈,集成MPU6050加速度计(采样率50Hz)和红外反射传感器(检测采食饮水)。装置采用低功耗模式,每15分钟发送一次数据。在内蒙古某舍饲羊场,对20只小尾寒羊母羊进行产前10天连续监测。加速度数据的X、Y、Z三轴分别对应母羊的左右、前后、上下运动。红外传感器安装在食槽上方,当母羊伸头采食时红外反射强度变化超过阈值200。装置续航能力达72小时,数据丢包率低于1.5%。

(2)改进小波阈值去噪与主成分分析特征降维:

针对加速度信号的冲击噪声,提出一种自适应小波阈值函数,阈值随分解层数递减(第一层阈值0.3,第五层0.1)。去噪后信噪比从12dB提升到28dB。提取时域特征(方差、峰度、偏度)和频域特征(主峰频率、频率能量、谱熵),共21维。使用主成分分析将特征压缩到6维,累积方差贡献率92%。实验表明,降维后BP神经网络训练速度提高40%,且识别率从69%提升到79%。

(3)递阶遗传算法优化的BP神经网络分类器:

针对趴卧与站立区分困难,采用K-means先聚类识别趴卧行为(准确率99%),剩余三种行为(站立、行走、刨地)由递阶遗传算法优化结构的BP网络处理。遗传算法同时优化网络层数(2-4层)、节点数(5-30)和学习率(0.01-0.5)。种群规模50,进化30代,适应度函数为验证集识别率。优化后的网络结构为3层(输入6,隐层18,输出3),识别率提升到89.1%。对站立时蹭栏杆等非标准动作,通过增加滑动窗口统计(窗口5秒,步长1秒)判断是否属于稳定站立,误检率从15%降到6%。采食行为由红外传感器识别,再用运动状态修正(如果同时有行走特征则判定为边走边吃,不计入纯采食),修正后识别率提高16%。

import numpy as np import pywt from sklearn.decomposition import PCA from sklearn.cluster import KMeans import genetic_algorithm as ga # placeholder class WaveletDenoiser: def __init__(self, wavelet='db4', level=4): self.wavelet = wavelet self.level = level def denoise(self, signal): coeffs = pywt.wavedec(signal, self.wavelet, level=self.level) sigma = np.median(np.abs(coeffs[-1])) / 0.6745 for i in range(1, len(coeffs)): threshold = sigma * np.sqrt(2*np.log(len(signal))) * (0.9**i) coeffs[i] = pywt.threshold(coeffs[i], threshold, mode='soft') return pywt.waverec(coeffs, self.wavelet) class FeatureExtractor: def __init__(self, window_sec=5, fs=50): self.window = window_sec * fs self.fs = fs def extract(self, acc_x, acc_y, acc_z): windows = np.array([acc_x, acc_y, acc_z]).T features = [] for axis in range(3): seg = windows[:, axis] var = np.var(seg) kurt = scipy.stats.kurtosis(seg) skew = scipy.stats.skew(seg) freq = np.fft.rfft(seg) power = np.abs(freq)**2 dom_freq = np.argmax(power[1:]) * self.fs / len(seg) energy = np.sum(power) features.extend([var, kurt, skew, dom_freq, energy]) return np.array(features) class GeneticBP: def __init__(self, input_dim=6, output_dim=3): self.input_dim = input_dim self.output_dim = output_dim self.population = [] def fitness(self, individual): hidden = individual[0] lr = individual[1] # train BP and return validation accuracy return np.random.random() # placeholder def evolve(self, n_gen=30): # simplified genetic operations self.population = [(np.random.randint(5,30), np.random.uniform(0.01,0.5)) for _ in range(50)] for gen in range(n_gen): scores = [self.fitness(ind) for ind in self.population] # selection, crossover, mutation best_idx = np.argmax(scores) best = self.population[best_idx] print(f'Gen {gen}: best accuracy {scores[best_idx]:.3f}') return best def classify_behavior(acc_features): # Kmeans for lying detection kmeans = KMeans(n_clusters=2, random_state=0).fit(acc_features.reshape(-1,1)) if kmeans.labels_[0] == 0: # assuming cluster0 is lying return 'lying' # otherwise use genetic BP return 'standing_or_walking' def main(): np.random.seed(42) signal = np.sin(2*np.pi*1*np.arange(500)/50) + 0.5*np.random.randn(500) denoiser = WaveletDenoiser() clean = denoiser.denoise(signal) extractor = FeatureExtractor() feat = extractor.extract(clean, clean*0.8, clean*0.5) print(f'Features shape: {feat.shape}') # behavior decision behavior = classify_behavior(feat[:6]) print(f'Classified behavior: {behavior}') ga_bp = GeneticBP() optimal = ga_bp.evolve(5) print(f'Optimal hidden nodes: {optimal[0]}, lr: {optimal[1]:.3f}') if __name__ == '__main__': main()

http://www.rkmt.cn/news/1463604.html

相关文章:

  • P16353 「Diligent-OI R3 A」说好不哭 题解
  • 从Push到Pull:搞懂Prometheus监控数据流的两种姿势,附Shell/Python推送实战
  • 2026云浮市权威认证贵金属回收 TOP5+黄金回收白银回收铂金回收门店地址电话推荐
  • 087、零售货架商品检测:密集排列、遮挡严重、类别极多的 SKU 检测方案
  • Codex中文网 | Codex CLI 中文指南
  • 一件卫衣的诞生:从纱线到成衣的全流程解析
  • 深度解析BestBlogs开源项目:基于GitHub Actions自动化构建个人技术博客与内容聚合平台的实战指南
  • 别再踩坑了!用VMProtect SDK 3.4为你的软件实现一机一码+时间锁(附完整注册机源码)
  • Logisim-evolution数字电路设计:从零开始到FPGA实现的完整指南
  • 2026年新消息:洞察国内扭王字块钢模市场格局与核心服务商推荐 - 2026年企业资讯
  • 微信小程序二维码生成终极指南:weapp-qrcode高效解决方案
  • Transformers 3.x 用户注意:本地加载bert-base-chinese模型,这几个版本兼容性坑别踩
  • 智能对账系统选型避坑清单(2024最新实测数据版):87%企业踩中的AI集成断点全曝光
  • 测绘日常:ArcGIS 字段计算器实现固定前缀 + 10 位补零 BSM 自动编号
  • 3分钟免费安装AI象棋教练:Vin象棋让棋艺提升变得简单快速
  • 【国家级信创认证】:首套通过上交所智能审核适配测试的AI上市辅助平台,内测资格最后47席
  • 别再乱设max-http-header-size了!SpringBoot内嵌Tomcat的这几个Connector参数详解与避坑指南
  • 星穹铁道自动化助手:三月七小助手完整使用指南
  • 2026年企业破产重整律师事务所服务解析:炜衡密云分所核心优势解读 - 商业科技观察
  • Labview视觉开发环境搭建保姆级教程(含VDM/VAS安装避坑指南)
  • 告别JSON对比的烦恼:这个可视化工具如何帮你节省90%调试时间
  • 让音乐看得见:用Lano Visualizer打造动态桌面音频可视化体验
  • 实战集成:利用快马ai实现cad安装与项目管理系统的自动化对接
  • 【状态估计】电力系统状态估计中的异常检测与分类附Matlab代码
  • 2026年当下江苏省纳米釉面漆实力厂家怎么选?深度解析技术壁垒与市场适配逻辑 - 2026年企业资讯
  • Eledoisin-Related Peptide;KFIGLM
  • Forza Mods AIO:终极免费修改工具,彻底释放《极限竞速》游戏潜能 [特殊字符]
  • 2026年河北专业的阻氧PB管厂商:采暖系统安全与效率的守护者 - 2026年企业资讯
  • 从DHT11到DHT12:51单片机温湿度监测项目,我踩过的那些坑和最佳实践
  • Node.js与Express框架:快速构建后端应用