基于yolov11的扑克牌识别检测系统python源码+onnx模型+评估指标曲线+精美GUI界面

基于yolov11的扑克牌识别检测系统python源码+onnx模型+评估指标曲线+精美GUI界面

【算法介绍】

基于YOLOv11的扑克牌识别检测系统是一种利用深度学习技术进行扑克牌种类和牌面信息识别的系统。该系统采用YOLOv11(You Only Look Once version 11)作为核心算法,这是一种高效的目标检测算法,能够将目标检测任务转化为回归问题,直接输出目标的类别和位置。

YOLOv11是YOLO系列的最新版本,相比之前的版本,它在检测精度、速度和适用性上都有所提升。这使得基于YOLOv11的扑克牌识别检测系统能够更快速、准确地识别扑克牌。

该系统可应用于多个领域,如智能纸牌游戏、线上扑克防作弊、教学辅助工具等。在智能纸牌游戏中,系统能够自动识别玩家手中的牌,实现自动计分、判断胜负等功能,提高游戏的趣味性和效率。在线上扑克防作弊方面,系统可以实时监测牌局,检测是否存在作弊行为,保障游戏的公平性和公正性。

此外,扑克牌识别检测系统还可以用于扑克牌生产质量检测、自动化包装与分拣、特殊场所的安全监控等场景。例如,在扑克牌生产过程中,系统可以对生产的扑克牌进行自动质量检测,确保产品质量符合标准。

总的来说,基于YOLOv11的扑克牌识别检测系统具有广泛的应用前景和重要的实用价值。

【效果展示】

【测试环境】

windows10

anaconda3+python3.8

torch==2.3.0

ultralytics==8.3.81

onnxruntime==1.16.3

【模型可以检测出52类别】

10C,10D,3H,3S,4C,4D,4H,4S,5C,5D,5H,5S,10H,6C,6D,6H,6S,7C,7D,7H,7S,8C,8D,10S,8H,8S,9C,9D,9H,9S,AC,AD,AH,AS,2C,JC,JD,JH,JS,KC,KD,KH,KS,QC,QD,2D,QH,QS,2H,2S,3C,3D

【训练数据集介绍】

数据集格式:Pascal VOC格式+YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件)

图片数量(jpg文件个数):24233

标注数量(xml文件个数):24233

标注数量(txt文件个数):24233

标注类别数:52

标注类别名称(注意yolo格式类别顺序不和这个对应,而以labels文件夹classes.txt为准):["2C","2D","2H","2S","3C","3D","3H","3S","4C","4D","4H","4S","5C","5D","5H","5S","6C","6D","6H","6S","7C","7D","7H","7S","8C","8D","8H","8S","9C","9D","9H","9S","10C","10D","10H","10S","AC","AD","AH","AS","JC","JD","JH","JS","KC","KD","KH","KS","QC","QD","QH","QS"]

每个类别标注的框数:

2C 框数 = 1835

2D 框数 = 1829

2H 框数 = 1784

2S 框数 = 1843

3C 框数 = 1946

3D 框数 = 1747

3H 框数 = 1804

3S 框数 = 1860

4C 框数 = 1983

4D 框数 = 1977

4H 框数 = 1957

4S 框数 = 1767

5C 框数 = 2020

5D 框数 = 1934

5H 框数 = 1737

5S 框数 = 1910

6C 框数 = 1768

6D 框数 = 1850

6H 框数 = 1743

6S 框数 = 1876

7C 框数 = 1796

7D 框数 = 1813

7H 框数 = 1911

7S 框数 = 1932

8C 框数 = 1786

8D 框数 = 1895

8H 框数 = 1892

8S 框数 = 1788

9C 框数 = 1774

9D 框数 = 1910

9H 框数 = 1893

9S 框数 = 1775

10C 框数 = 1847

10D 框数 = 1810

10H 框数 = 1897

10S 框数 = 1937

AC 框数 = 1903

AD 框数 = 1934

AH 框数 = 1805

AS 框数 = 1908

JC 框数 = 1965

JD 框数 = 1706

JH 框数 = 1720

JS 框数 = 1810

KC 框数 = 1892

KD 框数 = 1916

KH 框数 = 1876

KS 框数 = 1902

QC 框数 = 1906

QD 框数 = 1940

QH 框数 = 1891

QS 框数 = 2009

总框数:96909

使用标注工具:labelImg

标注规则:对类别进行画矩形框

重要说明:数据集有增强图片

特别声明:本数据集不对训练的模型或者权重文件精度作任何保证,数据集只提供准确且合理标注

图片预览:

标注例子:

【训练信息】

参数

训练集图片数

16963

验证集图片数

4847

训练map

99.5%

训练精度(Precision)

99.9%

训练召回率(Recall)

99.9%

验证集测试精度信息

类别

MAP50

all

99

10C

100

10D

100

3H

100

3S

100

4C

100

4D

100

4H

100

4S

100

5C

100

5D

100

5H

100

5S

100

10H

100

6C

100

6D

100

6H

100

6S

100

7C

100

7D

100

7H

100

7S

100

8C

100

8D

100

10S

100

8H

100

8S

100

9C

100

9D

100

9H

100

9S

100

AC

100

AD

100

AH

100

AS

100

2C

99

JC

100

JD

100

JH

100

JS

100

KC

100

KD

100

KH

100

KS

100

QC

99

QD

100

2D

100

QH

100

QS

100

2H

99

2S

100

3C

99

3D

100

【界面设计】

代码语言:javascript代码运行次数:0运行复制import os

import sys

from PyQt5 import QtCore, QtGui, QtWidgets

from PyQt5.QtCore import QThread, pyqtSignal

from PyQt5.QtGui import QImage, QPixmap

from PyQt5.QtWidgets import QFileDialog, QLabel, QApplication

import image_rc

import threading

import cv2

import numpy as np

import time

from Yolo11Detector import *

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.detector=None

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.3)

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()【训练步骤】

使用YOLO11训练自己的数据集需要遵循一些基本的步骤。YOLO11是YOLO系列模型的一个版本,它在前代基础上做了许多改进,包括但不限于更高效的训练流程和更高的精度。以下是训练自己YOLO格式数据集的详细步骤:

一、 准备环境

1. 安装必要的软件:确保你的计算机上安装了Python(推荐3.6或更高版本),以及CUDA和cuDNN(如果你打算使用GPU进行加速)。

2. 安装YOLO11库:你可以通过GitHub克隆YOLOv8的仓库或者直接通过pip安装YOLO11。例如:

pip install ultralytics

二、数据准备

3. 组织数据结构:按照YOLO的要求组织你的数据文件夹。通常,你需要一个包含图像和标签文件的目录结构,如:

dataset/

├── images/

│ ├── train/

│ └── val/

├── labels/

│ ├── train/

│ └── val/

其中,train和val分别代表训练集和验证集。且images文件夹和labels文件夹名字不能随便改写或者写错,否则会在训练时候找不到数据集。

4. 标注数据:使用合适的工具对图像进行标注,生成YOLO格式的标签文件。每个标签文件应该是一个.txt文件,每行表示一个边界框,格式为:

<类别ID> <中心点x> <中心点y> <宽度> <高度>

这些值都是相对于图像尺寸的归一化值。

5. 创建数据配置文件:创建一个.yaml文件来定义你的数据集,包括路径、类别列表等信息。例如:

yaml

# dataset.yaml

path: ./dataset # 数据集根目录

train: images/train # 训练图片相对路径

val: images/val # 验证图片相对路径

nc: 2 # 类别数

names: ['class1', 'class2'] # 类别名称

三、模型训练

6. 加载预训练模型:可以使用官方提供的预训练模型作为起点,以加快训练速度并提高性能。

7. 配置训练参数:根据需要调整训练参数,如批量大小、学习率、训练轮次等。这通常可以通过命令行参数或配置文件完成。

8. 开始训练:使用YOLO11提供的命令行接口开始训练过程。例如:

yolo train data=dataset.yaml model=yolo11n.yaml epochs=100 imgsz=640

更多参数如下:

参数

默认值

描述

model

None

Specifies the model file for training. Accepts a path to either a .pt pretrained model or a .yaml configuration file. Essential for defining the model structure or initializing weights.

data

None

Path to the dataset configuration file (e.g., coco8.yaml). This file contains dataset-specific parameters, including paths to training and validation data , class names, and number of classes.

epochs

100

Total number of training epochs. Each epoch represents a full pass over the entire dataset. Adjusting this value can affect training duration and model performance.

time

None

Maximum training time in hours. If set, this overrides the epochs argument, allowing training to automatically stop after the specified duration. Useful for time-constrained training scenarios.

patience

100

Number of epochs to wait without improvement in validation metrics before early stopping the training. Helps prevent overfitting by stopping training when performance plateaus.

batch

16

Batch size, with three modes: set as an integer (e.g., batch=16), auto mode for 60% GPU memory utilization (batch=-1), or auto mode with specified utilization fraction (batch=0.70).

imgsz

640

Target image size for training. All images are resized to this dimension before being fed into the model. Affects model accuracy and computational complexity.

save

True

Enables saving of training checkpoints and final model weights. Useful for resuming training ormodel deployment.

save_period

-1

Frequency of saving model checkpoints, specified in epochs. A value of -1 disables this feature. Useful for saving interim models during long training sessions.

cache

False

Enables caching of dataset images in memory (True/ram), on disk (disk), or disables it (False). Improves training speed by reducing disk I/O at the cost of increased memory usage.

device

None

Specifies the computational device(s) for training: a single GPU (device=0), multiple GPUs (device=0,1), CPU (device=cpu), or MPS for Apple silicon (device=mps).

workers

8

Number of worker threads for data loading (per RANK if Multi-GPU training). Influences the speed of data preprocessing and feeding into the model, especially useful in multi-GPU setups.

project

None

Name of the project directory where training outputs are saved. Allows for organized storage of different experiments.

name

None

Name of the training run. Used for creating a subdirectory within the project folder, where training logs and outputs are stored.

exist_ok

False

If True, allows overwriting of an existing project/name directory. Useful for iterative experimentation without needing to manually clear previous outputs.

pretrained

True

Determines whether to start training from a pretrained model. Can be a boolean value or a string path to a specific model from which to load weights. Enhances training efficiency and model performance.

optimizer

'auto'

Choice of optimizer for training. Options include SGD, Adam, AdamW, NAdam, RAdam, RMSProp etc., or auto for automatic selection based on model configuration. Affects convergence speed and stability.

verbose

False

Enables verbose output during training, providing detailed logs and progress updates. Useful for debugging and closely monitoring the training process.

seed

0

Sets the random seed for training, ensuring reproducibility of results across runs with the same configurations.

deterministic

True

Forces deterministic algorithm use, ensuring reproducibility but may affect performance and speed due to the restriction on non-deterministic algorithms.

single_cls

False

Treats all classes in multi-class datasets as a single class during training. Useful for binary classification tasks or when focusing on object presence rather than classification.

rect

False

Enables rectangular training, optimizing batch composition for minimal padding. Can improve efficiency and speed but may affect model accuracy.

cos_lr

False

Utilizes a cosine learning rate scheduler, adjusting the learning rate following a cosine curve over epochs. Helps in managing learning rate for better convergence.

close_mosaic

10

Disables mosaic data augmentation in the last N epochs to stabilize training before completion. Setting to 0 disables this feature.

resume

False

Resumes training from the last saved checkpoint. Automatically loads model weights, optimizer state, and epoch count, continuing training seamlessly.

amp

True

Enables AutomaticMixed Precision (AMP) training, reducing memory usage and possibly speeding up training with minimal impact on accuracy.

fraction

1.0

Specifies the fraction of the dataset to use for training. Allows for training on a subset of the full dataset, useful for experiments or when resources are limited.

profile

False

Enables profiling of ONNX and TensorRT speeds during training, useful for optimizing model deployment.

freeze

None

Freezes the first N layers of the model or specified layers by index, reducing the number of trainable parameters. Useful for fine-tuning or transfer learning .

lr0

0.01

Initial learning rate (i.e. SGD=1E-2, Adam=1E-3) . Adjusting this value is crucial for the optimization process, influencing how rapidly model weights are updated.

lrf

0.01

Final learning rate as a fraction of the initial rate = (lr0 * lrf), used in conjunction with schedulers to adjust the learning rate over time.

momentum

0.937

Momentum factor for SGD or beta1 for Adam optimizers, influencing the incorporation of past gradients in the current update.

weight_decay

0.0005

L2 regularization term, penalizing large weights to prevent overfitting.

warmup_epochs

3.0

Number of epochs for learning rate warmup, gradually increasing the learning rate from a low value to the initial learning rate to stabilize training early on.

warmup_momentum

0.8

Initial momentum for warmup phase, gradually adjusting to the set momentum over the warmup period.

warmup_bias_lr

0.1

Learning rate for bias parameters during the warmup phase, helping stabilize model training in the initial epochs.

box

7.5

Weight of the box loss component in the loss_function, influencing how much emphasis is placed on accurately predicting bouding box coordinates.

cls

0.5

Weight of the classification loss in the total loss function, affecting the importance of correct class prediction relative to other components.

dfl

1.5

Weight of the distribution focal loss, used in certain YOLO versions for fine-grained classification.

pose

12.0

Weight of the pose loss in models trained for pose estimation, influencing the emphasis on accurately predicting pose keypoints.

kobj

2.0

Weight of the keypoint objectness loss in pose estimation models, balancing detection confidence with pose accuracy.

label_smoothing

0.0

Applies label smoothing, softening hard labels to a mix of the target label and a uniform distribution over labels, can improve generalization.

nbs

64

Nominal batch size for normalization of loss.

overlap_mask

True

Determines whether object masks should be merged into a single mask for training, or kept separate for each object. In case of overlap, the smaller mask is overlayed on top of the larger mask during merge.

mask_ratio

4

Downsample ratio for segmentation masks, affecting the resolution of masks used during training.

dropout

0.0

Dropout rate for regularization in classification tasks, preventing overfitting by randomly omitting units during training.

val

True

Enables validation during training, allowing for periodic evaluation of model performance on a separate dataset.

plots

False

Generates and saves plots of training and validation metrics, as well as prediction examples, providing visual insights into model performance and learning progression.

这里,data参数指向你的数据配置文件,model参数指定使用的模型架构,epochs设置训练轮次,imgsz设置输入图像的大小。

四、监控与评估

9. 监控训练过程:观察损失函数的变化,确保模型能够正常学习。

10. 评估模型:训练完成后,在验证集上评估模型的性能,查看mAP(平均精确度均值)等指标。

11. 调整超参数:如果模型的表现不佳,可能需要调整超参数,比如增加训练轮次、改变学习率等,并重新训练模型。

五、使用模型

12. 导出模型:训练完成后,可以将模型导出为ONNX或其他格式,以便于部署到不同的平台。比如将pytorch转成onnx模型可以输入指令

yolo export model=best.pt format=onnx

这样就会在pt模块同目录下面多一个同名的onnx模型best.onnx

下表详细说明了可用于将YOLO模型导出为不同格式的配置和选项。这些设置对于优化导出模型的性能、大小和跨各种平台和环境的兼容性至关重要。正确的配置可确保模型已准备好以最佳效率部署在预期的应用程序中。

参数

类型

默认值

描述

format

str

'torchscript'

Target format for the exported model, such as 'onnx', 'torchscript', 'tensorflow', or others, defining compatibility with various deployment environments.

imgsz

int or tuple

640

Desired image size for the model input. Can be an integer for square images or a tuple (height, width) for specific dimensions.

keras

bool

False

Enables export to Keras format for Tensorflow SavedModel, providing compatibility with TensorFlow serving and APIs.

optimize

bool

False

Applies optimization for mobile devices when exporting to TorchScript, potentially reducing model size and improving performance.

half

bool

False

Enables FP16 (half-precision) quantization, reducing model size and potentially speeding up inference on supported hardware.

int8

bool

False

Activates INT8 quantization, further compressing the model and speeding up inference with minimal accuracy loss, primarily for edge devices.

dynamic

bool

False

Allows dynamic input sizes for ONNX, TensorRT and OpenVINO exports, enhancing flexibility in handling varying image dimensions.

simplify

bool

True

Simplifies the model graph for ONNX exports with onnxslim, potentially improving performance and compatibility.

opset

int

None

Specifies the ONNX opset version for compatibility with different ONNX parsers and runtimes. If not set, uses the latest supported version.

workspace

float

4.0

Sets the maximum workspace size in GiB for TensorRT optimizations, balancing memory usage and performance.

nms

bool

False

Adds Non-Maximum Suppression (NMS) to the CoreML export, essential for accurate and efficient detection post-processing.

batch

int

1

Specifies export model batch inference size or the max number of images the exported model will process concurrently in predict mode.

device

str

None

Specifies the device for exporting: GPU (device=0), CPU (device=cpu), MPS for Apple silicon (device=mps) or DLA for NVIDIA Jetson (device=dla:0 or device=dla:1).

调整这些参数可以定制导出过程,以满足特定要求,如部署环境、硬件约束和性能目标。选择适当的格式和设置对于实现模型大小、速度和精度之间的最佳平衡至关重要。

导出格式:

可用的YOLO11导出格式如下表所示。您可以使用format参数导出为任何格式,即format='onnx'或format='engine'。您可以直接在导出的模型上进行预测或验证,即yolo predict model=yolo11n.onnx。导出完成后,将显示您的模型的使用示例。

导出格式

格式参数

模型

属性

参数

pytorch

-

yolo11n.pt

-

torchscript

torchscript

yolo11n.torchscript

imgsz, optimize, batch

onnx

onnx

yolo11n.onnx

imgsz, half, dynamic, simplify, opset, batch

openvino

openvino

yolo11n_openvino_model/

imgsz, half, int8, batch

tensorrt

engine

yolo11n.engine

imgsz, half, dynamic, simplify, workspace, int8, batch

CoreML

coreml

yolo11n.mlpackage

imgsz, half, int8, nms, batch

TF SaveModel

saved_model

yolo11n_saved_model/

imgsz, keras, int8, batch

TF GraphDef

pb

yolo11n.pb

imgsz, batch

TF Lite

tflite

yolo11n.tflite

imgsz, half, int8, batch

TF Edge TPU

edgetpu

yolo11n_edgetpu.tflite

imgsz

TF.js

tfjs

yolo11n_web_model/

imgsz, half, int8, batch

PaddlePaddle

paddle

yolo11n_paddle_model/

imgsz, batch

MNN

mnn

yolo11n.mnn

imgsz, batch, int8, half

NCNN

ncnn

yolo11n_ncnn_model/

imgsz, half, batch

13. 测试模型:在新的数据上测试模型,确保其泛化能力良好。

以上就是使用YOLO11训练自己数据集的基本步骤。请根据实际情况调整这些步骤中的具体细节。希望这些信息对你有所帮助!

【常用评估参数介绍】

在目标检测任务中,评估模型的性能是至关重要的。你提到的几个术语是评估模型性能的常用指标。下面是对这些术语的详细解释:

Class: 这通常指的是模型被设计用来检测的目标类别。例如,一个模型可能被训练来检测车辆、行人或动物等不同类别的对象。Images: 表示验证集中的图片数量。验证集是用来评估模型性能的数据集,与训练集分开,以确保评估结果的公正性。Instances: 在所有图片中目标对象的总数。这包括了所有类别对象的总和,例如,如果验证集包含100张图片,每张图片平均有5个目标对象,则Instances为500。P(精确度Precision): 精确度是模型预测为正样本的实例中,真正为正样本的比例。计算公式为:Precision = TP / (TP + FP),其中TP表示真正例(True Positives),FP表示假正例(False Positives)。R(召回率Recall): 召回率是所有真正的正样本中被模型正确预测为正样本的比例。计算公式为:Recall = TP / (TP + FN),其中FN表示假负例(False Negatives)。mAP50: 表示在IoU(交并比)阈值为0.5时的平均精度(mean Average Precision)。IoU是衡量预测框和真实框重叠程度的指标。mAP是一个综合指标,考虑了精确度和召回率,用于评估模型在不同召回率水平上的性能。在IoU=0.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.onnx模型(不提供pytorch模型)

训练的map,P,R曲线图(在weights\results.png)

测试图片(在test_img文件夹下面)

注意不提供数据集

相关推荐

炘的意思,炘的解释,炘的拼音,炘的部首,炘的笔顺
office365无法登录账号

炘的意思,炘的解释,炘的拼音,炘的部首,炘的笔顺

📅 06-29 👁️ 1702
天天向上
365beat中文版

天天向上

📅 08-06 👁️ 448
茶杯犬的品种介绍
365平台怎么注册

茶杯犬的品种介绍

📅 06-30 👁️ 2947
寻仙怎么提高战力?(寻仙怎么提高战力值)
office365无法登录账号

寻仙怎么提高战力?(寻仙怎么提高战力值)

📅 07-09 👁️ 8594
奇迹MU礼包码汇总 最新兑换码大全
office365无法登录账号

奇迹MU礼包码汇总 最新兑换码大全

📅 07-29 👁️ 1251
透析做人工血管的利弊
365平台怎么注册

透析做人工血管的利弊

📅 07-11 👁️ 4206
视频怎么转换成mp4格式?5种方法快速搞定
365beat中文版

视频怎么转换成mp4格式?5种方法快速搞定

📅 06-27 👁️ 7912
LOLs14猴子出装推荐
office365无法登录账号

LOLs14猴子出装推荐

📅 06-30 👁️ 7761
员工离职劝说技巧有哪些?如何有效挽留关键人才?
365平台怎么注册

员工离职劝说技巧有哪些?如何有效挽留关键人才?

📅 08-07 👁️ 286