奶牛个体识别 奶牛身份识别

news2024/10/5 19:20:20

融合YOLOv5s与通道剪枝算法的奶牛轻量化个体识别方法
Light-weight recognition network for dairy cows based on the fusion of YOLOv5s and channel pruning algorithm

论文链接 知网链接 DOI链接

该文章讨论了奶牛花斑光照条件、不同剪枝方法、不同剪枝率对准确率的影响。

引用格式:
许兴时,王云飞,华志新,等. 融合YOLOv5s与通道剪枝算法的奶牛轻量化个体识别方法[J].农业工程学报,2023, 39(15): 153-163 doi: 10.11975/j.issn.1002-6819.202303122

XU Xingshi, WANG Yunfei, HUA Zhixin, et al. Light-weight recognition network for dairy cows based on the fusion of YOLOv5s and channel pruning algorithm[J]. Transactions of the Chinese Society of Agricultural Engineering (Transactions of the CSAE), 2023, 39(15): 153-163 doi: 10.11975/j.issn.1002-6819.202303122

相关视频资料:超链接
https://www.bilibili.com/video/BV1ii4y1C75h/?vd_source=d68da64987fce61a59890c929d25cd3d

摘要:

实时准确地识别奶牛个体身份是构建完善的奶牛精准养殖技术架构的先决条件。如何在快速精准识别奶牛个体的同时保证模型的轻量化是至关重要的。**本文提出了一种在低计算量和低参数量条件下快速准确识别奶牛个体身份的方法。**研究采用YOLOv5s作为原始模型,利用BN层中缩放因子对模型中通道的重要性进行判断并剪除不重要的通道,从而降低网络复杂度。为了更加有效地压缩模型,本研究在损失函数中增加稀疏损失项,实现模型通道的稀疏化。测试试验结果表明,剪枝后的模型平均精度mAP为99.50%,计算量为8.1 G,参数量为1.630 M,每秒帧数为135.14 帧。相比其他具有代表性的目标检测模型,本文方法拥有最小的模型复杂度。此外,相比其他模型,本文方法对奶牛斑纹特征依赖程度更低,在低照度条件下有着更加出色的表现。考虑该方法具有快速、准确、鲁棒、低计算量和低参数量的特点,在推进养殖场中奶牛精细化养殖方面具有巨大潜能。

材料部分

在这里插入图片描述

方法部分

本研究在这一部分的技术路线如下图所示。首先,利用手工标准的数据集训练奶牛个体识别YOLOv5s网络。其次, 对已得到的奶牛个体识别YOLOv5s网络进行稀疏训练、通道剪枝和微调操作,最终在保证准确度的前提条件下,减小模型大小、提高运行速度,最终实现实时准确的多目标奶牛个体识别。
技术路线图


选用YOLOv5s作为基础网络。
按照功能,网络结构可分为Backbone、Neck、Head三部分。Backbone主要由Focus、Conv和C3组成,作用是将图像中信息进行提取并供后面的网络使用。Neck的作用是将提取出的特征进行融合与强化。由于高层特征图感受野大,相较于低层特征图通常语义信息更强,位置信息较差,为了强化语义信息和特征信息的融合,YOLOv5采取FPN+PAN结构搭建Neck。Head部分的作用是利用之前所得到的特征实现检测。

为获得用于奶牛个体识别的YOLOv5s网络, 2509张图像和2509个对应的标签文件所组成的训练集被使用。本研究在训练YOLOv5 时设定的参数如表3所示,为减小网络训练时的运算量,本文将训练集图像尺寸缩小为640px×640px,batch-size大小设定为8,选取随机梯度下降算法(SGD)对模型进行调优,初始学习率设置为0.001,并使用余弦退火衰减算法对学习率更新调整,类别数设置为91,epoch的数量设定为300。模型每经历一个epoch后,用验证集对当前模型效果进行评估,并保存本次训练得到的权重文件。模型训练结束后,保留模型训练效果最好的权重文件。

在YOLOv5s网络训练的过程中,模型首先需要进行前向传播计算损失值,其次通过反向传播更新模型参数使损失值逐步降低,实现预测结果与实际标签之间差距的逐步接近。本研究中YOLOv5的损失值由分类损失、定位损失和置信度损失三个部分组成,分类损失使用BCE Loss计算物体的真实类别概率和预测类别概率之间的差异;定位损失使用GIOU_loss来衡量预测框和B-Box之间大小和位置的偏差程度;置信度损失使用BCE Loss来量化模型能够正确判断物体是否存在的能力。

在检测时,模型首先根据预测框的置信度判断该预测框内是否存在目标,并保留存在目标的预测框。接着,利用非极大值抑制算法筛选预测框,避免同一目标被重复标记。最后根据筛选后预测框的类别概率定义目标的类别。

利用通道剪枝算法实现快速轻量的个体识别
巨大的参数量带给模型强大的学习能力和表达能力,但这些参数对于模型最终性能的作用并不相同(论文:Pruning is All You Need)。在保证模型准确率的前提条件下剪除网络中作用不大的参数,进一步减小模型大小、提高检测速度十分必要。权重剪枝算法灵活性高但需要特殊的硬件来加速,相反,整层剪枝算法易于实现但极易剪掉一些重要的参数(论文:networksliming)。为了兼顾剪枝算法的灵活性和实施成本,一些学者尝试对模型中不重要的通道进行剪枝并取得很好效果(DandanWanga DongjianHe_BE;Dihua_computer; Shuxiang Fan_computer)。
在YOLOv5s模型上实现通道剪枝需要借助网络的BN层。BN层被认为能够有效提高网络泛化能力、加快网络训练速度、解决“Internal Covariate Shift”问题。BN层的具体操作如论文中所示。
在这里插入图片描述

式中,规模因子γ、偏置因子β是可学习参数,它们通过网络训练得到。γ越接近于0,对应的通道对结果的影响程度越小,相反,当γ的值越大,对应的通道就越重要。由于规模因子γ可以有效地表示一个通道的重要性,通道剪枝算法通过判别γ值的大小实现剪枝。如图4所示,通道剪枝算法首先通过稀疏训练使BN层中的参数γ趋向于0,之后,保留贡献度高的通道并剪除贡献度较小的通道,实现模型的压缩。图4中的公式中(x,y)为训练数据集的样本点,W为模型权重,Σ_((x,y) ) L(f(x,W),y)为模型的原始损失函数,λ为稀疏权重因子,g(γ)为稀疏损失项,γ为规模因子,α为通道重要性阈值。
在这里插入图片描述

本研究中通道剪枝算法具体步骤如下:
步骤1:通道稀疏训练
由于在原始网络的BN层中,γ近于0的情况很少,直接对网络的通道进行剪枝很难有效地压缩模型。为解决这一问题,需要对模型BN层中的γ值进行稀疏训练。本研究选取2.2.1节中模型效果最好的权重文件作为用作稀疏训练的原始网络权重文件,训练时通过在正常训练的损失函数基础上添加对γ的L1正则化约束项实现模型的通道稀疏化。
训练过程中使用ADAM作为优化器用于更新模型参数,初始学习率设定为0.0005,稀疏权重因子λ设定为0.015。如图所示,模型经过200个epoch后,参数γ的分布中心接近于0且不再发生明显变化,模型已完成稀疏化训练。
在这里插入图片描述

步骤2:剪除低贡献度通道
稀疏化训练完成后,设定通道重要性阈值α,对参数γ没有超过α的通道进行剪除。过小的剪枝率不利于模型压缩,过大的剪枝率可能会严重影响模型性能。本研究中α的最佳大小由多次实验确定。如图6所示,本研究对59个BN层中的9632个通道的重要性进行判断,在保证模型性能没有严重退化的条件下裁剪掉5324个通道。
在这里插入图片描述

步骤3:对剪枝后的模型进行微调
剪枝后模型大小和参数量的大幅度减小会带给模型一定程度上的精度损失,为减轻通道剪枝算法带来的负面影响,本研究对剪枝后的模型进行微调。由于剪枝后的模型相对较小,学习能力相对较弱,需要更多的迭代次数恢复精度。本文微调过程中选用随机梯度下降算法作为优化算法,初始学习率设置为0.001,并使用余弦退火衰减算法对学习率更新调整, epoch设定为350。

实验结果

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

文章结论

在这里插入图片描述

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

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

相关文章

【C语言】指针查漏补缺

【C语言】指针查漏补缺 预备知识一维整数数组字符数组字符常量数组字符串常量二维数组 预备知识 sizeof 是计算对象或者类型创建的对象所占内存空间的大小,单位是字节 sizeof 是操作符,不是函数 strlen 求字符串长度的,计算的是字符串中\0之…

向量的概念、向量组的概念

目录 向量的概念、向量组的概念 向量的基本运算 线性表出、线性相关、线性无关 向量的概念、向量组的概念 向量(Vector)是一个有次序的数所组成的数组,通常用来表示一个物理量或者一个对象在空间中的移动。向量可以表示位置、速度、力等物…

竞赛 基于机器视觉的手势检测和识别算法

0 前言 🔥 优质竞赛项目系列,今天要分享的是 基于深度学习的手势检测与识别算法 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🧿 更多资料, 项目分享: https://gitee.com/dancheng…

蓝牙核心规范(V5.4)12.2-深入详解之加密广播数据(Encrypted Advertising Data)

蓝牙篇之蓝牙核心规范(V5.4)深入详解汇总 1.知识回顾 1.1 带响应的周期广播 在上一节已经讲了。 1.2 广播结构体 蓝牙核心规范定义了广播数据(AD)结构。它是一个用于包含在蓝牙LE广告和扫描响应数据包中以及在蓝牙BR/EDR扩展查询响应(EIR)数据包中的一般容器。包含在A…

nvm 一个nodejs版本管理工具

nvm 一个nodejs版本管理工具 NVM是什么 nvm全英文也叫node.js version management,是一个nodejs的版本管理工具。nvm和n都是node.js版本管理工具,为了解决node.js各种版本存在不兼容现象可以通过它可以安装和切换不同版本的node.js NVM下载 可在点此在…

长城靶场溯源第四题

先统计访问的ip 直到第一个包过滤到202.1.1.2 很明显的一句话木马,就是他了,202.1.1.2 卡描述:2.服务器1.99的web服务器使用的CMS及其版本号(请直接复制) 继续查看同一个数据包,发现个奇奇怪怪的phpinf…

python flask框架接受axios发送的图片文件

文章目录 前端部分axios配置请求部分代码页面代码 后端代码结果 前端部分 axios配置 主要是一些基础的配置,这里可看可不看,主要的不是这里 import axios from axios; let baseURL /demo// 创建axios实例 const service axios.create({// axios中请…

山洪灾害预警方案(山洪预警解决方案的组成)

​ 随着气候变化的不断加剧,山洪灾害在许多地区成为了极具威胁性的自然灾害之一。为了帮助地方政府和居民更好地预防和应对山洪灾害,我们设计了一套基于星创易联的SR600工业路由器和DTU200的山洪灾害预警方案,并成功在某地区进行了部署。 案…

【Linux从入门到精通】线程 | 线程介绍线程控制

本篇文章主要对线程的概念和线程的控制进行了讲解。其中我们再次对进程概念理解。同时对比了进程和线程的区别。希望本篇文章会对你有所帮助。 文章目录 一、线程概念 1、1 什么是线程 1、2 再次理解进程概念 1、3 轻量级进程 二、进程控制 2、1 创建线程 pthread_create 2、2…

代码随想录算法训练营第49天|121. 买卖股票的最佳时机,买卖股票的最佳时机II

链接: 121. 买卖股票的最佳时机 链接: 122.买卖股票的最佳时机II 121. 买卖股票的最佳时机 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出…

代码托管的力量:构建协作、追踪和持续交付的软件开发生态系统

💂 个人网站:【工具大全】【游戏大全】【神级源码资源网】🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】💅 寻找学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】 引言 在现代软件开发中…

浅析-vue.js

学习目标 会创建Vue实例,知道Vue的常见属性会使用Vue的生命周期的钩子函数会使用vue常见指令会使用vue计算属性和watch监控会编写Vue组件掌握组件间通信了解vue-router使用了解webpack使用会使用vue-cli搭建项目 0.前言 前几天我们已经对后端的技术栈有了初步的了…

Spark_Spark内存模型管理

工作中经常用到Spark内存调参,之前还没对这块记录,这次记录一下。 环境参数 spark 内存模型中会涉及到多个配置,这些配置由一些环境参数及其配置值有关,为防止后面理解混乱,现在这里列举出来,如果忘记了&a…

冠达管理:庄家最怕的8个方法?

在股票商场上,庄家总是短时刻内操控价格,并在一定的时刻内进出股市,以赚取巨额赢利。 假如想在股票商场上盈余,那么就必须站在庄家的对立面,把握一些防护和反击的办法。这里就来介绍一些庄家最怕的办法。 一、技能剖析…

恒运资本:沪指震荡涨0.28%,医药板块强势拉升,金融等板块上扬

15日早盘,沪指盘中震荡上扬,科创50指数表现强势;北向资金小幅净流入。 到午间收盘,沪指涨0.28%报3135.31点,深成指、创业板指涨均0.11%,科创50指数涨1.04%;两市合计成交4357亿元,北…

Java基础语法之数组

💕十年生死两茫茫,不思量,自难忘💕 作者:Mylvzi 文章主要内容:Java学习之--数组 一.数组的基本概念 1.定义 数组是相同数据类型的集合!使用数组来存放多个相同类型的数据! 2.Jav…

亚马逊云科技打造SAP核心业务系统上云最佳实践,加快业务转型和价值实现

数字化转型步入深水区,企业竞争日益激烈,乘云而上、快速进行现代化转型和创新,才能不断紧跟趋势变化,实现「高质量发展」。作为亚马逊云科技全球战略合作伙伴,SAP和亚马逊云科技的联合创新已超过15年,双方共…

持续深耕金融科技领域,神策数据正式加入证券基金行业信创联盟

近日,神策数据正式加入证券基金行业信息技术应用创新联盟(简称“信创联盟”),携手更多行业力量,促进证券基金行业信创关键技术研究、应用和服务。 证券基金信创联盟由上交所联合行业券商倡议发起成立,由证监…

【计算机视觉 | 图像模型】常见的计算机视觉 image model(CNNs Transformers) 的介绍合集(十)

文章目录 一、GreedyNAS-A二、ASLFeat三、GreedyNAS-B四、Twins-PCPVT五、MoGA-A六、MoGA-C七、Visformer八、Multi-Heads of Mixed Attention九、LocalViT十、SPP-Net十一、The Ikshana Hypothesis of Human Scene Understanding Mechanism十二、DetNASNet十三、TResNet十四、…

thinkphp:查询本周中每天中日期的数据

以今天2023-09-14为例,这一周为2023-09-11~2023-09-07 运行结果 结果: 代码 后端thinkphp: //查询本周每天的的总金额数 //获取本周的起始日期和结束日期 $weekStart date(Y-m-d, strtotime(this week Monday)); $weekEnd date(Y-m-d, strtotime(t…