工信部网站备案怎么查,张家港网页设计培训,xampp 开发网站,电商ui设计是什么意思【算法介绍】
基于YOLOv11的棉花品种分类检测系统是一种高效、准确的农作物品种识别工具。该系统利用YOLOv11深度学习模型#xff0c;能够实现对棉花主要品种#xff0c;包括树棉#xff08;G. arboreum#xff09;、海岛棉#xff08;G. barbadense#xff09;、草棉能够实现对棉花主要品种包括树棉G. arboreum、海岛棉G. barbadense、草棉G. herbaceum和陆地棉G. hirsutum的自动识别与分类。
YOLOv11作为YOLO系列的最新版本引入了多尺度特征融合、注意力机制等先进技术显著提升了检测精度和速度。这使得该系统能够在复杂的农田环境中快速准确地识别出不同品种的棉花。
该系统通过采集棉花的图像数据利用YOLOv11模型进行训练和优化使其能够学习到各种棉花品种的特征。在实际应用中系统只需对棉花植株或棉花的某个部位进行拍照即可自动识别并分类出所属的品种。
基于YOLOv11的棉花品种分类检测系统具有广泛的应用前景可用于棉花种植管理、品种改良、病虫害预警等领域。通过该系统农民和农业专家可以更加便捷地了解棉花的品种分布和生长状况为精准农业提供有力的技术支撑。
【效果展示】 【训练数据集介绍】
数据集格式Pascal VOC格式YOLO格式(不包含分割路径的txt文件仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件)
图片数量(jpg文件个数)402
标注数量(xml文件个数)402
标注数量(txt文件个数)402
标注类别数4
标注类别名称(注意yolo格式类别顺序不和这个对应而以labels文件夹classes.txt为准):[G-arboreum,G-barbadense,G-herbaceum,G-hirsitum]
每个类别标注的框数
G-arboreum 框数 294
G-barbadense 框数 210
G-herbaceum 框数 236
G-hirsitum 框数 189
总框数929
使用标注工具labelImg
标注规则对类别进行画矩形框
重要说明暂无
特别声明本数据集不对训练的模型或者权重文件精度作任何保证数据集只提供准确且合理标注
图像预览 标注例子 【训练信息】
参数值训练集图片数363验证集图片数41训练map44.0%训练精度(Precision)32.6%训练召回率(Recall)44.0%
验证集评估精度信息 Class Images Instances P R mAP50 mAP50-95 all 41 125 0.326 0.44 0.44 0.235 G-arboreum 11 26 0.13 0.154 0.132 0.0542 G-barbadense 9 44 0.266 0.295 0.243 0.143 G-herbaceum 11 27 0.411 0.815 0.733 0.428 G-hirsitum 10 28 0.499 0.497 0.651 0.315
【测试环境】
windows10 anaconda3python3.8 torch2.3.0 ultralytics8.3.81 onnxruntime1.16.3
【界面代码】
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 ./weightsself.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() 【模型可检测出4类】
树棉G. arboreum、海岛棉G. barbadense、草棉G. herbaceum和陆地棉G. hirsutum
【常用评估参数介绍】
在目标检测任务中评估模型的性能是至关重要的。你提到的几个术语是评估模型性能的常用指标。下面是对这些术语的详细解释
Class 这通常指的是模型被设计用来检测的目标类别。例如一个模型可能被训练来检测车辆、行人或动物等不同类别的对象。 Images 表示验证集中的图片数量。验证集是用来评估模型性能的数据集与训练集分开以确保评估结果的公正性。 Instances 在所有图片中目标对象的总数。这包括了所有类别对象的总和例如如果验证集包含100张图片每张图片平均有5个目标对象则Instances为500。 P精确度Precision 精确度是模型预测为正样本的实例中真正为正样本的比例。计算公式为Precision TP / (TP FP)其中TP表示真正例True PositivesFP表示假正例False Positives。 R召回率Recall 召回率是所有真正的正样本中被模型正确预测为正样本的比例。计算公式为Recall TP / (TP FN)其中FN表示假负例False Negatives。 mAP50 表示在IoU交并比阈值为0.5时的平均精度mean Average Precision。IoU是衡量预测框和真实框重叠程度的指标。mAP是一个综合指标考虑了精确度和召回率用于评估模型在不同召回率水平上的性能。在IoU0.5时如果预测框与真实框的重叠程度达到或超过50%则认为该预测是正确的。 mAP50-95 表示在IoU从0.5到0.95间隔0.05的范围内模型的平均精度。这是一个更严格的评估标准要求预测框与真实框的重叠程度更高。在目标检测任务中更高的IoU阈值意味着模型需要更准确地定位目标对象。mAP50-95的计算考虑了从宽松到严格的多个IoU阈值因此能够更全面地评估模型的性能。
这些指标共同构成了评估目标检测模型性能的重要框架。通过比较不同模型在这些指标上的表现可以判断哪个模型在实际应用中可能更有效。
【使用步骤】
使用步骤 1首先根据官方框架ultralytics安装教程安装好yolov11环境并安装好pyqt5 2切换到自己安装的yolo11环境后并切换到源码目录执行python main.py即可运行启动界面进行相应的操作即可
【提供文件】
python源码 yolo11n.pt模型 训练的map,P,R曲线图(在weights\results.png) 测试图片在test_img文件夹下面
注意提供训练的数据集