基于yolov8的肉鸡健康状态检测系统python源码+onnx模型+评估指标曲线+精美GUI界面

news2024/9/21 16:46:44

【算法介绍】

基于YOLOv8的肉鸡健康状态检测系统是一个先进的目标检测应用,旨在通过图像分析实现对肉鸡健康状态的快速、准确评估。该系统利用了YOLOv8模型的尖端技术,该模型由Ultralytics公司开发,具有卓越的检测精度和速度。

YOLOv8模型采用了无锚点(Anchor-Free)的检测头,并结合了新的损失函数,这些创新极大地提升了检测小尺寸物体的准确性,特别是在肉鸡养殖场景中尤为重要。此外,YOLOv8还具备高度的灵活性和可扩展性,可以在不同硬件平台上运行,从CPU到GPU均能适配。

该检测可以高效地训练出能够识别肉鸡健康状态的模型,包括正常和异常状态(如疾病、异常行为等)。

总体而言,基于YOLOv8的肉鸡健康状态检测系统为养殖业提供了一种高效、非接触式的健康监测解决方案,有助于及时发现和处理肉鸡健康问题,提高养殖效益和动物福利。

【效果展示】

【测试环境】

windows10
anaconda3+python3.8
torch==1.9.0+cu111
ultralytics==8.2.95

【模型可以检测出类别】

AbNormal
Normal

【训练数据集】

https://download.csdn.net/download/FL1623863129/89767920

【训练信息】

参数
训练集图片数3451
验证集图片数557
训练map91.8%
训练精度(Precision)85.4%
训练召回率(Recall)85.0%
验证集测试精度信息

类别

MAP0.5(单位:%)

all

92

AbNormal

91

Normal

93

【部分实现源码】

class Ui_MainWindow(QtWidgets.QMainWindow):
    signal = QtCore.pyqtSignal(str, str)
 
    def setupUi(self):
        self.setObjectName("MainWindow")
        self.resize(1280, 728)
        self.centralwidget = QtWidgets.QWidget(self)
        self.centralwidget.setObjectName("centralwidget")
 
        self.weights_dir = './weights'
 
        self.picture = QtWidgets.QLabel(self.centralwidget)
        self.picture.setGeometry(QtCore.QRect(260, 10, 1010, 630))
        self.picture.setStyleSheet("background:black")
        self.picture.setObjectName("picture")
        self.picture.setScaledContents(True)
        self.label_2 = QtWidgets.QLabel(self.centralwidget)
        self.label_2.setGeometry(QtCore.QRect(10, 10, 81, 21))
        self.label_2.setObjectName("label_2")
        self.cb_weights = QtWidgets.QComboBox(self.centralwidget)
        self.cb_weights.setGeometry(QtCore.QRect(10, 40, 241, 21))
        self.cb_weights.setObjectName("cb_weights")
        self.cb_weights.currentIndexChanged.connect(self.cb_weights_changed)
 
        self.label_3 = QtWidgets.QLabel(self.centralwidget)
        self.label_3.setGeometry(QtCore.QRect(10, 70, 72, 21))
        self.label_3.setObjectName("label_3")
        self.hs_conf = QtWidgets.QSlider(self.centralwidget)
        self.hs_conf.setGeometry(QtCore.QRect(10, 100, 181, 22))
        self.hs_conf.setProperty("value", 25)
        self.hs_conf.setOrientation(QtCore.Qt.Horizontal)
        self.hs_conf.setObjectName("hs_conf")
        self.hs_conf.valueChanged.connect(self.conf_change)
        self.dsb_conf = QtWidgets.QDoubleSpinBox(self.centralwidget)
        self.dsb_conf.setGeometry(QtCore.QRect(200, 100, 51, 22))
        self.dsb_conf.setMaximum(1.0)
        self.dsb_conf.setSingleStep(0.01)
        self.dsb_conf.setProperty("value", 0.25)
        self.dsb_conf.setObjectName("dsb_conf")
        self.dsb_conf.valueChanged.connect(self.dsb_conf_change)
        self.dsb_iou = QtWidgets.QDoubleSpinBox(self.centralwidget)
        self.dsb_iou.setGeometry(QtCore.QRect(200, 160, 51, 22))
        self.dsb_iou.setMaximum(1.0)
        self.dsb_iou.setSingleStep(0.01)
        self.dsb_iou.setProperty("value", 0.45)
        self.dsb_iou.setObjectName("dsb_iou")
        self.dsb_iou.valueChanged.connect(self.dsb_iou_change)
        self.hs_iou = QtWidgets.QSlider(self.centralwidget)
        self.hs_iou.setGeometry(QtCore.QRect(10, 160, 181, 22))
        self.hs_iou.setProperty("value", 45)
        self.hs_iou.setOrientation(QtCore.Qt.Horizontal)
        self.hs_iou.setObjectName("hs_iou")
        self.hs_iou.valueChanged.connect(self.iou_change)
        self.label_4 = QtWidgets.QLabel(self.centralwidget)
        self.label_4.setGeometry(QtCore.QRect(10, 130, 72, 21))
        self.label_4.setObjectName("label_4")
        self.label_5 = QtWidgets.QLabel(self.centralwidget)
        self.label_5.setGeometry(QtCore.QRect(10, 210, 72, 21))
        self.label_5.setObjectName("label_5")
        self.le_res = QtWidgets.QTextEdit(self.centralwidget)
        self.le_res.setGeometry(QtCore.QRect(10, 240, 241, 400))
        self.le_res.setObjectName("le_res")
        self.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(self)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 1110, 30))
        self.menubar.setObjectName("menubar")
        self.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(self)
        self.statusbar.setObjectName("statusbar")
        self.setStatusBar(self.statusbar)
        self.toolBar = QtWidgets.QToolBar(self)
        self.toolBar.setToolButtonStyle(QtCore.Qt.ToolButtonTextBesideIcon)
        self.toolBar.setObjectName("toolBar")
        self.addToolBar(QtCore.Qt.TopToolBarArea, self.toolBar)
        self.actionopenpic = QtWidgets.QAction(self)
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap(":/images/1.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.actionopenpic.setIcon(icon)
        self.actionopenpic.setObjectName("actionopenpic")
        self.actionopenpic.triggered.connect(self.open_image)
        self.action = QtWidgets.QAction(self)
        icon1 = QtGui.QIcon()
        icon1.addPixmap(QtGui.QPixmap(":/images/2.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.action.setIcon(icon1)
        self.action.setObjectName("action")
        self.action.triggered.connect(self.open_video)
        self.action_2 = QtWidgets.QAction(self)
        icon2 = QtGui.QIcon()
        icon2.addPixmap(QtGui.QPixmap(":/images/3.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.action_2.setIcon(icon2)
        self.action_2.setObjectName("action_2")
        self.action_2.triggered.connect(self.open_camera)
 
        self.actionexit = QtWidgets.QAction(self)
        icon3 = QtGui.QIcon()
        icon3.addPixmap(QtGui.QPixmap(":/images/4.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.actionexit.setIcon(icon3)
        self.actionexit.setObjectName("actionexit")
        self.actionexit.triggered.connect(self.exit)
 
        self.toolBar.addAction(self.actionopenpic)
        self.toolBar.addAction(self.action)
        self.toolBar.addAction(self.action_2)
        self.toolBar.addAction(self.actionexit)
 
        self.retranslateUi()
        QtCore.QMetaObject.connectSlotsByName(self)
        self.init_all()

【使用步骤】

使用步骤:
(1)首先根据官方框架https://github.com/ultralytics/ultralytics安装教程安装好yolov8环境,并安装好pyqt5
(2)切换到自己安装的yolov8环境后,并切换到源码目录,执行python main.py即可运行启动界面,进行相应的操作即可

【提供文件】

python源码
yolov8n.onnx模型(不提供pytorch模型)
训练的map,P,R曲线图(在weights\results.png)
测试图片(在test_img文件夹下面)

【源码下载地址】

https://download.csdn.net/download/FL1623863129/89768115

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

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

相关文章

新书出版,大陆首本NestJS图书《NestJS全栈开发解析:快速上手与实践》

新书全栈实战项目:数字门店管理平台开源啦🎉🎉🎉 GitHub地址(持续更新NestJS企业级实践):欢迎star⭐️⭐️⭐️ 前端ReactTypeScriptVite 后端NestMySQLRedisDocker 前言 对,你没看…

教程 | ArcGIS Pro如何自动保存数据编辑内容

目录 1、工程自动保存 2、数据编辑自动保存 世界上最痛苦的事情就是: 软件崩溃,我没保存!!! 电脑死机,我没保存!!! 突然断电,我没保存!&…

星云股份战略运营副总裁袁智勇︱如何培养“能打胜仗”的项目经理

全国项目经理专业人士年度盛会 福建星云电子股份有限公司总裁办战略运营副总裁袁智勇先生受邀为PMO评论主办的全国项目经理专业人士年度盛会——2024第四届中国项目经理大会演讲嘉宾,演讲议题为“如何培养“能打胜仗”的项目经理”。大会将于10月26-27日在北京举办&…

MUNIK谈ASPICE系列专题分享(十)ASPICE配置管理如何做

前言: ASPICE(Automotive Software Process Improvement and Capability dEtermination)是一种用于评估汽车行业软件开发过程成熟度的模型。配置管理是ASPICE中的一个关键过程领域(KPA),它涉及到对软件项目…

C++list的使用:尾插、头插、insert、erase、reverse、sort等的介绍

文章目录 前言一、尾插、头插、insert、erase二、reverse、sort总结 前言 Clist的使用&#xff1a;尾插、头插、insert、erase、reverse、sort等的介绍 一、尾插、头插、insert、erase #include <iostream> #include <list>using namespace std;void test_list1(…

下拉框QComboBox

文本 // 获取和设置当前条目的索引 int currentIndex() const void setCurrentIndex(int index)// 获取和设置当前条目的文本 QString currentText() const void setCurrentText(const QString &text)// 获取和设置指定索引条目的文本 QString itemText(int index) co…

老友记台词 第二季 第一集 Friends 201(全英版)

文章目录 201 The One With Ross New Girlfriend[Scene: Central Perk, Phoebe is recapping last season, and as she talks we see a montague of scenes from Ross and Rachel.][Scene: The Airport, continued from last season, Rachel is waiting for Ross to come of th…

【PLW004】基于Python网络爬虫与推荐算法的新闻推荐平台v1.0(Python+Django+NLP+Vue+MySQL前后端分离)

基于Python网络爬虫与推荐算法的新闻推荐平台。 网络爬虫&#xff1a;通过Python实现新浪新闻的爬取&#xff0c;可爬取新闻页面上的标题、文本、图片、视频链接&#xff08;保留排版&#xff09; 推荐算法&#xff1a;权重衰减标签推荐区域推荐热点推荐融合推荐算法。 文章目录…

计算机毕业设计 二手图书交易系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

&#x1f34a;作者&#xff1a;计算机编程-吉哥 &#x1f34a;简介&#xff1a;专业从事JavaWeb程序开发&#xff0c;微信小程序开发&#xff0c;定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事&#xff0c;生活就是快乐的。 &#x1f34a;心愿&#xff1a;点…

k8s的一些命令

kubectl get nodes &#xff1a;查看节点的状态 查看Pod的状态&#xff1a; kubectl get pod --all -namespacesPending,ContainerCreating,ImagePullBackOff都表明Pod没有就绪&#xff0c;Running才是就绪状态 查看Pod的具体情况&#xff1a; kubectl describe pod podnamek…

# 利刃出鞘_Tomcat 核心原理解析(十一)-- Tomcat 附加功能 WebSocket -- 3

利刃出鞘_Tomcat 核心原理解析&#xff08;十一&#xff09;-- Tomcat 附加功能 WebSocket – 3 一、Tomcat专题 - WebSocket - 案例 - OnMessage分析 1、WebSocket DEMO 案例 实现流程分析&#xff1a;OnMessage 分析 2、在项目 dzs168_chat_room 中&#xff0c;在 websocke…

软件开发详解:同城O2O系统源码的架构设计与外卖跑腿APP的开发要点

随着互联网技术的发展&#xff0c;O2O&#xff08;OnlinetoOffline&#xff09;模式迅速成为了各类服务行业的核心运营模式。同城O2O系统不仅整合了线上和线下的资源&#xff0c;还可以通过智能调度和大数据分析提升用户体验和运营效率。接下来&#xff0c;我将详细探讨同城O2O…

iOS平台RTSP|RTMP直播播放器技术接入说明

技术背景 大牛直播SDK自2015年发布RTSP、RTMP直播播放模块&#xff0c;迭代从未停止&#xff0c;SmartPlayer功能强大、性能强劲、高稳定、超低延迟、超低资源占用。无需赘述&#xff0c;全自研内核&#xff0c;行业内一致认可的跨平台RTSP、RTMP直播播放器。本文以iOS平台为例…

渗透测试综合靶场 DC-1 通关详解

Vulnhub是一个提供各种漏洞环境的靶场平台&#xff0c;非常适合安全爱好者和渗透测试初学者进行学习和实践。在这个平台上&#xff0c;你可以下载多种虚拟机&#xff0c;这些虚拟机预装了各种漏洞&#xff0c;让你可以在本地环境中进行渗透测试、提权、漏洞利用和代码审计等操作…

9.18日常记录

一.信号和槽机制 信号和槽:是对象之间通信的一种机制 信号classA不关心有多少槽函数与之绑定&#xff0c;它只管触发信号&#xff0c;具体要触发哪些槽函数&#xff0c;是由Qt的信号和槽机制来实现的。这样的话就充分的体现了面向对象的解耦原则了&#xff0c;因为对于classA来…

上线跨境电商商城的步骤

上线一个跨境电商商城涉及多个步骤&#xff0c;从前期准备到上线后的维护。以下是一些关键步骤&#xff1a; 1. 市场调研与规划 目标市场分析&#xff1a;研究目标市场的需求、竞争对手和消费者行为。法律法规&#xff1a;了解并遵守目标市场的法律法规&#xff0c;包括税收、…

生产环境必备:Docker 搭建 Nexus 全流程与批量上传 Jar 包实战

目录 1.创建docker-compose文件 2.域名代理无域名需求可跳过 2.1创建nginx的compose &#xff08;映射端口更具实例进行改进&#xff09; 2.2创建nginx.conf 3.访问nexus 4.创建储存库以及批量上传jar包 4.1批量上传jar包 4.2创建两个sh脚本 4.3执行脚本 4.4成功验证 …

bug的处理流程是什么?一文教你快速学会bug的处理流程

一、Bug的属性 1、Bug重现环境 这个应该是我们重现bug的一个前提&#xff0c;如果没有这个前提&#xff0c;我们可能会无法重现问题&#xff0c;或者跟本就无从下手。 2、操作系统 这个是一般软件运行的一大前提&#xff0c;基本上所有的软件都依赖于操作系统之上的&#x…

中、美、德、日制造业理念差异

合格的产品依赖稳定可靠的人机料法环&#xff0c;要求减少变量因素&#xff0c;增加稳定因素&#xff0c;避免“熵”增&#xff1b;五个因素中任何一个不可控&#xff0c;批次产品的一致性绝对差&#xff1b; 日本汽车企业&#xff0c;侧重“人”和“环”&#xff0c; 倚重是人…

点工干了三年,快要废了。。。

8年前刚进入到IT行业&#xff0c;到现在学习软件测试的人越来越多&#xff0c;所以在这我想结合自己的一些看法给大家提一些建议。 最近聊到软件测试的行业内卷&#xff0c;越来越多的转行和大学生进入测试行业&#xff0c;导致软件测试已经饱和了&#xff0c;想要获得更好的待…