建行网站会员有什么用,论坛推广的步骤,什么网站上可以做国际贸易,聊天网站怎么建设目标检测入门精品文章 本文介绍目标检测基础概念#xff0c;算法发展历史#xff0c;YOLOV8环境配置#xff0c;数据集标注#xff0c;模型评估指标#xff0c;改进策略。帮助小白从入门到精通。 目录
一、目标检测基础
1.1 基本概念
1.2 发展历史 1.3 目标检测四大任务… 目标检测入门精品文章 本文介绍目标检测基础概念算法发展历史YOLOV8环境配置数据集标注模型评估指标改进策略。帮助小白从入门到精通。 目录
一、目标检测基础
1.1 基本概念
1.2 发展历史 1.3 目标检测四大任务
1.4 目标检测算法的分类
二、环境配置
2.1 下载YOLOv8项目Anaconda和PyCharm
2.2 安装Anaconda和PyCharm
2.3 创建虚拟环境
2.4 租用GPU搭建环境
三、目标检测流程
3.1 训练
3.2 测试
四、数据集
4.1 简介
4.2 数据集标注
1 Labelme
2 LabelImg
4.3 VOC数据集转换
五、模型评价指标 一、目标检测基础
1.1 基本概念 目标检测Object Detection是计算机视觉领域的重要任务之一旨在识别图像或视频中的特定目标并将其位置标记出来。与图像分类任务不同目标检测要求不仅能够识别目标类别还需要精确地定位目标的位置。由于各类物体有不同的外观、形状和姿态加上成像时光照、遮挡等因素的干扰目标检测一直是计算机视觉领域最具有挑战性的问题。 1.2 发展历史 目标检测技术的发展历史可以追溯到20世纪80年代。在早期阶段目标检测主要依赖于手工设计的特征提取算法和分类器。这些方法通常基于边缘、纹理、颜色等低级特征并结合模板匹配或统计模型进行目标检测。然而这些方法受限于特征的表达能力和鲁棒性对于复杂场景的检测效果较差。 随着计算机视觉和机器学习的快速发展基于机器学习的目标检测方法逐渐兴起。其中主要的突破之一是提出了基于特征的机器学习方法如Haar特征和HOG特征。这些方法通过训练分类器来学习目标的特征表示从而实现目标的检测。然而这些方法仍然需要手动设计特征并且对于复杂的目标来说特征的表示能力较弱。 近年来深度学习的兴起极大地推动了目标检测技术的发展。基于深度学习的目标检测方法将深度神经网络引入目标检测领域并取得了重大突破。最具代表性的方法之一是基于区域的卷积神经网络(R-CNN)它将目标检测任务分解为候选区域提取和区域分类两个子任务。后续的方法如Fast R-CNN、Faster R-CNN和YOLO(You Only Look Once)等进一步改进了速度和准确性。这些方法不仅能够自动学习特征表示还能够在端到端的框架下进行目标检测。 YOLOYou Only Look Once是一种对象检测算法由Joseph Redmon等人于2015年提出。YOLO的核心思想是将对象检测任务转化为一个回归问题通过一个卷积神经网络直接在图像上进行推理实现实时对象检测。
YOLO的发展历程可以分为以下几个阶段 YOLO v1YOLO的第一个版本是在2015年提出的它采用了一个全卷积神经网络将输入图像分为S×S个网格每个网格预测B个边界框和各自边界框的类别概率。然后通过阈值筛选和非极大值抑制NMS来获得最终的检测结果。YOLO v1在速度和准确率上取得了很大的突破但对小目标和近似目标的检测效果较差。 YOLOv5是由Ultralytics团队在2020年开发的。YOLOv5相比于之前的版本在精度和速度上都有显著提升。它采用了一种轻量化的结构包括多个不同大小的卷积层和池化层用于提取图像特征。与以往的版本相比YOLOv5引入了新的网络架构以及一种新的训练方法使用更大的数据集和更长的训练时间从而提高了算法的性能。 YOLOv8 是由 Ultralytics 公司在2023年1月发布的最新一代实时目标检测模型。YOLOv8 采用了先进的骨干网络和颈部架构实现了改进的特征提取和目标检测性能。它采用了无锚点的分割 Ultralytics 头部设计这有助于提高准确性并使检测过程更加高效。YOLOv8 还专注于在准确性和速度之间保持最佳平衡适合于不同应用领域的实时目标检测任务。此外YOLOv8 提供了一系列预训练模型以满足不同任务和性能要求使得用户可以根据自己的具体用例找到合适的模型。 YOLOv9 由中国台湾 Academia Sinica、台北科技大学等机构联合开发。YOLOv9引入了程序化梯度信息Programmable Gradient Information, PGI这是一种全新的概念旨在解决深层网络中信息丢失的问题。传统的目标检测网络在传递深层信息时往往会丢失对最终预测至关重要的细节而PGI技术能够保证网络在学习过程中保持完整的输入信息从而获得更可靠的梯度信息提高权重更新的准确性。这一创新显著提高了目标检测的准确率为实时高精度目标检测提供了可能。此外YOLOv9采用了全新的网络架构——泛化高效层聚合网络Generalized Efficient Layer Aggregation Network, GELAN。GELAN通过梯度路径规划优化了网络结构利用传统的卷积操作符实现了超越当前最先进方法包括基于深度卷积的方法的参数利用效率。这一设计不仅提高了模型的性能同时也保证了模型的高效性使YOLOv9能够在保持轻量级的同时达到前所未有的准确度和速度。
论文地址https://arxiv.org/abs/2402.13616
Yolov9源代码https://github.com/WongKinYiu/yolov9 YOLOv10是清华大学的研究人员在Ultralytics的基础上引入了一种新的实时目标检测方法解决了YOLO 以前版本在后处理和模型架构方面的不足。通过消除非最大抑制NMS和优化各种模型组件YOLOv10 在显著降低计算开销的同时实现了最先进的性能。大量实验证明YOLOv10 在多个模型尺度上实现了卓越的精度-延迟权衡。
YOLOv10 的结构建立在以前YOLO 模型的基础上同时引入了几项关键创新。模型架构由以下部分组成 主干网络YOLOv10 中的主干网络负责特征提取它使用了增强版的 CSPNet跨阶段部分网络以改善梯度流并减少计算冗余。 颈部网络颈部设计用于汇聚不同尺度的特征并将其传递到头部。它包括 PAN路径聚合网络层可实现有效的多尺度特征融合。 一对多头在训练过程中为每个对象生成多个预测以提供丰富的监督信号并提高学习准确性。 一对一头在推理过程中为每个对象生成一个最佳预测无需 NMS从而减少延迟并提高效率。
论文https://arxiv.org/pdf/2405.14458
源码: GitHub - THU-MIG/yolov10: YOLOv10: Real-Time End-to-End Object Detection YOLOv11作为YOLO系列的最新版本在多个方面进行了创新和改进以下是其主要创新点
1. 架构优化 C3K2块YOLOv11引入了C3K2块这是一种改进的特征提取模块继承自C2f模块通过更高效的卷积结构提升了特征提取能力。 SPFF模块空间金字塔快速池化SPFF模块被集成到架构中增强了多尺度特征融合能力。 C2PSA模块跨阶段部分空间注意力C2PSA模块通过空间注意力机制提升了模型对小物体和部分遮挡物体的检测能力。
2. 特征提取能力增强 YOLOv11采用了改进的骨干网络Backbone和颈部结构Neck增强了特征提取能力能够更精确地处理复杂任务。 骨干网络基于优化后的CSPDarknet53增加了轻量化模块如SPPF提升了特征提取的鲁棒性。
3. 效率和速度优化 GPU优化YOLOv11在GPU上进行了优化训练显著提升了训练速度和推理速度。 参数减少与YOLOv8相比YOLOv11在参数数量上减少了22%同时保持了更高的平均精度mAP提高了计算效率。
4. 检测头改进 检测头引入了DWConv深度可分离卷积使模型更加轻量级同时提高了小物体检测的准确性。 目前目标检测技术仍在不断发展。一方面研究者们致力于提高目标检测的准确性和效率。另一方面一些新的方向也在探索中如目标实例分割、多目标跟踪等。可以预见随着技术的不断进步目标检测技术将在更广泛的应用领域中发挥更大的作用。 1.3 目标检测四大任务 分类-Classification解决“是什么”的问题即给定一张图片或一段视频判断里面包含什么类别的目标。 定位-Location解决“在哪里”的问题即定位出这个目标的的位置。 检测-Detection解决“是什么在哪里”的问题即定位出这个目标的的位置并且知道目标物是什么。 分割-Segmentation分为实例的分割Instance-level和场景分割Scene-level解决“每一个像素属于哪个目标物或场景”的问题。 目标检测任务可分为两个关键的子任务目标分类和目标定位。目标分类任务负责判断输入图像或所选择图像区域Proposals中是否有感兴趣类别的物体出现输出一系列带分数的标签表明感兴趣类别的物体出现在输入图像或所选择图像区域Proposals中的可能性。目标定位任务负责确定输入图像或所选择图像区域Proposals中感兴趣类别的物体的位置和范围输出物体的包围盒、或物体中心、或物体的闭合边界等通常使用方形包围盒即Bounding Box用来表示物体的位置信息。 1.4 目标检测算法的分类 目前主流的目标检测算法主要是基于深度学习模型大概可以分成两大类别
1One-Stage单阶段目标检测算法这类检测算法不需要Region Proposal阶段可以通过一个Stage直接产生物体的类别概率和位置坐标值比较典型的算法有YOLO、SSD和CornerNetOne-Stage目标检测算法可以在一个stage直接产生物体的类别概率和位置坐标值相比于Two-Stage的目标检测算法不需要Region Proposal阶段整体流程较为简单。如下图所示在Testing的时候输入图片通过CNN网络产生输出解码后处理生成对应检测框即可在Training的时候则需要将Ground Truth编码成CNN输出对应的格式以便计算对应损失loss。 目前对于One-Stage算法的主要创新主要集中在如何设计CNN结构、如何构建网络目标以及如何设计损失函数上。
2Two-Stage双阶段目标检测算法这类检测算法将检测问题划分为两个阶段第一个阶段首先产生候选区域Region Proposals包含目标大概的位置信息然后第二个阶段对候选区域进行分类和位置精修这类算法的典型代表有R-CNNFast R-CNNFaster R-CNN等。目标检测模型的主要性能指标是检测准确度和速度其中准确度主要考虑物体的定位以及分类准确度。一般情况下Two-Stage算法在准确度上有优势而One-Stage算法在速度上有优势。不过随着研究的发展两类算法都在两个方面做改进均能在准确度以及速度上取得较好的结果。 Two-Stage目标检测算法流程如下图所示在Testing的时候输入图片经过卷积神经网络产生第一阶段输出对输出进行解码处理生成候选区域然后获取对应候选区域的特征表示ROIs然后对ROIs进一步精化产生第二阶段的输出解码后处理生成最终结果解码生成对应检测框即可在Training的时候需要将Ground Truth编码成CNN输出对应的格式以便计算对应损失loss。 二、环境配置 想要搭建YOLOv8目标检测模型首先需要下载代码配置环境。让我们开始吧
2.1 下载YOLOv8项目Anaconda和PyCharm 首先点击以下网址下载YOLOv8项目
ultralytics/ultralytics: NEW - YOLOv8 in PyTorch ONNX OpenVINO CoreML TFLite (github.com) 打开项目点击Code,下载下来解压。如下图所示。 解压后会得到一个文件夹。如下图所示。 2.2 安装Anaconda和PyCharm
Anaconda官网Download Anaconda Distribution | Anaconda
PyCharm官网PyCharm适用于数据科学和 Web 开发的 Python IDE (jetbrains.com)
PyCharm建议下载专业版的上网找个激活码就ok。
安装过程很简单网上教程一大堆随便找个一步步来就可以。就不再赘述。 2.3 创建虚拟环境 安装好Anaconda之后在开始菜单栏会有文件夹打开Anaconda Prompt记住不能错必须是Anaconda Prompt 新建虚拟环境
conda activate yolov8
# -c pytorch可以去掉即不指定pytorch官方channel下载国内快一点
conda install pytorch1.13.0 torchvision0.14.0 torchaudio0.13.0 pytorch-cuda11.6 -c nvidia
# 或者pip下载 (2选1)
pip install torch1.13.0cu116 torchvision0.14.0cu116 torchaudio0.13.0 --extra-index-url https://download.pytorch.org/whl/cu116
右击YOLOv8项目以PyCharm打开在环境里面使用我们刚刚创建的yolov8
2.4 租用GPU搭建环境 由于目标检测训练时间长内存占用大不建议在自己的电脑上训练推荐租用GUP进行训练价格也很便宜通常在1-2元一小时。
AutoDL是一个国内的GPU租用平台AutoDL可以提供服务稳定、价格公道的GPU租用服务。更为学生提供免费升级会员通道享极具性价比的会员价格。 并且操作简单解决了本地深度学习任务中显卡性能不够用的问题。
本文详细介绍如何租用和配置环境。链接http://t.csdnimg.cn/7n7hL 三、目标检测流程 基于深度学习的目标检测主要包括训练和测试两个部分。
3.1 训练 训练的主要目的是利用训练数据集进行检测网络的参数学习。训练数据集包含大量的视觉图像及标注信息物体位置及类别。如图a所示训练阶段的主要过程包括数据预处理、检测网络以及标签匹配与损失计算等部分。
1数据预处理。数据预处理旨在增强训练数据多样性进而提升检测网络的检测能力。常用的数据增强手段有翻转、缩放、均值归一化和色调变化等。 2检测网络。检测网络一般包括基础骨干、特征融合及预测网络3部分。目标检测器的基础骨干通常采用用于图像分类的深度卷积网络如AlexNet 、VGGNet、ResNet和DenseNet等。近期研究人员开始采用基于Transformer的基础骨干网络如ViTvision transformer、Swin和PVTpyramid vision transformer等。通常将大规模图像分类数据库ImageNet上的预训练权重作为检测器骨干网络的初始权重。
特征融合主要是对基础骨干提取的特征进行融合用于后续分类和回归。常见的特征融合方式是特征金字塔结构。
最后预测网络进行分类和回归等任务。在两阶段目标检测方法中分类和回归通常采用全连接的方式而在单阶段的方法中分类和回归等通常采用全卷积的方式。与此同时检测器通常还需要一些初始化如锚点框初始化、角点初始化和查询特征初始化等。
3标签分配与损失计算。标签分配主要是为检测器预测提供真实值。在目标检测中标签分配的准则包括交并比intersection over unionIoU准则、距离准则、似然估计准则和二分匹配等。交并比准则通常用于基于锚点框的目标检测方法根据锚点框与物体真实框之间的交并比将锚点框分配到对应的物体。距离准则通常用于无锚点框的目标检测方法根据点到物体中心的距离将其分配到对应的物体。似然估计准则和二分匹配通常基于分类和回归的联合损失进行最优标签分配。基于标签分类的结果采用损失函数计算分类和回归等任务的损失并利用反向传播算法更新检测网络的权重。常用的分类损失函数有交叉熵损失函数、聚焦损失函数等而回归损失函数有L1损失函数、平滑L1损失函数、交并比IoU损失函数、GIoU generalized IoU损失函数Rezatofighi等2019和CIoUcomplete-IoU损失函数等。
3.2 测试 基于训练阶段学习的检测网络在测试阶段输出给定图像中存在物体的类别以及位置信息。如图b所示主要包括输入图像、检测网络和后处理等过程。对于一幅给定的图像先利用训练好的检测网络生成分类和回归结果。一般而言大部分目标检测方法在同一物体周围会生成多个检测结果。因此大部分目标检测方法需要一个后处理步骤旨在为每个物体保留一个检测结果并去除其他冗余的检测结果。最常用的后处理方法为非极大值抑制方法non-maximum suppressionNMS。 NMS 试图为每个物体保留一个分类得分最高的检测结果。Bodla等人2017认为NMS方法容易将距离较近的多个物体检测结果合并造成部分物体漏检的问题。为解决这一问题Bodla等人2017对NMS进行改进并提出Soft-NMS。该方法通过降低交并比高的检测结果的分类得分来抑制冗余检测。Jiang等人2018提出IoUNet预测检测框与物体真实框之间的交并比并根据预测的交并比值进行非极大值抑制。He等人2018提出学习检测框的定位方差并利用定位方差线性加权邻近检测框来提升当前检测框的定位精度。
四、数据集
4.1 简介 数据集是必不可少的部分数据集的优劣直接影响训练效果。一般来说一个完整的数据集应该包括训练集、测试集和验证集。通常数据集会被划分为训练集和测试集比如将数据集的70%用作训练集30%用作测试集。在进行训练时可以使用交叉验证的方法将训练集再次划分为训练子集和验证子集用于模型的训练和验证。 训练集是用于模型的训练的数据集。在训练过程中模型使用训练集中的样本进行学习和参数调整通过不断迭代优化模型的参数使模型能够更好地拟合训练集中的数据。 测试集是用于模型的评估的数据集。在训练完成后使用测试集中的样本来评估模型的性能和泛化能力。测试集中的样本是模型没有看到过的样本可以用来判断模型是否过拟合了训练集以及模型在真实场景中的表现如何。 验证集是用于模型的调优的数据集。在训练过程中可以使用验证集对模型进行调参比如选择合适的模型结构、调整超参数等。验证集的作用是帮助选择最佳的模型并避免使用测试集对模型进行过度调优。
4.2 数据集标注 模型的建立需要收集图片并且进行标注。YOLOv8标注的文件格式如下 其中每一行通常包含五个数字分别是类别标签和四个坐标值。这四个坐标值的含义如下 类别标签Class Label第一个数字表示目标对象的类别。例如如果数据集中有多个类别每个类别会被分配一个唯一的整数标签。 中心点的x坐标Center x第二个数字表示目标框中心点的x坐标该坐标是相对于图像宽度的比例值范围在0到1之间。 中心点的y坐标Center y第三个数字表示目标框中心点的y坐标该坐标是相对于图像高度的比例值范围在0到1之间。 宽度Width第四个数字表示目标框的宽度也是相对于图像宽度的比例值范围在0到1之间。 高度Height第五个数字表示目标框的高度是相对于图像高度的比例值范围在0到1之间。 手动标注很累推荐使用下面的项目进行标注
1 Labelme labelme 是一款开源的图像/视频标注工具标签可用于目标检测、分割和分类。灵感是来自于 MIT 开源的一款标注工具 LabelMe。labelme 具有的特点是
支持图像的标注的组件有矩形框多边形圆线点rectangle, polygons, circle, lines, points支持视频标注GUI 自定义支持导出 VOC 格式用于 semantic/instance segmentation支出导出 COCO 格式用于 instance segmentation
项目地址GitHub - labelmeai/labelme: Image Polygonal Annotation with Python (polygon, rectangle, circle, line, point and image-level flag annotation).
2 LabelImg LabelImg是一个图形化的图像注释工具。它是用Python编写的使用Qt作为其图形界面。注释被保存为PASCAL VOC格式的XML文件该格式被ImageNet使用。此外它还支持YOLO和Create ML格式。LabelImg是由Tzutalin在几十位贡献者的帮助下创建的流行的图像注释工具现在已经不再积极开发并成为Label Studio社区的一部分。
项目地址GitHub - HumanSignal/labelImg: LabelImg is now part of the Label Studio community. The popular image annotation tool created by Tzutalin is no longer actively being developed, but you can check out Label Studio, the open source data labeling tool for images, text, hypertext, audio, video and time-series data. 4.3 VOC数据集转换 VOC数据集不能直接使用VOC数据集使用XML文件存储标注信息而YOLO格式的标注文件为TXT格式每行表示一个目标包含类别ID、中心点坐标、宽度和高度等信息。需要转换后使用。包括两个步骤格式转换和数据集划分。
格式转换代码 注意修改路径
import xml.etree.ElementTree as ET
import os, cv2
import numpy as np
from os import listdir
from os.path import joinclasses []def convert(size, box):dw 1. / (size[0])dh 1. / (size[1])x (box[0] box[1]) / 2.0 - 1y (box[2] box[3]) / 2.0 - 1w box[1] - box[0]h box[3] - box[2]x x * dww w * dwy y * dhh h * dhreturn (x, y, w, h)def convert_annotation(xmlpath, xmlname):with open(xmlpath, r, encodingutf-8) as in_file:txtname xmlname[:-4] .txttxtfile os.path.join(txtpath, txtname)tree ET.parse(in_file)root tree.getroot()filename root.find(filename)img cv2.imdecode(np.fromfile({}/{}.{}.format(imgpath, xmlname[:-4], postfix), np.uint8), cv2.IMREAD_COLOR)h, w img.shape[:2]res []for obj in root.iter(object):cls obj.find(name).textif cls not in classes:classes.append(cls)cls_id classes.index(cls)xmlbox obj.find(bndbox)b (float(xmlbox.find(xmin).text), float(xmlbox.find(xmax).text), float(xmlbox.find(ymin).text),float(xmlbox.find(ymax).text))bb convert((w, h), b)res.append(str(cls_id) .join([str(a) for a in bb]))if len(res) ! 0:with open(txtfile, w) as f:f.write(\n.join(res))if __name__ __main__:postfix png # 图像后缀imgpath rE:\helmet\test\images # 图像文件路径xmlpath rE:\helmet\test\annotations # xml文件文件路径txtpath rE:\helmet\test\labels # 生成的txt文件路径if not os.path.exists(txtpath):os.makedirs(txtpath, exist_okTrue)list os.listdir(xmlpath)error_file_list []for i in range(0, len(list)):try:path os.path.join(xmlpath, list[i])if (.xml in path) or (.XML in path):convert_annotation(path, list[i])print(ffile {list[i]} convert success.)else:print(ffile {list[i]} is not xml format.)except Exception as e:print(ffile {list[i]} convert error.)print(ferror message:\n{e})error_file_list.append(list[i])print(fthis file convert failure\n{error_file_list})print(fDataset Classes:{classes})数据集划分代码 注意修改路径
import os
import shutil
import randomdef make_yolo_dataset(images_folder, labels_folder, output_folder, train_ratio0.8, val_ratio0.1, test_ratio0.1):# 创建目标文件夹os.makedirs(os.path.join(output_folder, images/train), exist_okTrue)os.makedirs(os.path.join(output_folder, images/val), exist_okTrue)os.makedirs(os.path.join(output_folder, images/test), exist_okTrue)os.makedirs(os.path.join(output_folder, labels/train), exist_okTrue)os.makedirs(os.path.join(output_folder, labels/val), exist_okTrue)os.makedirs(os.path.join(output_folder, labels/test), exist_okTrue)# 获取图片和标签的文件名不包含扩展名image_files [os.path.splitext(f)[0] for f in os.listdir(images_folder) if f.endswith(.jpg)]label_files [os.path.splitext(f)[0] for f in os.listdir(labels_folder) if f.endswith(.txt)]matched_files list(set(image_files) set(label_files))# 打乱顺序并划分为训练集、验证集和测试集random.shuffle(matched_files)train_count int(len(matched_files) * train_ratio)val_count int(len(matched_files) * val_ratio)train_files matched_files[:train_count]val_files matched_files[train_count:train_count val_count]test_files matched_files[train_count val_count:]# 移动文件到对应文件夹def move_files(files, src_images_path, src_labels_path, dst_images_path, dst_labels_path):for file in files:src_image_file os.path.join(src_images_path, f{file}.jpg)src_label_file os.path.join(src_labels_path, f{file}.txt)dst_image_file os.path.join(dst_images_path, f{file}.jpg)dst_label_file os.path.join(dst_labels_path, f{file}.txt)if os.path.exists(src_image_file) and os.path.exists(src_label_file):shutil.copy(src_image_file, dst_image_file)shutil.copy(src_label_file, dst_label_file)# 移动文件move_files(train_files, images_folder, labels_folder, os.path.join(output_folder, images/train), os.path.join(output_folder, labels/train))move_files(val_files, images_folder, labels_folder, os.path.join(output_folder, images/val), os.path.join(output_folder, labels/val))move_files(test_files, images_folder, labels_folder, os.path.join(output_folder, images/test), os.path.join(output_folder, labels/test))print(数据集划分完成)# 使用示例
images_folder path/to/yolo_dataset/images
labels_folder path/to/yolo_dataset/labels
output_folder path/to/yolo_dataset/split
make_yolo_dataset(images_folder, labels_folder, output_folder) 五、模型评价指标 在模型训练完成之后需要对模型的优劣作出评估YOLO系列算法的评价指标包括
1. 准确率Precision指模型预测为正样本中实际为正样本的比例。 、、、分别代表被模型预测为正类的正样本、被 模型预测为正类的负样本、被模型预测为负类的负样本和被模型预测为负类的正 样本。表示正确预测的正样本在所有被预测为正样本中的百分比表示正确预 测的正样本在所有正样本中的百分比。||表示目标类别的数量表示检测目标 的类别()表示类别的值。 2. 召回率Recall指实际为正样本中模型预测为正样本的比例。
3. F1值F1-score综合考虑准确率和召回率的指标由准确率和召回率的加权调和平均值计算而得。
4. 平均准确率均值mean average precisionmAP用于衡量模型在不同类别上的平均准确率。mAP是多个类别准确率的均值。
5.FPSFrame Per Second评估模型检测速度时常用的指标是 FPS即每秒帧率 表示每秒内可以检测的图片数量。
6.参数量ParamsParams 被用来评估模型的空间复杂度。
7.浮点运算次数GFLOPsGFLOPs 被用来评估模型的 时间复杂度。 论文中需要使用这些指标对比不同模型确定哪些模型是优秀的。如图所示 持续更新中。。。。。