Ultralytics 中文文档(四)

移动端任意分割(MobileSAM)

原文:docs.ultralytics.com/models/mobile-sam/

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

MobileSAM 的论文现已在arXiv上发布。

可以通过此演示链接访问 MobileSAM 在 CPU 上运行的演示。在 Mac i5 CPU 上,每张图片大约需要 3 秒。在 Hugging Face 的演示中,界面和性能较低的 CPU 导致响应速度较慢,但功能仍然有效。

MobileSAM 已在多个项目中实施,包括Grounding-SAMAnyLabeling,以及3D 中的任意分割

MobileSAM 在单个 GPU 上训练,使用了 100k 数据集(原始图像的 1%)不到一天时间。该训练的代码将在未来公布。

可用模型、支持的任务和操作模式

此表显示了可用模型及其特定的预训练权重,它们支持的任务以及它们与不同操作模式(支持的模式用✅标示,不支持的模式用❌标示)的兼容性。

模型类型预训练权重支持的任务推理验证训练导出
MobileSAMmobile_sam.pt实例分割

从 SAM 适配到 MobileSAM

由于 MobileSAM 保留了与原始 SAM 相同的管道,我们已经整合了原始的预处理、后处理和所有其他接口。因此,当前使用原始 SAM 的用户可以以最小的努力过渡到 MobileSAM。

MobileSAM 在执行方面与原始 SAM 相媲美,并且保留了相同的管道,只是更改了图像编码器。具体来说,我们用更小的 Tiny-ViT(5M)替换了原始的重型 ViT-H 编码器(632M)。在单个 GPU 上,MobileSAM 每张图片的操作时间约为 12ms:图像编码器为 8ms,蒙版解码器为 4ms。

下表提供了基于 ViT 的图像编码器的比较:

图像编码器原始 SAMMobileSAM
参数611M5M
速度452ms8ms

原始 SAM 和 MobileSAM 都利用相同的提示引导蒙版解码器:

蒙版解码器原始 SAMMobileSAM
参数3.876M3.876M
速度4ms4ms

下面是整体管道的比较:

整体管道(Enc+Dec)原始 SAMMobileSAM
参数615M9.66M
速度456ms12ms

MobileSAM 和原始 SAM 的性能通过点和框提示进行演示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

凭借其卓越的性能,MobileSAM 比当前的 FastSAM 大约小了 5 倍,速度快了 7 倍。更多细节请参阅 MobileSAM 项目页面

在 Ultralytics 中测试 MobileSAM

就像原始的 SAM 一样,我们在 Ultralytics 中提供了一种简单直接的测试方法,包括点和框提示的模式。

模型下载

您可以在 这里 下载该模型。

点提示

示例

from ultralytics import SAM

# Load the model
model = SAM("mobile_sam.pt")

# Predict a segment based on a point prompt
model.predict("ultralytics/assets/zidane.jpg", points=[900, 370], labels=[1]) 

框提示

示例

from ultralytics import SAM

# Load the model
model = SAM("mobile_sam.pt")

# Predict a segment based on a box prompt
model.predict("ultralytics/assets/zidane.jpg", bboxes=[439, 437, 524, 709]) 

我们使用相同的 API 实现了 MobileSAMSAM。有关更多使用信息,请参阅 SAM 页面。

引用和致谢

如果您在研究或开发工作中发现 MobileSAM 有用,请考虑引用我们的论文:

@article{mobile_sam,
  title={Faster Segment Anything: Towards Lightweight SAM for Mobile Applications},
  author={Zhang, Chaoning and Han, Dongshen and Qiao, Yu and Kim, Jung Uk and Bae, Sung Ho and Lee, Seungkyu and Hong, Choong Seon},
  journal={arXiv preprint arXiv:2306.14289},
  year={2023}
} 

常见问题

MobileSAM 是什么,它与原始 SAM 模型有什么不同?

MobileSAM 是一种专为移动应用设计的轻量级快速图像分割模型。它保留了与原始 SAM 相同的管道,但将笨重的 ViT-H 编码器(632M 参数)替换为较小的 Tiny-ViT 编码器(5M 参数)。这一改变使 MobileSAM 大约小了 5 倍,速度快了 7 倍。例如,MobileSAM 每张图像的操作速度约为 12 毫秒,而原始 SAM 则为 456 毫秒。您可以在各种项目中了解更多关于 MobileSAM 实现的信息 这里

如何使用 Ultralytics 测试 MobileSAM?

通过简单的方法即可完成在 Ultralytics 中测试 MobileSAM。您可以使用点和框提示来预测段。以下是使用点提示的示例:

from ultralytics import SAM

# Load the model
model = SAM("mobile_sam.pt")

# Predict a segment based on a point prompt
model.predict("ultralytics/assets/zidane.jpg", points=[900, 370], labels=[1]) 

您还可以参考《测试 MobileSAM》部分获取更多详细信息。

为什么我应该在我的移动应用中使用 MobileSAM?

由于其轻量级架构和快速推理速度,MobileSAM 非常适合移动应用。与原始的 SAM 相比,MobileSAM 大约小了 5 倍,速度快了 7 倍,适合计算资源有限的环境。这种效率确保了移动设备可以在没有显著延迟的情况下进行实时图像分割。此外,MobileSAM 的模型(如推理模型)已经优化,以提升移动性能。

MobileSAM 是如何训练的,训练代码是否可用?

MobileSAM 在少于一天的时间内使用单个 GPU 训练了一个包含 10 万张数据集的模型,这相当于原始图像的 1%。虽然训练代码将来会公开,但目前您可以在 MobileSAM GitHub 仓库 中了解 MobileSAM 的其他方面。该仓库包括预训练权重和各种应用的实现细节。

MobileSAM 的主要用例是什么?

MobileSAM 旨在移动环境中实现快速高效的图像分割。主要用例包括:

  • 移动应用的实时目标检测和分割

  • 低延迟图像处理,适用于计算资源有限的设备。

  • 人工智能驱动的移动应用中的集成,用于增强现实(AR)和实时分析等任务。

有关更详细的用例和性能比较,请参见从 SAM 到 MobileSAM 的适应部分。

Fast Segment Anything Model (FastSAM)

原文:docs.ultralytics.com/models/fast-sam/

Fast Segment Anything Model (FastSAM) 是一种新颖的基于实时 CNN 的解决方案,用于任意分段任务。该任务旨在基于各种可能的用户交互提示对图像中的任意对象进行分割。FastSAM 显著降低了计算需求,同时保持了竞争性能,使其成为各种视觉任务的实用选择。

www.youtube.com/embed/F7db-EHhxss

观看: 使用 FastSAM 进行对象跟踪与 Ultralytics

模型架构

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

概述

FastSAM 的设计旨在解决 Segment Anything Model (SAM) 的局限性,SAM 是一个具有重大计算资源要求的沉重 Transformer 模型。FastSAM 将任意分段任务解耦为两个连续阶段:所有实例分割和提示引导选择。第一阶段使用 YOLOv8-seg 生成图像中所有实例的分割蒙版。在第二阶段,它输出与提示相对应的感兴趣区域。

关键特点

  1. 实时解决方案: 利用 CNN 的计算效率,FastSAM 提供了针对任意分段任务的实时解决方案,对于需要快速结果的工业应用非常有价值。

  2. 效率和性能: FastSAM 在不影响性能质量的前提下,显著减少了计算和资源需求。它实现了与 SAM 相当的性能,但计算资源大大减少,能够实时应用。

  3. 提示引导分割: FastSAM 可以根据各种可能的用户交互提示分割图像中的任意对象,在不同场景中提供灵活性和适应性。

  4. 基于 YOLOv8-seg: FastSAM 基于 YOLOv8-seg,这是一个装备有实例分割分支的物体检测器。这使得它能够有效地生成图像中所有实例的分割蒙版。

  5. 在基准测试中的竞争结果: 在单个 NVIDIA RTX 3090 上,FastSAM 在 MS COCO 的对象提议任务上以显著更快的速度取得了高分,比 SAM 更有效率和能力强大。

  6. 实际应用: 所提出的方法以极高的速度为大量视觉任务提供了新的实用解决方案,比当前方法快十倍甚至百倍。

  7. 模型压缩可行性: FastSAM 展示了通过引入结构人工先验显著减少计算工作的路径的可行性,从而为一般视觉任务的大型模型架构开辟了新的可能性。

可用模型、支持任务和操作模式

此表格显示了可用模型及其特定的预训练权重,它们支持的任务以及它们与不同操作模式(推断、验证、训练和导出)的兼容性。支持的模式用✅表示,不支持的模式用❌表示。

模型类型预训练权重支持的任务推断验证训练导出
FastSAM-sFastSAM-s.pt实例分割
FastSAM-xFastSAM-x.pt实例分割

使用示例

FastSAM 模型易于集成到您的 Python 应用程序中。Ultralytics 提供了用户友好的 Python API 和 CLI 命令,以简化开发流程。

预测用法

要在图像上执行目标检测,使用如下所示的predict方法:

示例

from ultralytics import FastSAM

# Define an inference source
source = "path/to/bus.jpg"

# Create a FastSAM model
model = FastSAM("FastSAM-s.pt")  # or FastSAM-x.pt

# Run inference on an image
everything_results = model(source, device="cpu", retina_masks=True, imgsz=1024, conf=0.4, iou=0.9)

# Run inference with bboxes prompt
results = model(source, bboxes=[439, 437, 524, 709])

# Run inference with points prompt
results = model(source, points=[[200, 200]], labels=[1])

# Run inference with texts prompt
results = model(source, texts="a photo of a dog")

# Run inference with bboxes and points and texts prompt at the same time
results = model(source, bboxes=[439, 437, 524, 709], points=[[200, 200]], labels=[1], texts="a photo of a dog") 
# Load a FastSAM model and segment everything with it
yolo  segment  predict  model=FastSAM-s.pt  source=path/to/bus.jpg  imgsz=640 

此代码段演示了加载预训练模型并在图像上运行预测的简易性。

FastSAMPredictor 示例

通过这种方式,您可以在图像上运行推断并一次性获取所有段results,而无需多次运行推断。

from ultralytics.models.fastsam import FastSAMPredictor

# Create FastSAMPredictor
overrides = dict(conf=0.25, task="segment", mode="predict", model="FastSAM-s.pt", save=False, imgsz=1024)
predictor = FastSAMPredictor(overrides=overrides)

# Segment everything
everything_results = predictor("ultralytics/assets/bus.jpg")

# Prompt inference
bbox_results = predictor.prompt(everything_results, bboxes=[[200, 200, 300, 300]])
point_results = predictor.prompt(everything_results, points=[200, 200])
text_results = predictor.prompt(everything_results, texts="a photo of a dog") 

注意

上述示例中所有返回的results都是 Results 对象,可以轻松访问预测的掩模和源图像。

验证用法

在数据集上验证模型可以按以下步骤完成:

示例

from ultralytics import FastSAM

# Create a FastSAM model
model = FastSAM("FastSAM-s.pt")  # or FastSAM-x.pt

# Validate the model
results = model.val(data="coco8-seg.yaml") 
# Load a FastSAM model and validate it on the COCO8 example dataset at image size 640
yolo  segment  val  model=FastSAM-s.pt  data=coco8.yaml  imgsz=640 

请注意,FastSAM 仅支持单类对象的检测和分割。这意味着它将所有对象识别并分割为相同的类别。因此,在准备数据集时,需要将所有对象的类别 ID 转换为 0。

跟踪用法

要在图像上执行目标跟踪,使用如下所示的track方法:

示例

from ultralytics import FastSAM

# Create a FastSAM model
model = FastSAM("FastSAM-s.pt")  # or FastSAM-x.pt

# Track with a FastSAM model on a video
results = model.track(source="path/to/video.mp4", imgsz=640) 
yolo  segment  track  model=FastSAM-s.pt  source="path/to/video/file.mp4"  imgsz=640 

FastSAM 官方用法

FastSAM 还可以直接从github.com/CASIA-IVA-Lab/FastSAM存储库获取。这里简要介绍了使用 FastSAM 的典型步骤:

安装

  1. 克隆 FastSAM 存储库:

    git  clone  https://github.com/CASIA-IVA-Lab/FastSAM.git 
    
  2. 创建并激活一个带有 Python 3.9 的 Conda 环境:

    conda  create  -n  FastSAM  python=3.9
    conda  activate  FastSAM 
    
  3. 导航至克隆的存储库并安装所需的包:

    cd  FastSAM
    pip  install  -r  requirements.txt 
    
  4. 安装 CLIP 模型:

    pip  install  git+https://github.com/ultralytics/CLIP.git 
    

用法示例

  1. 下载模型检查点

  2. 使用 FastSAM 进行推断。示例命令:

    • 在图像中分割所有内容:

      python  Inference.py  --model_path  ./weights/FastSAM.pt  --img_path  ./images/dogs.jpg 
      
    • 使用文本提示分割特定对象:

      python  Inference.py  --model_path  ./weights/FastSAM.pt  --img_path  ./images/dogs.jpg  --text_prompt  "the yellow dog" 
      
    • 在边界框内分割对象(以 xywh 格式提供框坐标):

      python  Inference.py  --model_path  ./weights/FastSAM.pt  --img_path  ./images/dogs.jpg  --box_prompt  "[570,200,230,400]" 
      
    • 在特定点附近分割对象:

      python  Inference.py  --model_path  ./weights/FastSAM.pt  --img_path  ./images/dogs.jpg  --point_prompt  "[[520,360],[620,300]]"  --point_label  "[1,0]" 
      

此外,您可以通过Colab 演示HuggingFace 网络演示来尝试 FastSAM,获得视觉体验。

引文和致谢

我们要感谢 FastSAM 的作者在实时实例分割领域做出的重要贡献:

@misc{zhao2023fast,
  title={Fast Segment Anything},
  author={Xu Zhao and Wenchao Ding and Yongqi An and Yinglong Du and Tao Yu and Min Li and Ming Tang and Jinqiao Wang},
  year={2023},
  eprint={2306.12156},
  archivePrefix={arXiv},
  primaryClass={cs.CV}
} 

最初的 FastSAM 论文可以在arXiv上找到。作者已经公开了他们的工作,并且代码库可以在GitHub上访问。我们感谢他们在推动该领域发展并使其工作对更广泛的社区可用的努力。

常见问题解答(FAQ)

FastSAM 是什么,与 SAM 有何不同?

FastSAM,即快速任意物体模型,是基于实时卷积神经网络(CNN)的解决方案,旨在减少计算需求,同时在物体分割任务中保持高性能。与使用更重的基于 Transformer 的架构的 Segment Anything Model(SAM)不同,FastSAM 利用 Ultralytics YOLOv8-seg 在两个阶段进行高效实例分割:全对象分割,然后是提示引导选择。

FastSAM 如何实现实时分割性能?

FastSAM 通过将分割任务解耦成全对象分割和提示引导选择两个阶段实现了实时分割。利用 CNN 的计算效率,FastSAM 在减少计算和资源需求方面取得了显著成效,同时保持竞争性能。这种双阶段方法使 FastSAM 能够提供适用于需要快速结果的应用的快速高效的分割。

FastSAM 的实际应用有哪些?

FastSAM 非常适用于需要实时分割性能的各种计算机视觉任务。应用包括:

  • 用于质量控制和保证的工业自动化

  • 用于安全监控和监视的实时视频分析

  • 用于物体检测和分割的自动驾驶车辆

  • 用于精确和快速分割任务的医学影像

其处理各种用户交互提示的能力使 FastSAM 适应性强,能够在各种情景下灵活应用。

如何在 Python 中使用 FastSAM 模型进行推理?

要在 Python 中使用 FastSAM 进行推理,可以参考以下示例:

from ultralytics import FastSAM

# Define an inference source
source = "path/to/bus.jpg"

# Create a FastSAM model
model = FastSAM("FastSAM-s.pt")  # or FastSAM-x.pt

# Run inference on an image
everything_results = model(source, device="cpu", retina_masks=True, imgsz=1024, conf=0.4, iou=0.9)

# Run inference with bboxes prompt
results = model(source, bboxes=[439, 437, 524, 709])

# Run inference with points prompt
results = model(source, points=[[200, 200]], labels=[1])

# Run inference with texts prompt
results = model(source, texts="a photo of a dog")

# Run inference with bboxes and points and texts prompt at the same time
results = model(source, bboxes=[439, 437, 524, 709], points=[[200, 200]], labels=[1], texts="a photo of a dog") 

有关推理方法的详细信息,请查看文档的预测使用部分。

FastSAM 支持哪些提示类型用于分割任务?

FastSAM 支持多种提示类型来引导分割任务:

  • 全对象提示:为所有可见对象生成分割结果。

  • 边界框(BBox)提示:在指定的边界框内分割对象。

  • 文本提示:使用描述性文本来分割与描述匹配的对象。

  • 点提示:根据用户定义的特定点附近分割对象。

这种灵活性使 FastSAM 能够适应广泛的用户交互场景,增强其在不同应用中的实用性。有关使用这些提示的更多信息,请参阅关键特性部分。

YOLO-NAS

原文:docs.ultralytics.com/models/yolo-nas/

概述

由 Deci AI 开发,YOLO-NAS 是一个开创性的物体检测基础模型。它是先进的神经架构搜索技术的产物,精心设计以解决以往 YOLO 模型的局限性。通过在量化支持和精度-延迟权衡方面显著改进,YOLO-NAS 代表了物体检测领域的重大进步。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 YOLO-NAS 概述。 YOLO-NAS 采用量化感知块和选择性量化以实现最佳性能。当转换为其 INT8 量化版本时,该模型经历了最小的精度下降,远优于其他模型。这些进步使其成为一个具有突出物体检测能力和出色性能的优越架构。

主要特点

  • Quantization-Friendly Basic Block: YOLO-NAS 引入了一种新的基本块,非常适合量化,解决了以往 YOLO 模型的一个显著限制。

  • Sophisticated Training and Quantization: YOLO-NAS 利用先进的训练方案和后训练量化来增强性能。

  • AutoNAC Optimization and Pre-training: YOLO-NAS 利用 AutoNAC 优化,并在著名数据集如 COCO、Objects365 和 Roboflow 100 上进行了预训练。这种预训练使其在生产环境中非常适合下游目标检测任务。

预训练模型

通过 Ultralytics 提供的预训练 YOLO-NAS 模型,体验下一代物体检测的强大功能。这些模型旨在在速度和准确性方面提供一流性能。根据您的特定需求选择多种选项:

模型mAP延迟(毫秒)
YOLO-NAS S47.53.21
YOLO-NAS M51.555.85
YOLO-NAS L52.227.87
YOLO-NAS S INT-847.032.36
YOLO-NAS M INT-851.03.78
YOLO-NAS L INT-852.14.78

每个模型变体都旨在在均值平均精度(mAP)和延迟之间提供平衡,帮助您优化目标检测任务的性能和速度。

使用示例

Ultralytics 已经通过我们的ultralytics Python 包,使 YOLO-NAS 模型易于集成到您的 Python 应用程序中。该包提供了一个用户友好的 Python API,以简化整个过程。

以下示例展示了如何使用ultralytics包中的 YOLO-NAS 模型进行推断和验证:

推断和验证示例

在这个示例中,我们在 COCO8 数据集上验证了 YOLO-NAS-s。

示例

此示例提供了 YOLO-NAS 的简单推断和验证代码。有关处理推断结果,请参见预测模式。有关使用具有其他模式的 YOLO-NAS,请参见 Val 和 Export。ultralytics包中的 YOLO-NAS 不支持训练。

可以将 PyTorch 预训练的*.pt模型文件传递给NAS()类以在 Python 中创建一个模型实例:

from ultralytics import NAS

# Load a COCO-pretrained YOLO-NAS-s model
model = NAS("yolo_nas_s.pt")

# Display model information (optional)
model.info()

# Validate the model on the COCO8 example dataset
results = model.val(data="coco8.yaml")

# Run inference with the YOLO-NAS-s model on the 'bus.jpg' image
results = model("path/to/bus.jpg") 

可以直接运行模型的 CLI 命令:

# Load a COCO-pretrained YOLO-NAS-s model and validate it's performance on the COCO8 example dataset
yolo  val  model=yolo_nas_s.pt  data=coco8.yaml

# Load a COCO-pretrained YOLO-NAS-s model and run inference on the 'bus.jpg' image
yolo  predict  model=yolo_nas_s.pt  source=path/to/bus.jpg 

支持的任务和模式

我们提供了 YOLO-NAS 模型的三个变体:小型(s)、中型(m)和大型(l)。每个变体都设计用于满足不同的计算和性能需求:

  • YOLO-NAS-s:针对计算资源有限但效率至关重要的环境进行了优化。

  • YOLO-NAS-m:提供了一种平衡的方法,适用于具有更高准确性的通用物体检测。

  • YOLO-NAS-l:为需要最高准确性场景量身定制,计算资源不再是限制因素。

下面详细介绍了每个模型,包括它们预训练权重的链接、它们支持的任务以及它们与不同操作模式的兼容性。

模型类型预训练权重支持的任务推理验证训练导出
YOLO-NAS-syolo_nas_s.pt物体检测
YOLO-NAS-myolo_nas_m.pt物体检测
YOLO-NAS-lyolo_nas_l.pt物体检测

引用和致谢

如果您在研究或开发工作中使用 YOLO-NAS,请引用 SuperGradients:

@misc{supergradients,
  doi  =  {10.5281/ZENODO.7789328},
  url  =  {https://zenodo.org/record/7789328},
  author  =  {Aharon,  Shay and {Louis-Dupont} and {Ofri Masad} and Yurkova,  Kate and {Lotem Fridman} and {Lkdci} and Khvedchenya,  Eugene and Rubin,  Ran and Bagrov,  Natan and Tymchenko,  Borys and Keren,  Tomer and Zhilko,  Alexander and {Eran-Deci}},
  title  =  {Super-Gradients},
  publisher  =  {GitHub},
  journal  =  {GitHub repository},
  year  =  {2021},
} 

我们感谢 Deci AI 的SuperGradients团队为计算机视觉社区创造和维护这一宝贵资源所付出的努力。我们相信 YOLO-NAS 以其创新的架构和卓越的物体检测能力,将成为开发者和研究人员的重要工具。

常见问题解答

YOLO-NAS 是什么,它如何改进之前的 YOLO 模型?

YOLO-NAS 是由 Deci AI 开发的一种先进的物体检测模型,利用先进的神经架构搜索(NAS)技术。它通过引入量化友好的基本块和复杂的训练方案来解决之前 YOLO 模型的限制。这导致在性能上有显著改进,特别是在计算资源有限的环境中。YOLO-NAS 还支持量化,在转换为其 INT8 版本时保持高准确性,增强了其在生产环境中的适用性。有关更多详细信息,请参阅概述部分。

如何将 YOLO-NAS 模型集成到我的 Python 应用程序中?

您可以使用ultralytics包轻松集成 YOLO-NAS 模型到您的 Python 应用程序中。这里是一个加载预训练 YOLO-NAS 模型并进行推断的简单示例:

from ultralytics import NAS

# Load a COCO-pretrained YOLO-NAS-s model
model = NAS("yolo_nas_s.pt")

# Validate the model on the COCO8 example dataset
results = model.val(data="coco8.yaml")

# Run inference with the YOLO-NAS-s model on the 'bus.jpg' image
results = model("path/to/bus.jpg") 

获取推理和验证示例的更多信息,请参考。

YOLO-NAS 的关键特性及其为何值得考虑使用的原因是什么?

YOLO-NAS 引入了几个关键特性,使其成为对象检测任务的优选:

  • **量化友好的基本块:**增强架构,在量化后最小化精度损失的同时提高模型性能。

  • **精细化训练和量化:**采用先进的训练方案和训练后量化技术。

  • **AutoNAC 优化和预训练:**利用 AutoNAC 优化并预训练于 COCO、Objects365 和 Roboflow 100 等知名数据集。这些特性提高了其在高精度、高效性能及适合生产环境部署方面的表现。详细了解请参考关键特性部分。

YOLO-NAS 模型支持哪些任务和模式?

YOLO-NAS 模型支持各种对象检测任务和模式,如推理、验证和导出。它们不支持训练。支持的模型包括 YOLO-NAS-s、YOLO-NAS-m 和 YOLO-NAS-l,每个模型都针对不同的计算能力和性能需求进行了优化。详细概述请参考支持的任务和模式部分。

是否有预训练的 YOLO-NAS 模型可用,如何访问它们?

是的,Ultralytics 提供了预训练的 YOLO-NAS 模型,您可以直接访问。这些模型在诸如 COCO 等数据集上进行了预训练,保证了在速度和准确性方面的高性能。您可以通过预训练模型部分提供的链接下载这些模型。以下是一些示例:

百度的 RT-DETR:基于视觉 Transformer 的实时目标检测器

原文:docs.ultralytics.com/models/rtdetr/

概述

由百度开发的实时检测变压器(RT-DETR)是一种先进的端到端目标检测器,提供实时性能的同时保持高准确性。它基于 DETR(无 NMS 框架)的思想,同时引入了基于卷积的骨干和高效的混合编码器以实现实时速度。RT-DETR 通过解耦内部尺度交互和跨尺度融合高效处理多尺度特征。该模型高度灵活,支持使用不同的解码器层调整推理速度,无需重新训练。RT-DETR 在像 CUDA 与 TensorRT 这样的加速后端上表现优异,胜过许多其他实时目标检测器。

www.youtube.com/embed/SArFQs6CHwk

监视: 实时检测变压器(RT-DETR)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 百度 RT-DETR 概述。 RT-DETR 模型架构图显示了作为编码器输入的骨干网的最后三个阶段 {S3, S4, S5}。高效的混合编码器通过内部尺度特征交互(AIFI)和跨尺度特征融合模块(CCFM),将多尺度特征转换为图像特征序列。使用 IoU 感知查询选择来选择一定数量的图像特征,作为解码器的初始对象查询。最后,解码器通过辅助预测头迭代优化对象查询,生成框和置信度分数(来源)。

主要特点

  • 高效的混合编码器: 百度的 RT-DETR 采用高效的混合编码器,通过解耦内部尺度交互和跨尺度融合来处理多尺度特征。这种基于视觉 Transformer 的独特设计降低了计算成本,实现了实时目标检测。

  • IoU 感知查询选择: 百度的 RT-DETR 通过使用 IoU 感知查询选择来改进对象查询初始化。这使得模型能够集中精力处理场景中最相关的对象,从而提高检测精度。

  • 可调节的推理速度: 百度的 RT-DETR 通过使用不同的解码器层,无需重新训练即可支持灵活调整推理速度。这种适应性促进了在各种实时目标检测场景中的实际应用。

预训练模型

Ultralytics Python API 提供了预训练的 PaddlePaddle RT-DETR 模型,具有不同的规模:

  • RT-DETR-L:在 COCO val2017 上达到 53.0%的 AP,T4 GPU 上的帧率为 114 FPS

  • RT-DETR-X:在 COCO val2017 上达到 54.8%的 AP,T4 GPU 上的帧率为 74 FPS

使用示例

本示例提供了简单的 RT-DETR 训练和推理示例。有关这些以及其他模式的完整文档,请参阅预测、训练、验证和导出文档页面。

示例

from ultralytics import RTDETR

# Load a COCO-pretrained RT-DETR-l model
model = RTDETR("rtdetr-l.pt")

# Display model information (optional)
model.info()

# Train the model on the COCO8 example dataset for 100 epochs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)

# Run inference with the RT-DETR-l model on the 'bus.jpg' image
results = model("path/to/bus.jpg") 
# Load a COCO-pretrained RT-DETR-l model and train it on the COCO8 example dataset for 100 epochs
yolo  train  model=rtdetr-l.pt  data=coco8.yaml  epochs=100  imgsz=640

# Load a COCO-pretrained RT-DETR-l model and run inference on the 'bus.jpg' image
yolo  predict  model=rtdetr-l.pt  source=path/to/bus.jpg 

支持的任务和模式

该表格展示了各个模型类型、具体的预训练权重、每个模型支持的任务,以及通过✅表情符号表示的各种模式(训练、验证、预测、导出)。

模型类型预训练权重支持的任务推断验证训练导出
RT-DETR 大型rtdetr-l.pt目标检测
RT-DETR 超大型rtdetr-x.pt目标检测

引用和致谢

如果您在研究或开发工作中使用百度的 RT-DETR,请引用原始论文

@misc{lv2023detrs,
  title={DETRs Beat YOLOs on Real-time Object Detection},
  author={Wenyu Lv and Shangliang Xu and Yian Zhao and Guanzhong Wang and Jinman Wei and Cheng Cui and Yuning Du and Qingqing Dang and Yi Liu},
  year={2023},
  eprint={2304.08069},
  archivePrefix={arXiv},
  primaryClass={cs.CV}
} 

我们要感谢百度和PaddlePaddle团队为计算机视觉社区创建和维护这一宝贵资源。他们通过开发基于 Vision Transformers 的实时目标检测器 RT-DETR,为该领域做出了重要贡献,深受赞赏。

常见问题

百度的 RT-DETR 模型是什么,它是如何工作的?

百度的 RT-DETR(Real-Time Detection Transformer)是基于 Vision Transformer 架构构建的先进实时目标检测器。它通过其高效的混合编码器有效处理多尺度特征,通过解耦内尺度交互和跨尺度融合。通过采用 IoU 感知的查询选择,该模型专注于最相关的对象,增强了检测精度。其可调节的推断速度,通过调整解码器层而无需重新训练,使 RT-DETR 适用于各种实时目标检测场景。在这里了解更多关于 RT-DETR 的特性链接

我如何使用 Ultralytics 提供的预训练 RT-DETR 模型?

你可以利用 Ultralytics Python API 使用预训练的 PaddlePaddle RT-DETR 模型。例如,要加载在 COCO val2017 上预训练的 RT-DETR-l 模型,并在 T4 GPU 上实现高 FPS,您可以使用以下示例:

示例

from ultralytics import RTDETR

# Load a COCO-pretrained RT-DETR-l model
model = RTDETR("rtdetr-l.pt")

# Display model information (optional)
model.info()

# Train the model on the COCO8 example dataset for 100 epochs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)

# Run inference with the RT-DETR-l model on the 'bus.jpg' image
results = model("path/to/bus.jpg") 
# Load a COCO-pretrained RT-DETR-l model and train it on the COCO8 example dataset for 100 epochs
yolo  train  model=rtdetr-l.pt  data=coco8.yaml  epochs=100  imgsz=640

# Load a COCO-pretrained RT-DETR-l model and run inference on the 'bus.jpg' image
yolo  predict  model=rtdetr-l.pt  source=path/to/bus.jpg 

为什么应该选择百度的 RT-DETR 而不是其他实时目标检测器?

百度的 RT-DETR 凭借其高效的混合编码器和 IoU 感知的查询选择而脱颖而出,大幅降低计算成本同时保持高准确性。其通过使用不同的解码器层而无需重新训练来调整推断速度的独特能力,增加了显著的灵活性。这使得它特别适用于在 CUDA 与 TensorRT 等加速后端上需要实时性能的应用,胜过许多其他实时目标检测器。

RT-DETR 如何支持不同实时应用的可调节推断速度?

Baidu 的 RT-DETR 可以通过使用不同的解码器层来灵活调整推理速度,而无需重新训练。这种适应性对于在各种实时目标检测任务中提升性能至关重要。无论您需要更快的处理以满足低精度需求,还是更慢但更精确的检测,RT-DETR 都可以定制以满足您的特定要求。

我能在其他 Ultralytics 模式下使用 RT-DETR 模型吗,比如训练、验证和导出?

是的,RT-DETR 模型与包括训练、验证、预测和导出在内的多种 Ultralytics 模式兼容。您可以参考相应的文档以获取如何利用这些模式的详细说明:Train、Val、Predict 和 Export。这确保了开发和部署您的目标检测解决方案的全面工作流程。

YOLO-World 模型

原文:docs.ultralytics.com/models/yolo-world/

YOLO-World 模型引入了基于 Ultralytics YOLOv8 的先进实时方法,用于开放词汇检测任务。该创新能够根据描述性文本在图像中检测任何对象。通过显著降低计算需求,同时保持竞争性能,YOLO-World 成为多种基于视觉的应用的多功能工具。

www.youtube.com/embed/cfTKj96TjSE

观看: YOLO World 自定义数据集的训练工作流程

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

概览

YOLO-World 解决了传统开放词汇检测模型面临的挑战,这些模型通常依赖于耗费大量计算资源的繁琐 Transformer 模型。这些模型对预定义的物体类别的依赖也限制了它们在动态场景中的实用性。YOLO-World 通过视觉语言建模和在大规模数据集上的预训练,在零-shot 场景中卓越地识别广泛对象。

主要特点

  1. 实时解决方案: 利用 CNN 的计算速度,YOLO-World 提供了快速的开放词汇检测解决方案,满足需要即时结果的行业需求。

  2. 效率与性能: YOLO-World 在不牺牲性能的情况下大幅削减了计算和资源需求,提供了 SAM 等模型的强大替代方案,但计算成本仅为其一小部分,支持实时应用。

  3. 离线词汇推断: YOLO-World 引入了一种“提示-检测”策略,采用离线词汇进一步提升效率。这种方法允许使用预先计算的自定义提示,如标题或类别,作为离线词汇嵌入进行编码和存储,从而简化检测过程。

  4. 由 YOLOv8 驱动: 基于 Ultralytics YOLOv8 构建的 YOLO-World,利用实时目标检测的最新进展,实现了开放词汇检测,具有无与伦比的准确性和速度。

  5. 基准卓越: YOLO-World 在标准基准测试中表现优于现有的开放词汇检测器,包括 MDETR 和 GLIP 系列,展示了 YOLOv8 在单个 NVIDIA V100 GPU 上的卓越能力。

  6. 多用途应用: YOLO-World 的创新方法为多种视觉任务开辟了新的可能性,大幅提升了速度,比现有方法快上数个数量级。

可用模型、支持的任务和操作模式

此部分详细介绍了具体预训练权重的可用模型、它们支持的任务以及它们与各种操作模式的兼容性,推理、验证、训练和导出分别用✅表示支持和❌表示不支持。

Note

所有 YOLOv8-World 的权重都直接从官方YOLO-World存储库迁移,突显了它们的卓越贡献。

Model Type预训练权重支持的任务推理验证训练导出
YOLOv8s-worldyolov8s-world.pt目标检测
YOLOv8s-worldv2yolov8s-worldv2.pt目标检测
YOLOv8m-worldyolov8m-world.pt目标检测
YOLOv8m-worldv2yolov8m-worldv2.pt目标检测
YOLOv8l-worldyolov8l-world.pt目标检测
YOLOv8l-worldv2yolov8l-worldv2.pt目标检测
YOLOv8x-worldyolov8x-world.pt目标检测
YOLOv8x-worldv2yolov8x-worldv2.pt目标检测

在 COCO 数据集上进行零-shot 转移

Model TypemAPmAP50mAP75
yolov8s-world37.452.040.6
yolov8s-worldv237.752.241.0
yolov8m-world42.057.045.6
yolov8m-worldv243.058.446.8
yolov8l-world45.761.349.8
yolov8l-worldv245.861.349.8
yolov8x-world47.063.051.2
yolov8x-worldv247.162.851.4

用法示例

YOLO-World 模型易于集成到您的 Python 应用程序中。Ultralytics 提供了用户友好的 Python API 和 CLI 命令,以简化开发。

训练用法

Tip

强烈推荐使用yolov8-worldv2模型进行自定义训练,因为它支持确定性训练,并且容易导出其他格式,例如 onnx/tensorrt。

使用train方法进行目标检测非常简单,如下所示:

示例

可以将预训练的 PyTorch *.pt模型以及配置*.yaml文件传递给YOLOWorld()类,在 Python 中创建模型实例:

from ultralytics import YOLOWorld

# Load a pretrained YOLOv8s-worldv2 model
model = YOLOWorld("yolov8s-worldv2.pt")

# Train the model on the COCO8 example dataset for 100 epochs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)

# Run inference with the YOLOv8n model on the 'bus.jpg' image
results = model("path/to/bus.jpg") 
# Load a pretrained YOLOv8s-worldv2 model and train it on the COCO8 example dataset for 100 epochs
yolo  train  model=yolov8s-worldv2.yaml  data=coco8.yaml  epochs=100  imgsz=640 

预测用法

使用predict方法进行目标检测非常简单,如下所示:

示例

from ultralytics import YOLOWorld

# Initialize a YOLO-World model
model = YOLOWorld("yolov8s-world.pt")  # or select yolov8m/l-world.pt for different sizes

# Execute inference with the YOLOv8s-world model on the specified image
results = model.predict("path/to/image.jpg")

# Show results
results[0].show() 
# Perform object detection using a YOLO-World model
yolo  predict  model=yolov8s-world.pt  source=path/to/image.jpg  imgsz=640 

此代码片段展示了加载预训练模型并在图像上进行预测的简易性。

Val 使用

在数据集上进行模型验证的简化步骤如下:

示例

from ultralytics import YOLO

# Create a YOLO-World model
model = YOLO("yolov8s-world.pt")  # or select yolov8m/l-world.pt for different sizes

# Conduct model validation on the COCO8 example dataset
metrics = model.val(data="coco8.yaml") 
# Validate a YOLO-World model on the COCO8 dataset with a specified image size
yolo  val  model=yolov8s-world.pt  data=coco8.yaml  imgsz=640 

跟踪使用情况

使用 YOLO-World 模型在视频/图像上进行对象跟踪的简化步骤如下:

示例

from ultralytics import YOLO

# Create a YOLO-World model
model = YOLO("yolov8s-world.pt")  # or select yolov8m/l-world.pt for different sizes

# Track with a YOLO-World model on a video
results = model.track(source="path/to/video.mp4") 
# Track with a YOLO-World model on the video with a specified image size
yolo  track  model=yolov8s-world.pt  imgsz=640  source="path/to/video/file.mp4" 

注意

由 Ultralytics 提供的 YOLO-World 模型已预配置为离线词汇表的 COCO 数据集类别的一部分,提升了立即应用的效率。这种集成使得 YOLOv8-World 模型能直接识别和预测 COCO 数据集定义的 80 个标准类别,无需额外的设置或定制。

设置提示

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

YOLO-World 框架允许通过自定义提示动态指定类别,让用户根据特定需求定制模型,无需重新训练。此功能特别适用于将模型适应原始训练数据中未包含的新领域或特定任务。通过设置自定义提示,用户可以引导模型关注感兴趣的对象,从而提高检测结果的相关性和准确性。

例如,如果您的应用程序只需要检测’人’和’公交车’对象,您可以直接指定这些类别:

示例

from ultralytics import YOLO

# Initialize a YOLO-World model
model = YOLO("yolov8s-world.pt")  # or choose yolov8m/l-world.pt

# Define custom classes
model.set_classes(["person", "bus"])

# Execute prediction for specified categories on an image
results = model.predict("path/to/image.jpg")

# Show results
results[0].show() 

在设置自定义类后,您还可以保存模型。通过这样做,您可以创建一个专门针对特定用例的 YOLO-World 模型版本。此过程将您的自定义类定义直接嵌入到模型文件中,使得模型准备好使用您指定的类别,无需进一步调整。按照以下步骤保存和加载您的自定义 YOLOv8 模型:

示例

首先加载一个 YOLO-World 模型,为其设置自定义类别并保存:

from ultralytics import YOLO

# Initialize a YOLO-World model
model = YOLO("yolov8s-world.pt")  # or select yolov8m/l-world.pt

# Define custom classes
model.set_classes(["person", "bus"])

# Save the model with the defined offline vocabulary
model.save("custom_yolov8s.pt") 

保存后,custom_yolov8s.pt 模型与任何其他预训练的 YOLOv8 模型一样工作,但有一个关键区别:它现在优化为仅检测您定义的类别。这种定制可以显著提高特定应用场景中的检测性能和效率。

from ultralytics import YOLO

# Load your custom model
model = YOLO("custom_yolov8s.pt")

# Run inference to detect your custom classes
results = model.predict("path/to/image.jpg")

# Show results
results[0].show() 

保存具有自定义词汇的好处

  • 效率:通过专注于相关对象,简化检测过程,减少计算开销并加快推理速度。

  • 灵活性:允许轻松调整模型以适应新的或小众检测任务,无需进行大量的重新训练或数据收集。

  • 简易性:通过在运行时消除重复指定自定义类的需要,简化部署,使模型直接可用于其内置词汇表。

  • 性能:通过专注于识别定义的对象,增强特定类别的检测精度,优化模型的注意力和资源分配。

该方法为定制最先进的目标检测模型提供了强大手段,使得先进的 AI 技术更加易于访问和应用于更广泛的实际应用领域。

从零开始重现官方结果(实验性)

准备数据集

  • 训练数据
数据集类型样本数盒数注释文件
Objects365v1检测609k9621kobjects365_train.json
GQA确定性621k3681kfinal_mixed_train_no_coco.json
Flickr30k确定性149k641kfinal_flickr_separateGT_train.json
  • 验证数据
数据集类型注释文件
LVIS minival检测minival.txt

从零开始启动训练

注意

WorldTrainerFromScratch 极大地定制化,允许同时在检测数据集和确定性数据集上训练 yolo-world 模型。更多细节请查看 ultralytics.model.yolo.world.train_world.py

示例

from ultralytics import YOLOWorld
from ultralytics.models.yolo.world.train_world import WorldTrainerFromScratch

data = dict(
    train=dict(
        yolo_data=["Objects365.yaml"],
        grounding_data=[
            dict(
                img_path="../datasets/flickr30k/images",
                json_file="../datasets/flickr30k/final_flickr_separateGT_train.json",
            ),
            dict(
                img_path="../datasets/GQA/images",
                json_file="../datasets/GQA/final_mixed_train_no_coco.json",
            ),
        ],
    ),
    val=dict(yolo_data=["lvis.yaml"]),
)
model = YOLOWorld("yolov8s-worldv2.yaml")
model.train(data=data, batch=128, epochs=100, trainer=WorldTrainerFromScratch) 

引用和致谢

我们对 腾讯 AI 实验室计算机视觉中心 在实时开放词汇目标检测领域与 YOLO-World 的开创性工作表示感谢:

@article{cheng2024yolow,
title={YOLO-World: Real-Time Open-Vocabulary Object Detection},
author={Cheng, Tianheng and Song, Lin and Ge, Yixiao and Liu, Wenyu and Wang, Xinggang and Shan, Ying},
journal={arXiv preprint arXiv:2401.17270},
year={2024}
} 

想进一步阅读,YOLO-World 的原始论文可在 arXiv 获得。项目的源代码和其他资源可以通过他们的 GitHub 仓库 获取。我们感谢他们在推动领域进步和与社区分享宝贵见解的努力。

常见问题解答

YOLO-World 模型是什么以及其工作原理?

YOLO-World 模型是基于 Ultralytics YOLOv8 框架的先进实时目标检测方法。它通过识别基于描述性文本的图像内对象,在开放词汇检测任务中表现出色。利用视觉语言建模和在大型数据集上的预训练,YOLO-World 实现了高效和性能,并显著减少了计算需求,非常适合各行业的实时应用。

YOLO-World 如何处理自定义提示的推理?

YOLO-World 支持“提示-检测”策略,利用离线词汇表增强效率。像标题或特定对象类别这样的自定义提示会被预先编码并存储为离线词汇表嵌入。这种方法简化了检测过程,无需重新训练即可动态设置这些提示以适应特定的检测任务,如下所示:

from ultralytics import YOLOWorld

# Initialize a YOLO-World model
model = YOLOWorld("yolov8s-world.pt")

# Define custom classes
model.set_classes(["person", "bus"])

# Execute prediction on an image
results = model.predict("path/to/image.jpg")

# Show results
results[0].show() 

为什么应该选择 YOLO-World 而不是传统的开放词汇检测模型?

YOLO-World 相比传统的开放词汇检测模型提供了多个优势:

  • 实时性能: 它利用 CNN 的计算速度提供快速、高效的检测。

  • 高效性和低资源需求: YOLO-World 在显著减少计算和资源需求的同时,保持了高性能。

  • 可定制的提示: 模型支持动态提示设置,允许用户指定自定义检测类别而无需重新训练。

  • 基准卓越性: 在标准基准测试中,它在速度和效率上均优于其他开放词汇检测器,如 MDETR 和 GLIP。

如何在我的数据集上训练 YOLO-World 模型?

使用提供的 Python API 或 CLI 命令,训练 YOLO-World 模型的数据集非常简单。以下是如何开始使用 Python 进行训练的示例:

from ultralytics import YOLOWorld

# Load a pretrained YOLOv8s-worldv2 model
model = YOLOWorld("yolov8s-worldv2.pt")

# Train the model on the COCO8 dataset for 100 epochs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640) 

或者使用 CLI:

yolo  train  model=yolov8s-worldv2.yaml  data=coco8.yaml  epochs=100  imgsz=640 

可用的预训练 YOLO-World 模型及其支持的任务是什么?

Ultralytics 提供多个预训练的 YOLO-World 模型,支持各种任务和操作模式:

模型类型预训练权重支持的任务推断验证训练导出
YOLOv8s-worldyolov8s-world.pt目标检测
YOLOv8s-worldv2yolov8s-worldv2.pt目标检测
YOLOv8m-worldyolov8m-world.pt目标检测
YOLOv8m-worldv2yolov8m-worldv2.pt目标检测
YOLOv8l-worldyolov8l-world.pt目标检测
YOLOv8l-worldv2yolov8l-worldv2.pt目标检测
YOLOv8x-worldyolov8x-world.pt目标检测
YOLOv8x-worldv2yolov8x-worldv2.pt目标检测

我如何从头开始复现 YOLO-World 的官方结果?

要从头开始复现官方结果,您需要准备数据集并使用提供的代码启动训练。训练过程涉及创建数据字典,并使用自定义训练器运行train方法:

from ultralytics import YOLOWorld
from ultralytics.models.yolo.world.train_world import WorldTrainerFromScratch

data = {
    "train": {
        "yolo_data": ["Objects365.yaml"],
        "grounding_data": [
            {
                "img_path": "../datasets/flickr30k/images",
                "json_file": "../datasets/flickr30k/final_flickr_separateGT_train.json",
            },
            {
                "img_path": "../datasets/GQA/images",
                "json_file": "../datasets/GQA/final_mixed_train_no_coco.json",
            },
        ],
    },
    "val": {"yolo_data": ["lvis.yaml"]},
}

model = YOLOWorld("yolov8s-worldv2.yaml")
model.train(data=data, batch=128, epochs=100, trainer=WorldTrainerFromScratch) 

数据集概述

原文:docs.ultralytics.com/datasets/

Ultralytics 提供对各种数据集的支持,以促进计算机视觉任务,如检测、实例分割、姿态估计、分类和多对象跟踪。以下是主要的 Ultralytics 数据集列表,随后是每个计算机视觉任务和相应数据集的摘要。

www.youtube.com/embed/YDXKa1EljmU

Watch: Ultralytics 数据集概述

NEW 🚀 Ultralytics Explorer

为您的数据集创建嵌入,搜索相似图像,运行 SQL 查询,执行语义搜索甚至使用自然语言进行搜索!您可以使用我们的 GUI 应用程序开始或使用 API 构建您自己的应用程序。在这里了解更多信息。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 尝试 GUI 演示

  • 了解更多有关 Explorer API 的信息

物体检测

边界框物体检测是一种计算机视觉技术,通过在每个物体周围绘制边界框来检测和定位图像中的物体。

  • Argoverse:一个包含来自城市环境的 3D 跟踪和运动预测数据的数据集,具有丰富的注释信息。

  • COCO:Common Objects in Context (COCO) 是一个大规模物体检测、分割和字幕数据集,包含 80 个物体类别。

  • LVIS:一个大规模物体检测、分割和字幕数据集,包含 1203 个物体类别。

  • COCO8:从 COCO 训练集和验证集中提取的前 4 张图像的较小子集,适用于快速测试。

  • Global Wheat 2020:一个包含小麦穗图像的数据集,用于全球小麦挑战赛 2020。

  • Objects365:一个包含 365 个物体类别和超过 60 万张标注图像的高质量大规模物体检测数据集。

  • OpenImagesV7:由 Google 提供的综合数据集,包括 170 万张训练图像和 42,000 张验证图像。

  • SKU-110K:一个展示零售环境中密集物体检测的数据集,包含超过 11,000 张图像和 170 万个边界框。

  • VisDrone:一个包含来自无人机捕获图像的物体检测和多对象跟踪数据的数据集,包括超过 10,000 张图像和视频序列。

  • VOC:Pascal Visual Object Classes (VOC) 数据集,用于物体检测和分割,包含 20 个物体类别和超过 11,000 张图像。

  • xView:一个用于航拍图像中物体检测的数据集,包含 60 个物体类别和超过 100 万个标注物体。

  • Roboflow 100:一个多样化的物体检测基准数据集,涵盖了七个影像领域的 100 个数据集,用于全面评估模型。

  • Brain-tumor:一个用于检测脑肿瘤的数据集,包括具有关于肿瘤存在、位置和特征的 MRI 或 CT 扫描图像。

  • African-wildlife:一个展示非洲野生动物图像的数据集,包括水牛、大象、犀牛和斑马。

  • Signature:一个展示各种文档图像和标注签名的数据集,支持文档验证和欺诈检测研究。

实例分割

实例分割是一种计算机视觉技术,涉及在像素级别识别和定位图像中的对象。

  • COCO:一个大规模数据集,设计用于对象检测、分割和字幕任务,包含超过 200,000 张标记图像。

  • COCO8-seg:用于实例分割任务的较小数据集,包含 8 张带有分割注释的 COCO 图像子集。

  • Crack-seg:专为检测道路和墙壁上裂缝而制作的数据集,适用于目标检测和分割任务。

  • Package-seg:专为仓库或工业环境中识别包裹而设计的数据集,适用于目标检测和分割应用。

  • Carparts-seg:专为识别车辆部件而设计的数据集,适用于设计、制造和研究需求。用于目标检测和分割任务。

姿态估计

姿态估计是一种技术,用于确定对象相对于摄像机或世界坐标系的姿态。

  • COCO:一个带有人体姿态注释的大规模数据集,设计用于姿态估计任务。

  • COCO8-pose:用于姿态估计任务的较小数据集,包含 8 张带有人体姿态注释的 COCO 图像子集。

  • Tiger-pose:一个紧凑的数据集,包含 263 张专注于老虎的图像,每只老虎有 12 个关键点用于姿态估计任务。

分类

图像分类是一种计算机视觉任务,涉及根据图像的视觉内容将图像分类到一个或多个预定义类别中。

  • Caltech 101:包含 101 种物体类别图像的数据集,用于图像分类任务。

  • Caltech 256:Caltech 101 的扩展版本,包含 256 个物体类别和更具挑战性的图像。

  • CIFAR-10:包含 60,000 张 32x32 像素彩色图像的数据集,分为 10 个类别,每个类别包含 6,000 张图像。

  • CIFAR-100:CIFAR-10 的扩展版本,包含 100 个物体类别和每类 600 张图像。

  • Fashion-MNIST:一个包含 70,000 张灰度图像的数据集,涵盖 10 种时尚类别,用于图像分类任务。

  • ImageNet:一个大规模的数据集,用于对象检测和图像分类,包含超过 1400 万张图像和 20,000 个类别。

  • ImageNet-10:ImageNet 的一个较小子集,包含 10 个类别,用于更快的实验和测试。

  • Imagenette:ImageNet 的一个较小子集,包含 10 个易于区分的类别,用于快速训练和测试。

  • Imagewoof:ImageNet 的一个更具挑战性的子集,包含 10 种狗种类的图像,用于图像分类任务。

  • MNIST:包含 70,000 张手写数字灰度图像的数据集,用于图像分类任务。

Oriented Bounding Boxes (OBB)

Oriented Bounding Boxes (OBB):计算机视觉中用于检测图像中角度对象的方法,使用旋转边界框,通常应用于航空和卫星图像。

  • DOTA-v2:一个流行的 OBB 航空影像数据集,包含 1.7 百万个实例和 11,268 张图像。

多目标跟踪

多对象跟踪是一种计算机视觉技术,涉及在视频序列中随时间检测和跟踪多个对象。

  • Argoverse:一个数据集,包含来自城市环境的 3D 跟踪和运动预测数据,并带有用于多对象跟踪任务的丰富注释。

  • VisDrone:一个数据集,包含来自无人机拍摄的图像和视频序列的目标检测和多目标跟踪数据,共有超过 10K 张图像。

贡献新数据集

贡献新数据集涉及几个步骤,以确保其与现有基础设施对齐。以下是必要的步骤:

贡献新数据集的步骤

  1. 收集图像:收集属于数据集的图像。这些图像可以来自各种来源,如公共数据库或您自己的收藏。

  2. 标注图像:使用边界框、片段或关键点对这些图像进行标注,具体取决于任务。

  3. 导出注释:将这些注释转换为 YOLO *.txt文件格式,Ultralytics 支持该格式。

  4. 整理数据集:将数据集整理成正确的文件夹结构。你应该有train/val/两个顶级目录,在每个目录中,还应有images/labels/子目录。

    dataset/
    ├── train/
    │   ├── images/
    │   └── labels/
    └── val/
        ├── images/
        └── labels/ 
    
  5. 创建data.yaml文件:在数据集的根目录下,创建一个data.yaml文件,描述数据集、类别和其他必要信息。

  6. 优化图像(可选):如果您希望减小数据集的大小以进行更高效的处理,可以使用以下代码优化图像。这不是必需的,但建议用于较小的数据集大小和更快的下载速度。

  7. 压缩数据集:将整个数据集文件夹压缩成一个 zip 文件。

  8. 文档和 PR:创建描述您的数据集及其如何与现有框架结合的文档页面。然后,提交一个 Pull Request(PR)。有关如何提交 PR 的详细信息,请参阅Ultralytics 贡献指南

优化和压缩数据集的示例代码

优化和压缩数据集

from pathlib import Path

from ultralytics.data.utils import compress_one_image
from ultralytics.utils.downloads import zip_directory

# Define dataset directory
path = Path("path/to/dataset")

# Optimize images in dataset (optional)
for f in path.rglob("*.jpg"):
    compress_one_image(f)

# Zip dataset into 'path/to/dataset.zip'
zip_directory(path) 

遵循这些步骤,您可以贡献一个新的数据集,使其与 Ultralytics 的现有结构很好地整合。

常见问题解答

Ultralytics 支持哪些用于目标检测的数据集?

Ultralytics 支持各种用于目标检测的数据集,包括:

这些数据集有助于为各种目标检测应用程序训练稳健的模型。

我如何向 Ultralytics 贡献新数据集?

贡献新数据集涉及几个步骤: 1. 收集图像:从公共数据库或个人收藏中收集图像。 2. 标注图像:根据任务应用边界框、分割或关键点。 3. 导出标注:将标注转换为 YOLO *.txt 格式。 4. 组织数据集:使用包含 train/val/ 子目录的文件夹结构,每个子目录包含 images/labels/ 子目录。 5. 创建 data.yaml 文件:包括数据集描述、类别和其他相关信息。 6. 优化图像(可选):为提高效率减少数据集大小。 7. 压缩数据集:将数据集压缩为 zip 文件。 8. 文档和 PR:描述您的数据集并按照Ultralytics 贡献指南提交 Pull Request。

访问《贡献新数据集》获取全面指南。

为什么我应该使用 Ultralytics Explorer 处理我的数据集?

Ultralytics Explorer 提供强大的数据集分析功能,包括: - 嵌入生成:为图像创建向量嵌入。 - 语义搜索:使用嵌入或人工智能搜索相似图像。 - SQL 查询:运行高级 SQL 查询进行详细数据分析。 - 自然语言搜索:使用简单语言查询以便使用。

探索 Ultralytics Explorer 以获取更多信息并尝试 GUI 演示。

Ultralytics YOLO 模型在计算机视觉中有哪些独特特性?

Ultralytics YOLO 模型提供几个独特特性: - 实时性能:高速推理和训练。 - 多功能性:适用于检测、分割、分类和姿态估计任务。 - 预训练模型:访问高性能的预训练模型,适用于各种应用。 - 广泛的社区支持:活跃的社区和全面的文档,用于故障排除和开发。

Ultralytics YOLO页面了解更多。

我如何使用 Ultralytics 工具优化和压缩数据集?

要使用 Ultralytics 工具优化和压缩数据集,请参考以下示例代码:

优化和压缩数据集

from pathlib import Path

from ultralytics.data.utils import compress_one_image
from ultralytics.utils.downloads import zip_directory

# Define dataset directory
path = Path("path/to/dataset")

# Optimize images in dataset (optional)
for f in path.rglob("*.jpg"):
    compress_one_image(f)

# Zip dataset into 'path/to/dataset.zip'
zip_directory(path) 

了解如何优化和压缩数据集。

Ultralytics Explorer

原文:docs.ultralytics.com/datasets/explorer/

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 Ultralytics Explorer 是一个用于使用语义搜索、SQL 查询、向量相似性搜索甚至自然语言探索 CV 数据集的工具。它也是一个 Python API,用于访问相同的功能。

www.youtube.com/embed/3VryynorQeo

观看: Ultralytics Explorer API | 语义搜索,SQL 查询和 Ask AI 功能

可选依赖项的安装

Explorer 依赖于某些功能的外部库。这些库在使用时会自动安装。要手动安装这些依赖项,请使用以下命令:

pip  install  ultralytics[explorer] 

提示

Explorer 在嵌入/语义搜索和 SQL 查询方面运作,并由LanceDB 无服务器向量数据库提供支持。与传统的内存数据库不同,它在磁盘上持久保存,而不会影响性能,因此您可以在本地扩展到像 COCO 这样的大型数据集而不会耗尽内存。

Explorer API

这是一个用于探索数据集的 Python API。它还支持 GUI 资源管理器。您可以使用它来创建自己的探索性笔记本或脚本,以深入了解您的数据集。

在这里了解更多有关 Explorer API 的信息。

GUI 资源管理器使用说明

GUI 演示在您的浏览器中运行,允许您为数据集创建嵌入并搜索相似图像,运行 SQL 查询和执行语义搜索。可以使用以下命令运行:

yolo  explorer 

注意

Ask AI 功能使用 OpenAI,因此在首次运行 GUI 时,您将被提示设置 OpenAI 的 API 密钥。您可以像这样设置它 - yolo settings openai_api_key="..."

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

常见问题解答

什么是 Ultralytics Explorer,它如何帮助 CV 数据集?

Ultralytics Explorer 是一个强大的工具,专为通过语义搜索、SQL 查询、向量相似性搜索甚至自然语言来探索计算机视觉(CV)数据集而设计。这个多功能工具提供了 GUI 和 Python API,允许用户与其数据集无缝交互。通过利用像 LanceDB 这样的技术,Ultralytics Explorer 确保了对大型数据集的高效可扩展访问,而不会出现过多的内存使用。无论您是进行详细的数据集分析还是探索数据模式,Ultralytics Explorer 都简化了整个过程。

了解更多关于 Explorer API 的信息。

我如何安装 Ultralytics Explorer 的依赖项?

要手动安装 Ultralytics Explorer 所需的可选依赖项,您可以使用以下pip命令:

pip  install  ultralytics[explorer] 

这些依赖项对语义搜索和 SQL 查询的完整功能至关重要。通过包含由LanceDB支持的库,安装确保数据库操作保持高效和可扩展性,即使处理像 COCO 这样的大型数据集。

我如何使用 Ultralytics Explorer 的 GUI 版本?

使用 Ultralytics Explorer 的 GUI 版本非常简单。安装必要的依赖项后,您可以使用以下命令启动 GUI:

yolo  explorer 

GUI 提供了一个用户友好的界面,用于创建数据集嵌入、搜索相似图像、运行 SQL 查询和进行语义搜索。此外,与 OpenAI 的 Ask AI 功能集成使您能够使用自然语言查询数据集,增强了灵活性和易用性。

对于存储和可扩展性信息,请查看我们的安装说明。

Ultralytics Explorer 中的 Ask AI 功能是什么?

Ultralytics Explorer 中的 Ask AI 功能允许用户使用自然语言查询与其数据集进行交互。通过 OpenAI 提供支持,此功能使您能够提出复杂问题并获得深刻见解,而无需编写 SQL 查询或类似命令。要使用此功能,您需要在第一次运行 GUI 时设置您的 OpenAI API 密钥:

yolo  settings  openai_api_key="YOUR_API_KEY" 

欲了解更多此功能及其集成方法,请参阅我们的 GUI Explorer 使用部分。

我可以在 Google Colab 中运行 Ultralytics Explorer 吗?

是的,Ultralytics Explorer 可以在 Google Colab 中运行,为数据集探索提供了方便而强大的环境。您可以通过打开提供的 Colab 笔记本来开始,该笔记本已预先配置了所有必要的设置:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这个设置允许您充分探索数据集,充分利用 Google 的云资源。在我们的 Google Colab 指南中了解更多。

Ultralytics Explorer API

原文:docs.ultralytics.com/datasets/explorer/api/

简介

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 Explorer API 是一个用于探索数据集的 Python API。它支持使用 SQL 查询、向量相似性搜索和语义搜索对数据集进行过滤和搜索。

www.youtube.com/embed/3VryynorQeo?start=279

观看: Ultralytics Explorer API 概述

安装

Explorer 依赖于一些外部库来完成其功能。在使用时会自动安装这些依赖项。要手动安装这些依赖项,请使用以下命令:

pip  install  ultralytics[explorer] 

使用方法

from ultralytics import Explorer

# Create an Explorer object
explorer = Explorer(data="coco128.yaml", model="yolov8n.pt")

# Create embeddings for your dataset
explorer.create_embeddings_table()

# Search for similar images to a given image/images
dataframe = explorer.get_similar(img="path/to/image.jpg")

# Or search for similar images to a given index/indices
dataframe = explorer.get_similar(idx=0) 

注意

对于给定的数据集和模型对,嵌入表仅创建一次并重复使用。这些在幕后使用 LanceDB,它在磁盘上扩展,因此您可以在不耗尽内存的情况下为诸如 COCO 等大型数据集创建和重用嵌入。

如果您想强制更新嵌入表,可以将 force=True 传递给 create_embeddings_table 方法。

您可以直接访问 LanceDB 表对象进行高级分析。在“使用嵌入表”部分了解更多信息

1. 相似性搜索

相似性搜索是一种寻找与给定图像相似的图像的技术。它基于相似图像将具有相似嵌入的想法。一旦建立了嵌入表,您可以以以下任何方式之一运行语义搜索:

  • 对于数据集中的给定索引或索引列表:exp.get_similar(idx=[1,10], limit=10)

  • 对于数据集中不存在的任何图像或图像列表:exp.get_similar(img=["path/to/img1", "path/to/img2"], limit=10)

如果有多个输入,则使用它们的嵌入的聚合。

您将获得一个带有 limit 数量最相似数据点的 pandas dataframe,以及它们在嵌入空间中的距离。您可以使用此数据集进行进一步的筛选

语义搜索

from ultralytics import Explorer

# create an Explorer object
exp = Explorer(data="coco128.yaml", model="yolov8n.pt")
exp.create_embeddings_table()

similar = exp.get_similar(img="https://ultralytics.com/images/bus.jpg", limit=10)
print(similar.head())

# Search using multiple indices
similar = exp.get_similar(
    img=["https://ultralytics.com/images/bus.jpg", "https://ultralytics.com/images/bus.jpg"],
    limit=10,
)
print(similar.head()) 
from ultralytics import Explorer

# create an Explorer object
exp = Explorer(data="coco128.yaml", model="yolov8n.pt")
exp.create_embeddings_table()

similar = exp.get_similar(idx=1, limit=10)
print(similar.head())

# Search using multiple indices
similar = exp.get_similar(idx=[1, 10], limit=10)
print(similar.head()) 

绘制相似图像

您还可以使用 plot_similar 方法绘制相似图像。此方法接受与 get_similar 相同的参数,并在网格中绘制相似图像。

绘制相似图像

from ultralytics import Explorer

# create an Explorer object
exp = Explorer(data="coco128.yaml", model="yolov8n.pt")
exp.create_embeddings_table()

plt = exp.plot_similar(img="https://ultralytics.com/images/bus.jpg", limit=10)
plt.show() 
from ultralytics import Explorer

# create an Explorer object
exp = Explorer(data="coco128.yaml", model="yolov8n.pt")
exp.create_embeddings_table()

plt = exp.plot_similar(idx=1, limit=10)
plt.show() 

2. 询问 AI(自然语言查询)

这使您可以使用自然语言编写您想要过滤数据集的方式。您不必精通编写 SQL 查询。我们的 AI 动力查询生成器将在幕后自动执行此操作。例如,您可以说:“显示 100 张只有一个人和 2 只狗的图像。也可能有其他物体”,它会在内部生成查询并显示结果。注意:这使用 LLMs 在幕后工作,因此结果是概率性的,有时可能出错。

询问 AI

from ultralytics import Explorer
from ultralytics.data.explorer import plot_query_result

# create an Explorer object
exp = Explorer(data="coco128.yaml", model="yolov8n.pt")
exp.create_embeddings_table()

df = exp.ask_ai("show me 100 images with exactly one person and 2 dogs. There can be other objects too")
print(df.head())

# plot the results
plt = plot_query_result(df)
plt.show() 

3. SQL 查询

您可以使用sql_query方法在数据集上运行 SQL 查询。此方法接受 SQL 查询作为输入,并返回带有结果的 pandas 数据框。

SQL 查询

from ultralytics import Explorer

# create an Explorer object
exp = Explorer(data="coco128.yaml", model="yolov8n.pt")
exp.create_embeddings_table()

df = exp.sql_query("WHERE labels LIKE '%person%' AND labels LIKE '%dog%'")
print(df.head()) 

绘制 SQL 查询结果

您还可以使用plot_sql_query方法绘制 SQL 查询结果。此方法接受与sql_query相同的参数,并在网格中绘制结果。

绘制 SQL 查询结果

from ultralytics import Explorer

# create an Explorer object
exp = Explorer(data="coco128.yaml", model="yolov8n.pt")
exp.create_embeddings_table()

# plot the SQL Query
exp.plot_sql_query("WHERE labels LIKE '%person%' AND labels LIKE '%dog%' LIMIT 10") 

4. 使用嵌入表

您还可以直接使用嵌入表。一旦创建了嵌入表,您可以使用Explorer.table访问它。

Explorer 在内部使用LanceDB表。您可以直接使用Explorer.table对象访问此表,并运行原始查询、推送预处理和后处理过滤等。

from ultralytics import Explorer

exp = Explorer()
exp.create_embeddings_table()
table = exp.table 

以下是您可以使用表格执行的一些示例:

获取原始嵌入

示例

from ultralytics import Explorer

exp = Explorer()
exp.create_embeddings_table()
table = exp.table

embeddings = table.to_pandas()["vector"]
print(embeddings) 

使用预处理和后处理过滤进行高级查询

示例

from ultralytics import Explorer

exp = Explorer(model="yolov8n.pt")
exp.create_embeddings_table()
table = exp.table

# Dummy embedding
embedding = [i for i in range(256)]
rs = table.search(embedding).metric("cosine").where("").limit(10) 

创建向量索引

在使用大型数据集时,您还可以创建一个专用的向量索引以加快查询速度。这可以通过在 LanceDB 表上使用create_index方法来完成。

table.create_index(num_partitions=..., num_sub_vectors=...) 

查找更多有关可用类型向量索引和参数的详细信息这里。将来,我们将支持直接从 Explorer API 创建向量索引。

5. 嵌入应用

您可以使用嵌入表执行各种探索性分析。以下是一些示例:

相似性指数

Explorer 提供了similarity_index操作:

  • 它试图估计每个数据点与数据集中其余数据点的相似程度。

  • 它通过计算与生成的嵌入空间中当前图像距离小于max_dist的图像数量来实现,每次考虑top_k相似图像。

返回一个带有以下列的 pandas 数据框:

  • idx: 数据集中图像的索引

  • im_file: 图像文件的路径

  • count: 数据集中与当前图像距离小于max_dist的图像数量

  • sim_im_files: 列表,包含count个相似图像的路径

小贴士

对于给定的数据集、模型、max_disttop_k,生成一次相似性指数后将重复使用。如果您的数据集已更改或者您只需重新生成相似性指数,可以传递force=True

相似性指数

from ultralytics import Explorer

exp = Explorer()
exp.create_embeddings_table()

sim_idx = exp.similarity_index() 

您可以使用相似性指数构建自定义条件来过滤数据集。例如,您可以使用以下代码过滤掉与数据集中任何其他图像不相似的图像:

import numpy as np

sim_count = np.array(sim_idx["count"])
sim_idx["im_file"][sim_count > 30] 

可视化嵌入空间

您还可以使用您选择的绘图工具来可视化嵌入空间。例如,这是使用 matplotlib 的一个简单示例:

import matplotlib.pyplot as plt
from sklearn.decomposition import PCA

# Reduce dimensions using PCA to 3 components for visualization in 3D
pca = PCA(n_components=3)
reduced_data = pca.fit_transform(embeddings)

# Create a 3D scatter plot using Matplotlib Axes3D
fig = plt.figure(figsize=(8, 6))
ax = fig.add_subplot(111, projection="3d")

# Scatter plot
ax.scatter(reduced_data[:, 0], reduced_data[:, 1], reduced_data[:, 2], alpha=0.5)
ax.set_title("3D Scatter Plot of Reduced 256-Dimensional Data (PCA)")
ax.set_xlabel("Component 1")
ax.set_ylabel("Component 2")
ax.set_zlabel("Component 3")

plt.show() 

使用 Explorer API 开始创建您自己的 CV 数据集探索报告。为了灵感,请查看

使用 Ultralytics Explorer 构建的应用程序

使用基于 Explorer API 的 GUI 演示

即将推出

  • 合并数据集中特定的标签。例如 - 从 COCO 导入所有person标签和从 Cityscapes 导入所有car标签

  • 删除具有比给定阈值更高相似性索引的图像

  • 在合并/移除条目后自动持久化新数据集

  • 高级数据集可视化

常见问题解答

Ultralytics Explorer API 用于什么目的?

Ultralytics Explorer API 旨在进行全面的数据集探索。它允许用户使用 SQL 查询、向量相似性搜索和语义搜索来过滤和搜索数据集。这个功能强大的 Python API 可以处理大型数据集,非常适合使用 Ultralytics 模型进行各种计算机视觉任务。

如何安装 Ultralytics Explorer API?

要安装 Ultralytics Explorer API 及其依赖项,请使用以下命令:

pip  install  ultralytics[explorer] 

这将自动安装探索器 API 功能所需的所有外部库。有关其他设置详细信息,请参阅我们文档的安装部分。

如何使用 Ultralytics Explorer API 进行相似性搜索?

您可以使用 Ultralytics 探索器 API 创建嵌入表,并查询类似图像进行相似性搜索。以下是一个基本示例:

from ultralytics import Explorer

# Create an Explorer object
explorer = Explorer(data="coco128.yaml", model="yolov8n.pt")
explorer.create_embeddings_table()

# Search for similar images to a given image
similar_images_df = explorer.get_similar(img="path/to/image.jpg")
print(similar_images_df.head()) 

欲了解更多详情,请访问相似性搜索部分。

使用 LanceDB 与 Ultralytics Explorer 有什么好处?

Ultralytics Explorer 内部使用的 LanceDB 提供可扩展的磁盘嵌入表。这确保您可以为诸如 COCO 这样的大型数据集创建和重用嵌入,而无需担心内存不足问题。这些表仅创建一次,并可重复使用,提升数据处理效率。

Ultralytics Explorer API 中的 Ask AI 功能是如何工作的?

Ask AI 功能允许用户使用自然语言查询来过滤数据集。此功能利用 LLMs 在后台将这些查询转换为 SQL 查询。以下是一个示例:

from ultralytics import Explorer

# Create an Explorer object
explorer = Explorer(data="coco128.yaml", model="yolov8n.pt")
explorer.create_embeddings_table()

# Query with natural language
query_result = explorer.ask_ai("show me 100 images with exactly one person and 2 dogs. There can be other objects too")
print(query_result.head()) 

欲了解更多示例,请查看 Ask AI 部分。

Explorer GUI

原文:docs.ultralytics.com/datasets/explorer/dashboard/

Explorer GUI 就像一个使用 Ultralytics Explorer API 构建的游乐场。它允许你运行语义/向量相似性搜索、SQL 查询,甚至使用我们的 AI 询问功能通过自然语言进行搜索,这一切都由 LLMs 提供支持。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

www.youtube.com/embed/3VryynorQeo?start=306

观看: Ultralytics Explorer 仪表板概述

安装

pip  install  ultralytics[explorer] 

注意

询问 AI 功能使用 OpenAI,因此在你第一次运行 GUI 时,会提示你设置 OpenAI 的 API 密钥。你可以这样设置 - yolo settings openai_api_key="..."

向量语义相似性搜索

语义搜索是一种查找与给定图像相似图像的技术。它基于相似图像将具有相似嵌入的想法。在用户界面中,你可以选择一张或多张图像,并搜索与它们相似的图像。当你想找到与给定图像或一组表现不如预期的图像相似的图像时,这将非常有用。

例如:在这个 VOC 探索仪表板中,用户选择了几张飞机图像,如下所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在执行相似性搜索时,你应该会看到类似的结果:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

询问 AI

这允许你使用自然语言编写如何过滤数据集的方式。你不必精通 SQL 查询的编写。我们的 AI 驱动的查询生成器将在后台自动完成。例如 - 你可以说 - “给我展示 100 张恰好有一个人和 2 只狗的图像。也可以有其他物体。”它会在内部生成查询并向你展示这些结果。当被要求“展示 10 张恰好有 5 个人的图像”时,你会看到这样的结果:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

注意:这在后台使用 LLMs,因此结果是概率性的,有时可能会出错。

在你的 CV 数据集上运行 SQL 查询

你可以在数据集上运行 SQL 查询以进行过滤。如果只提供 WHERE 子句,它也能正常工作。示例 SQL 查询将仅显示至少包含 1 个人和 1 只狗的图像:

WHERE  labels  LIKE  '%person%'  AND  labels  LIKE  '%dog%' 

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这是一个使用 Explorer API 构建的演示版本。你可以使用该 API 构建自己的探索性笔记本或脚本,以获取对数据集的洞察。了解更多关于 Explorer API 的信息。

常见问题解答

什么是 Ultralytics Explorer GUI,如何安装它?

Ultralytics Explorer GUI 是一个强大的界面,通过 Ultralytics Explorer API 解锁先进的数据探索能力。它允许你运行语义/向量相似性搜索、SQL 查询,并使用由大型语言模型(LLMs)提供支持的 Ask AI 功能进行自然语言查询。

要安装 Explorer GUI,您可以使用 pip:

pip  install  ultralytics[explorer] 

注意:要使用由大型语言模型(LLMs)提供支持的 Ask AI 功能,您需要设置 OpenAI API 密钥:yolo settings openai_api_key="..."

Ultralytics Explorer GUI 中的语义搜索功能是如何工作的?

Ultralytics Explorer GUI 中的语义搜索功能允许你根据它们的嵌入向量找到与给定图像相似的图像。这种技术对于识别和探索视觉相似的图像非常有用。要使用此功能,在界面中选择一个或多个图像,然后执行搜索相似图像的操作。结果将显示与所选图像紧密相似的图像,有助于进行高效的数据集探索和异常检测。

通过访问功能概述部分了解更多关于语义搜索和其他功能的信息。

我可以在 Ultralytics Explorer GUI 中使用自然语言来过滤数据集吗?

是的,借助由大型语言模型(LLMs)提供支持的 Ask AI 功能,您可以使用自然语言查询来过滤数据集,无需精通 SQL。例如,您可以询问“显示 100 张只有一个人和两只狗的图像。还可以有其他对象”,AI 将在背后生成适当的查询以提供所需的结果。

在这里看一个自然语言查询的示例。

我如何在 Ultralytics Explorer GUI 上运行 SQL 查询来处理数据集?

Ultralytics Explorer GUI 允许你直接在数据集上运行 SQL 查询,以便高效地过滤和管理数据。要运行查询,导航到 GUI 中的 SQL 查询部分,并编写你的查询。例如,要显示至少有一个人和一只狗的图像,你可以使用:

WHERE  labels  LIKE  '%person%'  AND  labels  LIKE  '%dog%' 

你也可以仅提供 WHERE 子句,使查询过程更加灵活。

欲了解更多详情,请参阅 SQL 查询部分。

使用 Ultralytics Explorer GUI 进行数据探索的好处是什么?

Ultralytics Explorer GUI 通过语义搜索、SQL 查询和通过 Ask AI 功能进行的自然语言交互增强了数据探索功能。这些能力允许用户: - 高效地查找视觉上相似的图像。 - 使用复杂的 SQL 查询过滤数据集。 - 利用 AI 进行自然语言搜索,无需高级 SQL 技能。

这些功能使它成为开发人员、研究人员和数据科学家的多功能工具,帮助他们更深入地了解他们的数据集。

了解更多关于 Explorer GUI 文档中这些功能的信息。

对象检测数据集概述

原文:docs.ultralytics.com/datasets/detect/

训练强大而准确的对象检测模型需要一个全面的数据集。本指南介绍了与 Ultralytics YOLO 模型兼容的各种数据集格式,以及它们的结构、用法以及如何在不同格式之间转换的见解。

支持的数据集格式

Ultralytics YOLO 格式

Ultralytics YOLO 格式是一种数据集配置格式,允许您定义数据集根目录、与训练/验证/测试图像目录或包含图像路径的*.txt文件的相对路径,以及一个类名字典。以下是一个示例:

# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path:  ../datasets/coco8  # dataset root dir
train:  images/train  # train images (relative to 'path') 4 images
val:  images/val  # val images (relative to 'path') 4 images
test:  # test images (optional)

# Classes (80 COCO classes)
names:
  0:  person
  1:  bicycle
  2:  car
  # ...
  77:  teddy bear
  78:  hair drier
  79:  toothbrush 

此格式的标签应导出为 YOLO 格式,每个图像一个*.txt文件。如果图像中没有物体,则不需要*.txt文件。*.txt文件应按class x_center y_center width height格式进行格式化。框坐标必须采用归一化 xywh格式(从 0 到 1)。如果您的框以像素表示,应将x_centerwidth除以图像宽度,将y_centerheight除以图像高度。类号应从零开始索引。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

对应上述图像的标签文件包含 2 个人(类0)和一条领带(类27):

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在使用 Ultralytics YOLO 格式时,应按照下面 COCO8 数据集示例所示组织您的训练和验证图像及标签。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

用法

下面是如何使用这些格式来训练您的模型:

示例

from ultralytics import YOLO

# Load a model
model = YOLO("yolov8n.pt")  # load a pretrained model (recommended for training)

# Train the model
results = model.train(data="coco8.yaml", epochs=100, imgsz=640) 
# Start training from a pretrained *.pt model
yolo  detect  train  data=coco8.yaml  model=yolov8n.pt  epochs=100  imgsz=640 

支持的数据集

下面是支持的数据集列表及每个数据集的简要描述:

  • Argoverse:一个包含来自城市环境的 3D 跟踪和运动预测数据的数据集,具有丰富的注释。

  • COCO:Common Objects in Context(COCO)是一个包含 80 个对象类别的大规模对象检测、分割和字幕数据集。

  • LVIS:一个包含 1203 个对象类别的大规模对象检测、分割和字幕数据集。

  • COCO8:COCO 训练集和 COCO 验证集中的前 4 张图像的较小子集,适合快速测试。

  • Global Wheat 2020:一个包含小麦头图像的数据集,用于全球小麦挑战 2020。

  • Objects365:一个高质量的大规模对象检测数据集,包含 365 个对象类别和超过 60 万个标记图像。

  • OpenImagesV7:由 Google 提供的全面数据集,包含 170 万训练图像和 42000 个验证图像。

  • SKU-110K:一个在零售环境中进行密集对象检测的数据集,包含超过 1.1 万张图像和 170 万个边界框。

  • VisDrone:一个包含来自无人机捕获图像的对象检测和多对象跟踪数据的数据集,包括超过 1 万张图像和视频序列。

  • VOC:Pascal 视觉对象类数据集(VOC),用于对象检测和分割,包含 20 个对象类别和超过 11K 张图像。

  • xView:用于航拍图像中对象检测的数据集,包含 60 个对象类别和超过 100 万个注释对象。

  • Roboflow 100:一个包括七个图像领域的 100 个数据集的多样化目标检测基准,用于全面评估模型。

  • Brain-tumor:一个用于检测脑肿瘤的数据集,包括 MRI 或 CT 扫描图像,并提供有关肿瘤出现、位置和特征的详细信息。

  • African-wildlife:一个展示非洲野生动物图像的数据集,包括水牛、大象、犀牛和斑马。

  • Signature:一个展示各种文件中带有标注签名的图像的数据集,支持文件验证和欺诈检测研究。

添加您自己的数据集

如果您有自己的数据集并希望使用它来训练使用 Ultralytics YOLO 格式的检测模型,请确保它遵循上述“Ultralytics YOLO 格式”中指定的格式。将您的注释转换为所需的格式,并在 YAML 配置文件中指定路径、类别数和类名。

Port or Convert Label Formats

COCO 数据集格式到 YOLO 格式

您可以使用以下代码片段轻松将标签从流行的 COCO 数据集格式转换为 YOLO 格式:

示例

from ultralytics.data.converter import convert_coco

convert_coco(labels_dir="path/to/coco/annotations/") 

此转换工具可用于将 COCO 数据集或任何符合 COCO 格式的数据集转换为 Ultralytics YOLO 格式。

请记得仔细检查所需使用的数据集是否与您的模型兼容,并遵循必要的格式约定。正确格式化的数据集对于成功训练对象检测模型至关重要。

常见问题解答

什么是 Ultralytics YOLO 数据集格式以及如何结构化它?

Ultralytics YOLO 格式是定义训练项目中数据集结构的结构化配置。它涉及设置训练、验证和测试图像及其相应标签的路径。例如:

path:  ../datasets/coco8  # dataset root directory
train:  images/train  # training images (relative to 'path')
val:  images/val  # validation images (relative to 'path')
test:  # optional test images
names:
  0:  person
  1:  bicycle
  2:  car
  # ... 

标签保存在以 *.txt 格式保存的文件中,每个图像一个文件,格式为 class x_center y_center width height,使用标准化的坐标。如需详细指南,请参阅 COCO8 数据集示例。

如何将 COCO 数据集转换为 YOLO 格式?

您可以使用 Ultralytics 转换工具将 COCO 数据集转换为 YOLO 格式。以下是一个快速方法:

from ultralytics.data.converter import convert_coco

convert_coco(labels_dir="path/to/coco/annotations/") 

这段代码将会把你的 COCO 标注转换成 YOLO 格式,从而实现与 Ultralytics YOLO 模型的无缝集成。有关详细信息,请访问 Port or Convert Label Formats 部分。

Ultralytics YOLO 为对象检测支持哪些数据集?

Ultralytics YOLO 支持广泛的数据集,包括:

  • Argoverse

  • COCO

  • LVIS

  • COCO8

  • Global Wheat 2020

  • Objects365

  • OpenImagesV7

每个数据集页面提供了针对高效 YOLOv8 训练量身定制的结构和使用详细信息。在支持的数据集部分查看完整列表。

如何开始使用我的数据集训练 YOLOv8 模型?

要开始训练 YOLOv8 模型,请确保数据集格式正确,并在 YAML 文件中定义路径。使用以下脚本开始训练:

示例

from ultralytics import YOLO

model = YOLO("yolov8n.pt")  # Load a pretrained model
results = model.train(data="path/to/your_dataset.yaml", epochs=100, imgsz=640) 
yolo  detect  train  data=path/to/your_dataset.yaml  model=yolov8n.pt  epochs=100  imgsz=640 

参考使用部分,了解如何使用不同的模式,包括 CLI 命令的详细信息。

我在哪里可以找到使用 Ultralytics YOLO 进行物体检测的实际示例?

Ultralytics 提供了许多示例和实用指南,展示了在各种应用中使用 YOLOv8 的方法。要全面了解,请访问Ultralytics Blog,那里有案例研究、详细教程和社区故事,展示了使用 YOLOv8 进行物体检测、分割等。要查看具体示例,请查看文档中的使用部分。

  • 19
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值