奶牛个体识别 奶牛身份识别
融合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.202303122XU 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。
实验结果
文章结论
相关文章:
奶牛个体识别 奶牛身份识别
融合YOLOv5s与通道剪枝算法的奶牛轻量化个体识别方法 Light-weight recognition network for dairy cows based on the fusion of YOLOv5s and channel pruning algorithm 论文链接 知网链接 DOI链接 该文章讨论了奶牛花斑、光照条件、不同剪枝方法、不同剪枝率对准确率的影响…...
【力扣每日一题】2023.9.13 检查骑士巡视方案
目录 题目: 示例: 分析: 代码: 题目: 示例: 分析: 题目给我们一个n*n大小的矩阵,矩阵的元素表示骑士已经行动的次数,问我们骑士能不能按照矩阵里元素顺序来巡视整个…...
【Vue】关于CSS样式绑定整理
因突发奇想设计一款组件,需要根据属性动态绑定样式,故而整理一些Vue的动态绑定样式方法(传参绑定类似,不做过多叙述),仅供参考.方式一: 直接在元素上绑定具体样式方式二: 定义属性对象,绑定到style,可以在style中使用定义的变量方式二: 通过引入自定义组件引入style数据,直接绑…...
Sql语句大全--更新
今天抽空整理下项目中的Sql语句 项目中用到的Sql语句大全 Update 语句 Update 语句 Update语句update OLASF1.LLB set CBBTHCC 52 WHERE CBPOLNUMC201728534update OLASF1.LLB set CBBTHCC 01 WHERE CBPOLNUMC201728534update OLASF1.LB set CBBTHCC 01 WHERE CBPOLNUMC…...
Java面试八股文宝典:序言
序言: Java作为一门广泛应用于企业级应用开发的编程语言,一直以来都是技术面试中的重要话题。无论您是刚刚踏入编程世界的新手,还是经验丰富的Java开发工程师,都需要通过面试来展示自己的技能和知识。 在面试中,除了…...
【多线程案例】单例模式
单例模式是设计模式的一种,先谈谈什么是设计模式? 大家应该都知道棋谱、剑谱之类的,就是一些“高手”在经历过长期的累计之后,更具经验写出的具有固定套路的处理“方法”,只要按照这个套路来,在对局之中必然…...
阿里云部署SpringBoot项目启动后被杀进程的问题
阿里云部署SpringBoot项目启动后被杀进程的问题 最近部署在公司虚拟主机上的SpringBoot项目频繁被杀,这个虚拟主机是个杂货铺,部署着各种项目,时间跨度还大,不同的人负责,个人自扫门前雪,不管他人瓦上霜&a…...
git仓库推送错误
错误背景 从github克隆仓库后,想推送到gitee,在推送时遇到 error: src refspec master does not match any. error: failed to push some refs to <REMOTE_URL>解决方法 rm -rf .github git init git add -A git commit -m "init for gite…...
计网第五章(运输层)(三)
一、UDP协议和TCP协议的对比 1、UDP无连接,TCP面向连接 使用UDP协议的通信双方可以随时发送数据,使用TCP协议的通信双方必须先进行3次握手建立连接,才能发送数据,最后还要进行4次挥手才能释放连接。 2、UDP支持单播、多播以及广…...
OpenCV 07(图像滤波器)
一、卷积 什么是图片卷积? 图像卷积就是卷积核在图像上按行滑动遍历像素时不断的相乘求和的过程 步长 步长就是卷积核在图像上移动的步幅. 上面例子中卷积核每次移动一个像素步长的结果, 如果将这个步长修改为2, 结果会如何? 为了充分扫描图片, 步长一般设为1. padding …...
uniapp项目实践总结(十三)封装文件操作方法
导语:在日常 APP 开发过程中,经常要进行文件的保存、读取列表以及查看和删除文件等操作,接下来就看一下具体的方法。 目录 原理分析方法实现实战演练案例展示 原理分析 主要是以下 API。 uni.saveFile:保存文件到本地缓存列表…...
程序地址空间
✅<1>主页::我的代码爱吃辣 📃<2>知识讲解:Linux——程序地址空间 ☂️<3>开发环境:Centos7 💬<4>前言:我们一直随口就能说出来的栈区,堆区,常量…...
HBS 家庭总线驱动和接收芯片MS1192,应用于电话及相关设备、空调设备、安全设备、AV 装置
MS1192 是适用于 HBS 总线规范(日本电子工业协会) 的适配器芯片,具备发送、接收数据的功能。在发送接收 单元中,采用 AMI 编码方式,可使用双绞线进行互联,信 号传输采用差分方式。 芯片采用单电源…...
IO和进程day08(消息队列、共享内存、信号灯集)
今日任务 1.代码 inversion.c #include <stdio.h> #include <string.h> #include <stdlib.h> #include <sys/types.h> #include <sys/ipc.h> #include <sys/ipc.h> #include <sys/shm.h> #include <sys/types.h> #include …...
【数据结构】—堆排序以及TOP-K问题究极详解(含C语言实现)
食用指南:本文在有C基础的情况下食用更佳 🔥这就不得不推荐此专栏了:C语言 ♈️今日夜电波:ルミネセンス—今泉愛夏 1:01 ━━━━━━️💟──────── 5:05 …...
Python语言概述
视频版教程 Python3零基础7天入门实战视频教程 Python作为一门非常流行的高级编程语言,自从22年开始,TIOBE编程语言排行榜Python一直排第一。 Python简洁高效,丰富的应用场景,受到广大程序员,科研工作者的喜爱。 …...
电子电路学习笔记之NCV84120DR2G——车规级单通道高压侧驱动器
关于车规级芯片: 关于车规级芯片(Automotive Grade Chip),车规级芯片是专门用于汽车行业的芯片,具有高可靠性、高稳定性和低功耗等特点,以满足汽车电子系统的严格要求。这些芯片通常用于车载电子控制单元&…...
YOLO DNF辅助教程完结
课程完结!撒花、撒花、撒花 课程完结!撒花、撒花、撒花 课程完结!撒花、撒花、撒花 呕心沥血三个月,《利用人工智能做DNF游戏辅助》系列实战课程已完结,技术路线贯穿串口通信、目标检测、opencv特征匹配等前沿技术…...
Hadoop-Hive
1. hive安装部署 2. hive基础 3. hive高级查询 4. Hive函数及性能优化 1.hive安装部署 解压tar -xvf ./apache-hive-3.1.2-bin.tar.gz -C /opt/soft/ 改名mv apache-hive-3.1.2-bin/ hive312 配置环境变量:vim /etc/profile #hive export HIVE_HOME/opt/soft/hive…...
竞赛 基于机器视觉的火车票识别系统
文章目录 0 前言1 课题意义课题难点: 2 实现方法2.1 图像预处理2.2 字符分割2.3 字符识别部分实现代码 3 实现效果最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 基于机器视觉的火车票识别系统 该项目较为新颖,适合作为竞赛…...
conda与pip镜像源环境配置
文章目录 一. 参考二. conda三. pip 一. 参考 b站环境配置视频 校园网镜像站 二. conda 利用校园网镜像站, 找到conda的镜像源配置文档. 将下面的文档复制到电脑上的.condarc文件中. channels:- defaults show_channel_urls: true default_channels:- https://mirrors.tuna…...
Golang1.21更新内容全面介绍~
我的掘金平台原文地址Golang1.21更新内容全面介绍~ 前言 在Golang1.21这一次更新中,主要更新内容为: for range的一个语义变更 、 新加入max、min、clear方法、 contenxt增添api、 WASI的支持 本文主要带大家熟悉这些变更的内容~ 1.for语义的变更…...
ArcGIS 10.4安装教程!
软件介绍:ArcGIS是一款专业的电子地图信息编辑和开发软件,提供一种快速并且使用简单的方式浏览地理信息,无论是2D还是3D的信息。软件内置多种编辑工具,可以轻松的完成地图生产全过程,为地图分析和处理提供了新的解决方…...
华为云云服务器云耀L实例评测 | 从零开始:华为云云服务器L实例使用教程
🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…...
ElasticSearch配置
2) 搭建ElasticSearch环境 2.1) 拉取镜像 docker pull elasticsearch:7.4.02.2) 创建容器 docker run -id --name elasticsearch -d --restartalways -p 9200:9200 -p 9300:9300 -v /usr/share/elasticsearch/plugins:/usr/share/elasticsearch/plugins -e "discovery.…...
MySQL优化第二篇
MySQL优化第二篇 性能分析小表驱动大表慢查询日志日志分析工具mysqldumpslow Show Profile进行SQL分析(重中之重) 七种JOIN 1、inner join :可以简写为join,表示的是交集,也就是两张表的共同数据 sql语句:…...
基于python解决鸡兔同笼问题
一、什么是鸡兔同笼问题? 鸡兔同笼问题是一个经典的数学问题。问题描述:鸡和兔子共有头数a和脚数b,求鸡和兔子的数量。 解析:设鸡的数量为x,兔子的数量为y,那么可以得到以下两个方程: 1. x y…...
2023 Google 开发者大会|Mobile开发专题追踪
文章目录 前言大会介绍涉及内容MobileWebAICloud Mobile开发专题多终端应用的开发适配大屏视频流可穿戴设备电视新的设计中心 构建高质量的应用高级相机和媒体功能用户的安全和隐私更精细的视觉体验 小结 前言 哈喽大家好,我是阿Q。近期,【2023 Google …...
最新版WPS 2023 加载Zotero方法
安装wps2019vba.exe,获取链接:链接:https://pan.baidu.com/s/1eeoc6Tmwyzxh3n1MFQTVeA 提取码:6431 –来自百度网盘超级会员V8的分享 打开WPS的工具的加载项 添加文件路径,我的在: C:\Users\Administrat…...
详解爬虫策略,反爬虫策略,反反爬爬虫策略
爬虫策略 爬取策略是网络爬虫在执行网页抓取任务时所遵循的规则或策略。这些策略决定了爬虫如何从一个页面转到另一个页面,什么时间进行抓取,以及应该抓取哪些内容。以下是几种常见的爬取策略: 深度优先搜索(DFS) 在…...
seo推广关键词公司/关键词首页排名优化平台
简介:校内的两难困境就在这里,不过对于陈一舟来说,他一点不为难,因为他是一个连眼前利益都不肯放弃的人。我猜测开心网的商业模式会走第三条路,就是自己做web小游戏,最终转型成为一个SNS型的休闲web网络游戏…...
电商网站的二级怎么做/郴州网站建设网络推广渠道
2019独角兽企业重金招聘Python工程师标准>>> 一、Android Support v4、v7、v13 介绍 Google提供了 Android Support Library package 系列的包来保证** 高版本sdk开发的向下兼容性** (即我们用 4.x 开发时,在 1.6 等版本上,可以使…...
广西政府网站政务新媒体建设调查/官网整站优化
文章目录JavaScript 基础知识1.前置知识JS的书写形式注释输入输出2. 基础语法JS数据类型数组函数对象3. WebAPI获取元素事件操作元素获取/修改元素属性获取/修改表单元素属性获取/修改样式属性类名样式操作操作节点创建元素节点插入节点到 dom 树中删除节点删除节点JavaScript …...
机械厂网站建设/什么推广软件效果好
### Code Reference URL:https://blog.csdn.net/leshami/article/details/72821806DESC:12c下手工创建CDB数据库(参考docker实例化Oracle12c EE作为部署基础)Last Update:2020-7-14 16:00 CDB创建相关说明 使用CREATE DATABASESQL语句创建CDB非常类似于创建非CDB.使用CREATE D…...
看装修效果图哪个网站好/seo关键词优化方法
确保成功共享 vmware-hgfsclient 挂载 yum install open-vm-tools vmhgfs-fuse .host:/ /mnt/hgfs...
左侧伸缩隐藏菜单时尚flash网站/电商seo优化
外观模式(FACADE) 又称为门面模式 意图 为子系统中的一组接口提供一个一致的界面 Facade模式定义了一个高层接口,这一接口使得这一子系统更加易于使用。 意图解析 随着项目的持续发展,系统基本上都是会往功能更全面的方向发展…...