Skip to content

交互式目标检测:Gradio & Ultralytics YOLO11 🚀

交互式目标检测简介

此Gradio界面提供了一种简单且交互式的方式,使用Ultralytics YOLO11模型进行目标检测。用户可以上传图像并调整置信度阈值和交并比(IoU)阈值等参数,以获得实时的检测结果。



观看: Gradio与Ultralytics YOLO11的集成

为什么使用Gradio进行目标检测?

  • 用户友好的界面: Gradio提供了一个直观的平台,用户可以上传图像并可视化检测结果,无需任何编码要求。
  • 实时调整: 可以即时调整置信度和IoU阈值等参数,允许立即反馈和优化检测结果。
  • 广泛的访问性: Gradio的网页界面任何人都可以访问,是演示、教育和快速实验的绝佳工具。

Gradio示例截图

如何安装Gradio

pip install gradio

如何使用界面

  1. 上传图像: 点击“上传图像”选择用于目标检测的图像文件。
  2. 调整参数:
    • 置信度阈值: 滑块设置检测对象的最小置信度。
    • IoU阈值: 滑块设置区分不同对象的IoU阈值。
  3. 查看结果: 将显示带有检测对象及其标签的处理图像。

示例用例

  • 示例图像1: 使用默认阈值检测公交车。
  • 示例图像2: 使用默认阈值检测体育图像。

使用示例

本节提供了用于创建带有Ultralytics YOLO11模型的Gradio界面的Python代码。支持分类任务、检测任务、分割任务和关键点任务。

import gradio as gr
import PIL.Image as Image

from ultralytics import ASSETS, YOLO

model = YOLO("yolo11n.pt")


def predict_image(img, conf_threshold, iou_threshold):
    """使用可调置信度和IoU阈值的YOLO11模型预测图像中的对象。"""
    results = model.predict(
        source=img,
        conf=conf_threshold,
        iou=iou_threshold,
        show_labels=True,
        show_conf=True,
        imgsz=640,
    )

    for r in results:
        im_array = r.plot()
        im = Image.fromarray(im_array[..., ::-1])

    return im


iface = gr.Interface(
    fn=predict_image,
    inputs=[
        gr.Image(type="pil", label="上传图像"),
        gr.Slider(minimum=0, maximum=1, value=0.25, label="置信度阈值"),
        gr.Slider(minimum=0, maximum=1, value=0.45, label="IoU阈值"),
    ],
    outputs=gr.Image(type="pil", label="结果"),
    title="Ultralytics Gradio",
    description="上传图像进行推理。默认使用Ultralytics YOLO11n模型。",
    examples=[
        [ASSETS / "bus.jpg", 0.25, 0.45],
        [ASSETS / "zidane.jpg", 0.25, 0.45],
    ],
)

if __name__ == "__main__":
    iface.launch()

参数解释

参数名称 类型 描述
img Image 将进行目标检测的图像。
conf_threshold float 检测对象的置信度阈值。
iou_threshold float 用于对象分离的交并比阈值。

Gradio界面组件

组件 描述
图像输入 用于上传检测图像。
滑块 用于调整置信度和IoU阈值。
图像输出 用于显示检测结果。

常见问题

如何使用Gradio与Ultralytics YOLO11进行目标检测?

要使用Gradio与Ultralytics YOLO11进行目标检测,您可以按照以下步骤操作: 1. 安装Gradio: 使用命令 pip install gradio。 2. 创建界面: 编写一个Python脚本来初始化Gradio界面。你可以参考文档中提供的代码示例以获取详细信息。 3. 上传和调整: 上传你的图像并在Gradio界面上调整置信度和IoU阈值,以获取实时的目标检测结果。

以下是一个参考的最小代码片段:

import gradio as gr

from ultralytics import YOLO

model = YOLO("yolo11n.pt")


def predict_image(img, conf_threshold, iou_threshold):
    results = model.predict(
        source=img,
        conf=conf_threshold,
        iou=iou_threshold,
        show_labels=True,
        show_conf=True,
    )
    return results[0].plot() if results else None


iface = gr.Interface(
    fn=predict_image,
    inputs=[
        gr.Image(type="pil", label="上传图像"),
        gr.Slider(minimum=0, maximum=1, value=0.25, label="置信度阈值"),
        gr.Slider(minimum=0, maximum=1, value=0.45, label="IoU阈值"),
    ],
    outputs=gr.Image(type="pil", label="结果"),
    title="Ultralytics Gradio YOLO11",
    description="上传图像以进行YOLO11目标检测。",
)
iface.launch()

使用Gradio进行Ultralytics YOLO11目标检测的好处是什么?

使用Gradio进行Ultralytics YOLO11目标检测有以下几个好处:

  • 用户友好的界面: Gradio提供了一个直观的界面,用户可以上传图像并可视化检测结果,无需任何编码工作。
  • 实时调整: 你可以动态调整检测参数,如置信度和IoU阈值,并立即看到效果。
  • 可访问性: 网页界面对任何人开放,适用于快速实验、教育目的和演示。

更多详情,你可以阅读这篇博客文章

我可以用Gradio和Ultralytics YOLO11一起用于教育目的吗?

是的,Gradio和Ultralytics YOLO11可以有效地结合用于教育目的。Gradio的直观网页界面使得学生和教育者能够轻松与深度学习模型(如Ultralytics YOLO11)互动,而无需高级编程技能。这种设置非常适合演示目标检测和计算机视觉中的关键概念,因为Gradio提供了即时的视觉反馈,有助于理解不同参数对检测性能的影响。

如何在Gradio界面中调整YOLO11的置信度和IoU阈值?

在YOLO11的Gradio界面中,你可以使用提供的滑块来调整置信度和IoU阈值。这些阈值有助于控制预测准确性和对象分离:

  • 置信度阈值: 确定检测对象的最小置信度水平。滑动以增加或减少所需的置信度。
  • IoU阈值: 设置区分重叠对象的交并比阈值。调整此值以细化对象分离。

有关这些参数的更多信息,请访问参数解释部分

使用Ultralytics YOLO11与Gradio有哪些实际应用?

结合Ultralytics YOLO11与Gradio的实际应用包括:

  • 实时目标检测演示: 非常适合展示实时目标检测的工作原理。
  • 教育工具: 在学术环境中用于教授目标检测和计算机视觉概念。
  • 原型开发: 高效地用于快速开发和测试目标检测应用程序原型。
  • 社区和合作: 便于与社区分享模型以获取反馈和合作。

有关类似用例的示例,请查看Ultralytics博客

在文档中提供这些信息将有助于提高Ultralytics YOLO11的可用性和可访问性,使其对所有经验水平的用户都更加友好。


📅 Created 8 months ago ✏️ Updated 13 days ago

Comments