母猪产仔早知道,这次南农用上了英伟达边缘 AI Jetson

news2024/12/25 13:55:49

内容一览:对养猪业而言,母猪产仔是其中关键的一环。因此,提高猪仔成活率、确保母猪分娩过程安全,成为重要课题。现有的 AI 监测方式,存在着高设备成本与信息传输不稳定的问题,南京农业大学研究人员,利用一种轻量级深度学习方式,对母猪分娩这一过程进行早期预警和有效监测,降低成本的同时,提升了监测准确率。

关键词:嵌入式开发板 轻量级深度学习

本文首发于 HyperAI 超神经微信公众平台~

作者|alice

编辑|三羊

我国生猪养殖业规模居全球首位,但产业整体依旧面临着养殖水平较差的问题。对于很多大型养猪场,最关键的是在提高猪仔成活率的同时降低成本。传统方法靠人力监管难度大且主观性强,面对母猪分娩过程中难产、猪仔窒息等一系列问题,难以及时有效地处理。

近几年,AI 监控已成为解决这一问题的重要方法。其原理大多是借助云计算为基础的深度学习来进行监控,然而这一方法对设备与网络宽带要求高,具有很强的限制性与不稳定性。

据中国养猪网介绍,母猪在分娩前 12-24 小时内,由于催产素或催乳素的作用,往往会表现出筑巢行为,且姿势变换频率增加。**基于此,实验团队通过 YOLOv5 算法设计出一个监测母猪姿势与猪仔出生的模型,并部署在英伟达 Jetson Nano 开发板上,**从而在复杂场景中对该过程进行监测和分析,具有低成本、低延迟、高效率、易实现的特点。

目前这一成果于 2023 年 1 月发表于《Sensors》期刊,标题为:「Sow Farrowing Early Warning and Supervision for Embedded Board Implementations」。
在这里插入图片描述论文已发表于《Sensors》期刊。

论文地址:
https://www.mdpi.com/1424-8220/23/2/727

实验概述

数据与处理

视频数据来自江苏宿迁与靖江两个养殖场,**共收集了 35 头围产期母猪的视频数据。**其中靖江猪场的 11 头母猪的数据记录于 2017 年 4 月 27 日至 5 月 13 日,宿迁猪场的 24 头母猪的数据记录于 2020 年 6 月 9 日至 15日。母猪被随机放置在特定尺寸 (2.2m x 1.8m) 的产床之中,视频数据由摄像头 24 小时连续记录。

流程如下:
在这里插入图片描述图 1: 视频采集流程图

接下来,对数据进行预处理。实验团队首先筛选出母猪分娩前后一天录制的视频,然后用 Python 和 OpenCV 将其处理成图像数据。**利用标签软件对获取的 12,450 张图像中的母猪姿势及新生仔猪数据进行手动标注和数据增强,**得到 32,541 张图像数据组成数据集。

数据增强 (Data Augmentation):此处指裁剪、平移、旋转、镜像、改变亮度、添加噪音和剪切)

这个数据集被分为 5 个类别:4 种母猪姿势(侧卧、胸骨卧、站立和坐)和仔猪,训练集、验证集和测试集的比例为 7 : 1 : 2。
在这里插入图片描述
图 2: 经过数据增强后的效果

实验模型

实验团队利用 YOLOv5s-6.0 建立了一个检测母猪姿势和仔猪的模型。此模型由 4 个部分组成:

Input:图像输入

BackBone:母猪和仔猪图像特征的提取

Neck:图像特征的融合

Prediction:预测(因母猪和仔猪的体型差异较大,这一部分使用了 3 种不同的特征图 (feature map),以进行大、中、小目标对象的检测)
在这里插入图片描述图 3: YOLOv5s 算法的网络结构

a:CBS 模块细节

b:Res-unit 模块细节

c:CSP1_X 和 CSP2_X 模块细节结构

d:SPPF 模块细节结构

实验团队将算法部署在英伟达推出的 Jetson Nano 系列嵌入式 AI 计算平台,并利用 TensorRT 来优化模型,使其后续在嵌入式开发板上的运行具有更高的吞吐量和更低的延迟,同时避免了网络传输过程中可能存在的数据泄漏。
在这里插入图片描述

图 4: TensorRT的工作流程

具体参数如下:

模型训练环境:Ubuntu 18.04 操作系统,Intel® Xeon® Gold 5118 @ 2.30 GHz CPU,NVIDIA Quadro P4000 GPU,8 GB 显存,64 GB 内存,2-TB 硬盘,PyTorch 1.7.1 和 Torchvision 0.8.2 深度学习框架,CUDA 版本 10.1。

模型部署环境:适配 ARM 的 Ubuntu 16.04 操作系统,4 核 ARM A57 @ 1.43 GHz CPU,128 核 Maxwell 架构GPU,4 GB memory,JetPack 4.5,Cuda10.2.89,Python 3.6,TensorRT 7.1,Opencv 4.1.1,CMake 3.21.2 深度学习环境。

模型参数:(1) 对于 YOLOv5 训练,设置 epoch 300,learning_rate 0 .0001,batch_size 16;(2) 对于 TensorRT 优化网络,batch_size 为 1,精度 fp16。

最后实验团队使用精度 (precision)、召回率 (recall rate) 和检测速度 (detection speed) 等指标对不同算法进行了性能评估。

其中,精度及召回率可用于衡量算法检测所有类别数据的能力,包括 4 种母猪姿势(侧卧、胸骨卧、站立和坐)及新生小猪;模型大小及检测速度则用于衡量该算法是否适合部署在嵌入式设备上。

计算公式如下:
在这里插入图片描述
TP:正样本 (positive sample) 的正确预测数

FP:正样本的错误预测数

FN:负样本 (negative sample) 的错误预测数

实验结果

模型性能

实验团队发现,在模型训练的 300 个 epoch 中,随着迭代周期增加,精度和召回率总体呈上升趋势。同时可发现,进行数据增强后的 YOLOv5s 模型的精度和召回率始终较高。
在这里插入图片描述

图 5:YOLOv5s 检测模型的精度和召回率

a:精度 (precision)

b:召回率 (recall)

橘线:经过数据增强后的 YOLOv5s 模型的精度/召回率

蓝线:未经数据增强的 YOLOv5s 模型的精度/召回率

实验中,平均精度 (mAP) 被用来评估该算法检测所有类别的能力。实验团队在评估 YOLOv5s 算法的同时,还横向对比了 YOLOX-nano 和 NanoDet-m 两种算法的性能,结果发现,YOLOX-nano 和 NanoDet-m 的检测速度略快于 YOLOv5s,但精度较低,存在对仔猪漏检和误检的情况。而 YOLOv5s 算法对不同尺寸的目标检测效果良好,模型在图像、本地视频和摄像头的平均检测速度上与其他两种相当。并且,经过数据增强的 YOLOv5s 模型具有最高的精度和召回率,分别为 0.982 和 0.937。
在这里插入图片描述
表 1:不同算法对母猪姿势和仔猪检测的评价指标

为了测试模型的的泛化能力 (generalization ability) 与抗干扰能力,实验团队在训练模型时候将其中一头母猪保留作「新样本」,从中选择了 410 张包含不同复杂场景的图像对模型进行测试。结果显示,母猪姿势的漏检和误检主要受到光照变化影响;仔猪主要受到热灯开启的影响,即强光下的仔猪难以识别;第一只仔猪出生时间和不同颜色热灯场景对模型的检测能力影响较小。

在这里插入图片描述
表 2: YOLOv5s 模型在复杂环境下的测试情况

左二栏:母猪姿势的漏检率在复杂光照下最高

左三栏:母猪姿势的误检率在复杂光照下与夜间开启热灯的情况下较高

左四栏:仔猪误检数量在复杂光照下和夜间热灯开启的情况下较高

左五栏:仔猪漏检数量在夜间热灯开启的情况下较高

在这里插入图片描述
图 6: 复杂环境图像测试效果

a:复杂光照下

b:第一只仔猪出生

c:不同颜色的热灯下

d:夜间热灯开启

部署前后

实验团队将模型部署在英伟达 Jetson Nano 后,能够准确地对母猪姿势以及猪仔进行检测。比较测试结果后发现,虽然该模型部署在英伟达 Jetson Nano 后精度上出现了微小的降低,但是其速度却提升了 8 倍以上。

在这里插入图片描述

表 3:模型测试效果对比

左一栏:模型的格式

左二栏:模型部署平台,Quadro P4000 为对比测试所用平台。

嵌入式开发板上的 GPU 利用率限制了该模型的实际应用能力。下图展示了模型在嵌入式开发板上检测图像和视频目标时的 GPU 利用率。由于需要对视频流进行解码处理,因此在检测视频时的 GPU 利用率高于检测图像时的利用率,但这并不影响模型的性能。测试结果表明,研究中的模型可以应用于不同的生产场景。
在这里插入图片描述

图 7:检测过程中 GPU 利用率

(a) 图像检测中 GPU 的利用率

(b) 视频检测中 GPU 的利用率

检测结果

实验团队通过对 22 头母猪的数据进行测试和分析,**得出产前 48 小时至产后 24 小时母猪平均姿势转换频率。**根据变化频率(下图所示),团队将模型的预警策略归纳为:

1. 姿势转换频率超上限值(17.5 次/小时)和低于下限值(10 次/小时)时发出警报。

2. 为了减少母猪日常活动对预警的影响,上限值或下限值必须超过 5 小时。

对样本的测试表明,该模型能够在产仔开始前 5 小时发出警报,预警时间与产仔实际时间误差为 1.02 小时。
在这里插入图片描述

图 8: 母猪产前 48 小时至产后 24 小时平均姿势转换率分析图

(a) 平均姿势转换率变化范围

(b) 平均姿势转换频率

产前 48 小时至产前 24 小时,此期间母猪活动正常

产前 24 小时至产前 1 小时,姿势转换频率逐渐增加,后逐渐减少

产后 1 小时至 24 小时,姿势转换频率接近 0,后略有增加

当首个新生仔猪被检测到后,分娩警报就会被触发,显示「开始分娩!起始时间:XXX」。此外,LED 灯闪烁也可以帮助饲养员快速定位正在分娩的母猪,判断是否需要人工干预。

但是当检测速度过高时,仔猪往往被错误地检测到。因此,为了实现实时检测,减少误报,实验团队采取了「连续三次检测法」。只有连续三次检测到新生仔猪时,才判断为仔猪。此方法误报次数为 1.59 次,传统单次检测法则为 9.55 次。误报次数明显下降,总体平均准确率为 92.9%。

AI 养猪:智慧养殖新纪元

我国作为全球生猪养殖大国,2015 年至 2018 年,生猪年出栏量为 7 亿头左右。但近年来,受到猪瘟等影响,生猪存栏量及出栏量不断有较大波动。据已发布的行业研究数据,近年来生猪养殖散户比例不断下降,规模化程度不断提高,因此要求更高效集约的养殖技术应用到生猪养殖业中。
在这里插入图片描述

在国内,AI 养猪已有可靠产品。阿里云联合艾博机器、旗硕科技推出 AI 养猪解决方案,满足了多元场景的需求。京东农牧智能养殖方案基于 AI、物联网等技术,实现了「猪脸识别,全链溯源」。AI 带来的更智能、更精细的养殖模式正在逐渐推广。

然而目前 AI 养猪的推广还面临着费用高、操作较为复杂等亟待解决的问题,如何让更多的养猪场敞开怀抱接纳 AI,恐怕还有很长的路要走。

本文首发于HyperAI 超神经微信公众平台~

参考链接:

[1]https://www.163.com/dy/article/HCSQN810055360T7.html

[2]https://xueshu.baidu.com/usercenter/paper/show

[3]https://www.aliyun.com/solution/govcloud/ai-pig

[4]http://www.dekanggroup.com/index/news/detail/id/182.html

[5]https://www.thepaper.cn/newsDetail_forward_3695180

[6]https://reurl.cc/mDKyEM

[7] 丁奇安,刘龙申,陈佳,太猛,沈明霞. 基于 Jetson Nano 的哺乳期仔猪目标检测[J/OL]. 农业机械学报.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/860740.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Kali Hyper-V安装正常启动后 黑屏 只能进命令模式

问题: Hyper-V安装虚拟机Kali系统一切安装正常, 没有出现错误. 安装成功后重启,只能进入命令模式,tt1-tt6,进不去GUI桌面. 尝试: 一代二代虚拟硬盘都试过,同样问题,只能开进后进入命令模式,在命令模式下一切运行正常, 也修复过系统 GNOM等的,不管用. 以下为国外论坛给的建议,尝…

Qt 文件对话框使用 Deepin风格

当你在Deepin或UOS 上开发 Qt 程序时,如果涉及到文件对话框功能,那么就会遇到调用原生窗口的问题。 如果你使用的是官方的Qt版本,那么在Deepin或者UOS系统上,弹出的文件对话框会是如下这样: 而Deepin或UOS系统提供的默…

【AI理论学习】手把手推导扩散模型:Diffusion Models(DDPM)

手把手推导扩散模型:Diffusion Models(DDPM) DDPM理论回顾前置知识过程详解Forward ProcessReverse Process DDPM算法伪代码训练部分采样部分 总结一下 参考链接 在这篇博客文章中,我们将深入研究 去噪扩散概率模型(也称为 DDPM&…

利用Simulink Test进行模型单元测试 - 1

1.搭建用于测试的简单模型 随手搭建了一个demo模型MilTestModel,模型中不带参数 2.创建测试框架 1.模型空白处右击 测试框架 > 为‘MilTestModel’创建 菜单 2.在创建测试框架对话框中,点击OK,对应的测试框架MilTestMode_Harness1就自动…

js玩儿爬虫

前言 提到爬虫可能大多都会想到python,其实爬虫的实现并不限制任何语言。 下面我们就使用js来实现,后端为express,前端为vue3。 实现功能 话不多说,先看结果: 这是项目链接:https://gitee.com/xi1213/w…

时间复杂度与空间复杂度的详解

目录 1.时间复杂度 2.时间复杂度计算例题 3.空间复杂度 1.时间复杂度 算法中的基本操作的执行次数,为算法的时间复杂度。 如何表达 时间复杂度? 大O的渐进表示法 实际中我们计算时间复杂度时,我们其实并不一定要计算精确的执行次数&#xf…

105. 从前序与中序遍历序列构造二叉树

题目描述 给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。 示例 1: 输入: preorder [3,9,20,15,7], inorder [9,3,15,20,7] 输出: [3,9,20,null,n…

【高频面试题】多线程篇

文章目录 一、线程的基础知识1.线程与进程的区别2.并行和并发有什么区别?3.创建线程的方式有哪些?3.1.Runnable 和 Callable 有什么区别?3.2.run()和 start()有什么区别? 4.线程包括哪些状态,状态之间是如何变化的4.1.…

一文详述流媒体传输网络MediaUni

一张「多元融合」的网络。 黄海宇|演讲者 大家好,我是阿里云视频云的黄海宇,今天分享主题是MediaUni——面向未来的流媒体传输网络设计与实践。 下面我将会从应用对流媒体传输网络的要求、MediaUni定位与系统架构、MediaUni技术剖析、基于Me…

vr虚拟仿真消防模拟演练提升受训者的安全观念和防范技能

纵观多年来的火灾事故教训得知,火灾发生的原因复杂多样,仅采取单一教育形式无法达到预期效果。消防安全重在预防,VR消防模拟演练系统将火灾安全问题,经采集和汇集处理,以可视化的形式在安全培训平台上进行实时展现&…

微服务与Nacos概述-3

流量治理 在微服务架构中将业务拆分成一个个的服务,服务与服务之间可以相互调用,但是由于网络原因或者自身的原因,服务并不能保证服务的100%可用,如果单个服务出现问题,调用这个服务就会出现网络延迟,此时…

基于STM32 FOC下桥三电阻采样方式的电机相电流重构方法

文章目录 1、本文中的PWM生成模式2、 注意事项3、与SVPWM相关的问题4、采样点的选择4.1、在低调制系数时(1)4.2、在高调制系数时(2)4.3、在高调制系数时(3)4.4、在高调制系数时(4) 5…

Oracle 使用 CONNECT_BY_ROOT 解锁层次结构洞察:在 SQL 中导航数据关系

CONNECT_BY_ROOT 是一个在 Oracle 数据库中使用的特殊函数,它通常用于在层次查询中获取根节点的值。在使用 CONNECT BY 子句进行层次查询时,通过 CONNECT_BY_ROOT 函数,你可以在每一行中获取根节点的值,而不仅仅是当前行的值。 假…

Window下安装MinGW64

欢迎来到我的酒馆 介绍Windows下,安装MinGW64。 目录 欢迎来到我的酒馆二.MinGW64三.配置系统环境变量 二.MinGW64 从sourceforge下载mingw64, sourceforge下载MinGW https://sourceforge.net/projects/mingw-w64/files/mingw-w64/mingw-w64-release/ 下…

效率指数级提升的Intellij IDEA快捷键集合

温馨提示:全文有18个小技巧,为了阅读体验,可以直接先看文章目录。 1,打开一个文件中的所有方法展示框 CtrlF12 Alt7 2,打开一个类的所有使用位置 AltF7 3,打开一个类在项目使用的位置 CtrlAltF7 4&#…

谁才是真正的协议之王?fastjson2 vs fury

文章目录 写在前面简单介绍官网和引入设备,环境及样本设备JDK样本 测评数据包体大小序列化反序列化垃圾回收JIT优化耗时 结论序列化对比反序列化对比包体压缩比上API易用性上多语言生态上垃圾回收上JIT优化耗时上 综述 写在前面 前阵子,我们写过一篇关于…

Tomcat 部署及优化

Tomcat概述 Tomcat 是 Java 语言开发的,Tomcat 服务器是一个免费的开放源代码的 Web 应用服务器,是 Apache 软件基金会的 Jakarta 项目中的一个核心项目,由 Apache、Sun 和其他一些公司及个人共同开发而成。在中小型系统和并发访问用户不是很…

Vite 创建 Vue项目之后,eslint 错误提示的处理

使用 npm create vuelatest创建 vue 项目(TS)之后,出现了一些 eslint 错误提示,显然,不是代码真实的错误,而是提示搞错了。 vuejs/create-vue: 🛠️ The recommended way to start a Vite-pow…

利用NtDuplicateObject进行Dump

前言 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。(本文仅用于交流学习) 这是国外老哥2020年提出的一种蛮有意思的思路。 我们先来看看大致的思路是…

Technical debt (技术负债 / 技术债)

Technical debt (技术负债 / 技术债) In software development, or any other IT field (e.g., Infrastructure, Networking, etc.) technical debt (also known as design debt or code debt) is the implied cost of future reworking required when choosing an easy but li…