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

融合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.rhkb.cn/news/132865.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

类和对象(3)

文章目录 1.回顾上节2. 拷贝构造3. 运算符重载(非常重要)4. 赋值运算符重载 1.回顾上节 默认成员函数:我们不写,编译器自动生成。我们不写,编译器不会自动生成 默认生成构造和析构: 对于内置类型不做处理对…

PMP-项目规划过程组的重要性

一、什么是项目规划过程组 规划过程组包括明确项目全部范围、定义和优化目标,并为实现目标制定行动方案的一组过程。规划过程组中的过程制定项目管理计划的组成部分,以及用于执行项目的项目文件。取决于项目本身的性质,可能需要通过多轮反馈来…

使用阿里PAI DSW部署Stable Diffusion WebUI

进入到网址https://pai.console.aliyun.com/里边。 点击创建实例。 把实例名称填写好,选择GPU规格,然后选择实例名称是ecs.gn6v-c8g1.2xlarge。 选择stable-diffusion-webui-env:pytorch1.13-gpu-py310-cu117-ubuntu22.04,然后点击下一步。…

Python+requests编写的自动化测试项目

框架产生目的:公司走的是敏捷开发模式,编写这种框架是为了能够满足当前这种发展模式,用于前后端联调之前(后端开发完接口,前端还没有将业务处理完毕的时候)以及日后回归阶段,方便为自己腾出学(m…

C++之保存编译全部中间文件(二百一十五)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…

【持续记录】深度学习环境配置

1080面对Transformer连勉强也算不上了,还是要去用小组公用的卡 完整记一个环境配置,方便后面自用✍️ nvidia-smi查看GPU信息 ** CUDA版本12.2 conda -V查询conda版本 22.9.0 新建conda环境 准备装python3.8 conda create --name caiman python3.8.2激…

04-JVM对象创建深度剖析

上一篇:03-JVM内存模型剖析与优化 对象创建的主要流程: 1.类加载检查 虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有…

ppt录制在哪?实用技巧分享!

在现代演示和培训中,PPT演示已经成为越来越流行的一种交流方式。而录制ppt也成为了很多商务演讲、教学讲解、产品演示等场合的必备技能。本文将为您介绍两种常见的ppt录制方式,帮助您轻松录制ppt演示的过程。 ppt录制在哪? ppt是一款流行的演…

【扩散模型】4、Improved DDPM | 引入可学习方差和余弦加噪机制来提升 DDPM

文章目录 一、背景二、Improved DDPM——提升 Log-likelihood2.1 可学习的方差2.2 改进 noise schedule2.3 降低梯度噪声 三、效果 论文:Improved Denoising Diffusion Probabilistic Models 代码:https://link.zhihu.com/?targethttps%3A//github.com…

【ELK】日志分析系统概述及部署(ELFK部署实验)

目录 一、ELK概述 1、ELK是什么? 2、ELK的组成部分 2.1 ElasticSearch (1)分片和副本 (2)es和传统数据库的区别 2.2 Kiabana 2.3 Logstash (1)Log Stash主要组件 2.4 可添加的其它组件…

YOLO DNF辅助教程完结

课程完结!撒花、撒花、撒花 课程完结!撒花、撒花、撒花 课程完结!撒花、撒花、撒花 ​呕心沥血三个月,《利用人工智能做DNF游戏辅助》系列实战课程已完结,技术路线贯穿串口通信、目标检测、opencv特征匹配等前沿技术…

黑马JVM总结(八)

(1)StringTable面试题 1.8 1.6时 (2)StringTable的位置 jvm1.6时StringTable是常量池的一部分,它随着常量池存储在永久代当中,在1.7、1.8中从永久代变成了堆中,为什么做这个更改呢&#xff1f…

基于安卓Java试题库在线考试系统uniapp 微信小程序

本文首先分析了题库app应用程序的需求,从系统开发环境、系统目标、设计流程、功能设计等几个方面对系统进行了系统设计。开发出本题库app,主要实现了学生、教师、测试卷、试题、考试等。总体设计主要包括系统功能设计、该系统里充分综合应用Mysql数据库、…

金九银十,给大家一点面试方面的建议

好久不见,甚是想念。这段时间没有更新什么文章,其实是因为我跳了一波槽,出去面了一圈后,也顺利拿了不少架构岗位的offer。 正好马上要金九银十了,相信有不少小伙伴们估计也有跳槽涨薪的想法,那么就从我最近…

input修改checkbox复选框默认选中样式

问题描述&#xff1a; <input type"checkbox" /> input修改checkbox默认选中样式&#xff0c;直接设置选中后的样式不生效&#xff0c;需要先给复选框设置-webkit-appearance: none&#xff08;取消默认样式&#xff09;&#xff0c; 再设置样式才会生效。 …

面经pc端项目

创建项目 安装脚手架-----创建项目------选择自定义 sass基础语法 https://www.sass.hk/ sass语法有两个:sass(旧) scss(新) 1.scss语法 和less语法类似,支持嵌套,支持变量… scss: $变量名 less: @变量名 $color:orange; .box{width: 400px;height: 400px;borde…

Vue3高频面试题+八股文

Vue3.0中的Composition Api 开始之前 Compos:1 tion API可以说是ue3的最大特点&#xff0c;那么为什么要推出Compos1t1on Api,解决了什么问趣&#xff1f; 通常使用Vue2开发的项目&#xff0c;普遍会存在以下问题&#xff1a; 代码的可读性随着组件变大而变差每一种代码复用的…

勒索病毒最新变种.halo勒索病毒来袭,如何恢复受感染的数据?

摘要&#xff1a; .halo勒索病毒已成为数字世界中的威胁&#xff0c;通过高级加密技术将文件锁定&#xff0c;并要求支付赎金。本文91数据恢复将深入介绍.halo勒索病毒的工作原理&#xff0c;提供解锁被感染文件的方法&#xff0c;以及探讨如何有效预防这一威胁。如果您正在经…

数据库逻辑透明-架构真题(二十九)

&#xff08;2020年&#xff09;假设某计算机字长为32位&#xff0c;该计算机文件管理系统磁盘空间管理采用位示图&#xff08;bitmap&#xff09;记录磁盘的使用情况。若磁盘的容量为300GB&#xff0c;物理块大小为4MB&#xff0c;那么位示图的大小为&#xff08;&#xff09;…

JavaScript设计模式(五)——发布订阅模式、桥接模式、组合模式

个人简介 &#x1f440;个人主页&#xff1a; 前端杂货铺 &#x1f64b;‍♂️学习方向&#xff1a; 主攻前端方向&#xff0c;正逐渐往全干发展 &#x1f4c3;个人状态&#xff1a; 研发工程师&#xff0c;现效力于中国工业软件事业 &#x1f680;人生格言&#xff1a; 积跬步…