跳至内容

交互式物体检测:Gradio &Ultralytics YOLOv8 🚀

交互式物体检测简介

该 Gradio 界面提供了一种简便的交互式方法,可使用模型进行对象检测。 Ultralytics YOLOv8模型进行物体检测。用户可以上传图像,调整置信度阈值和交集-重合(IoU)阈值等参数,以获得实时检测结果。



观看: Gradio 与Ultralytics YOLOv8

为什么使用 Gradio 进行物体检测?

  • 用户界面友好:Gradio 为用户提供了一个简单明了的平台,无需任何编码要求即可上传图像并可视化检测结果。
  • 实时调整:可对置信度和 IoU 阈值等参数进行实时调整,从而获得即时反馈并优化检测结果。
  • 广泛的可访问性:任何人都可以访问 Gradio 网页界面,使其成为演示、教育和快速实验的绝佳工具。

Gradio 示例截图

如何安装 Gradio

pip install gradio

如何使用界面

  1. 上传图像:点击 "上传图像",选择图像文件进行对象检测。
  2. 调整参数:
    • 置信度阈值:滑块,用于设置检测物体的最低置信度。
    • IoU 门限:滑块用于设置用于区分不同物体的 IoU 门限。
  3. 查看结果:将显示经过处理的图像和检测到的物体及其标签。

使用实例

  • 示例图像 1:使用默认阈值进行总线检测。
  • 示例图像 2:使用默认阈值对运动图像进行检测。

使用示例

本节提供Python 代码,用于创建 Gradio 与Ultralytics YOLOv8 模型的接口。支持分类任务、检测任务、分割任务和关键点任务。

import gradio as gr
import PIL.Image as Image

from ultralytics import ASSETS, YOLO

model = YOLO("yolov8n.pt")


def predict_image(img, conf_threshold, iou_threshold):
    """Predicts objects in an image using a YOLOv8 model with adjustable confidence and IOU thresholds."""
    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="Upload Image"),
        gr.Slider(minimum=0, maximum=1, value=0.25, label="Confidence threshold"),
        gr.Slider(minimum=0, maximum=1, value=0.45, label="IoU threshold"),
    ],
    outputs=gr.Image(type="pil", label="Result"),
    title="Ultralytics Gradio",
    description="Upload images for inference. The Ultralytics YOLOv8n model is used by default.",
    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 YOLOv8 进行对象检测?

要将 Gradio 与Ultralytics YOLOv8 一起用于对象检测,可以按照以下步骤操作:

  1. 安装 Gradio: 使用命令 pip install gradio.
  2. 创建界面:编写Python 脚本初始化 Gradio 界面。详情可参考文档中提供的代码示例。
  3. 上传和调整:上传图像并在 Gradio 界面上调整置信度和 IoU 阈值,以获得实时对象检测结果。

下面是一个最基本的代码片段,供参考:

import gradio as gr

from ultralytics import YOLO

model = YOLO("yolov8n.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="Upload Image"),
        gr.Slider(minimum=0, maximum=1, value=0.25, label="Confidence threshold"),
        gr.Slider(minimum=0, maximum=1, value=0.45, label="IoU threshold"),
    ],
    outputs=gr.Image(type="pil", label="Result"),
    title="Ultralytics Gradio YOLOv8",
    description="Upload images for YOLOv8 object detection.",
)
iface.launch()

使用 Gradio 进行Ultralytics YOLOv8 物体检测有什么好处?

使用 Gradio 进行Ultralytics YOLOv8 物体检测有几个好处:

  • 用户友好界面:Gradio 为用户提供了直观的界面,用户无需编写任何代码即可上传图像并查看检测结果。
  • 实时调整:您可以动态调整检测参数,如置信度和 IoU 阈值,并立即看到效果。
  • 可访问性任何人都可以访问网络界面,因此对于快速实验、教育目的和演示非常有用。

更多详情,请阅读本篇博文

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

是的,Gradio 和Ultralytics YOLOv8 可以一起有效地用于教育目的。Gradio 直观的网络界面让学生和教育工作者可以轻松地与Ultralytics YOLOv8 等最先进的深度学习模型进行交互,而无需高级编程技能。这种设置非常适合用于演示物体检测和计算机视觉的关键概念,因为 Gradio 可以提供即时的视觉反馈,有助于了解不同参数对检测性能的影响。

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

在YOLOv8 的 Gradio 界面中,您可以使用滑块调整置信度和 IoU 临界值。这些阈值有助于控制预测精度和对象分离度:

  • 置信度阈值:确定检测物体的最低置信度。滑动可提高或降低所需的置信度。
  • IoU 阈值:设置用于区分重叠对象的交叉-重合阈值。调整此值可细化对象分离。

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

Ultralytics YOLOv8 与 Gradio 有哪些实际应用?

将Ultralytics YOLOv8 与 Gradio 相结合的实际应用包括

  • 实时物体检测演示:是实时展示物体检测工作原理的理想之选。
  • 教育工具:适用于教学环境,教授物体检测和计算机视觉概念。
  • 原型开发:可快速高效地开发和测试物体检测应用原型。
  • 社区与合作:方便与社区共享模型,以获得反馈和开展合作。

有关类似用例,请访问Ultralytics 博客

在文件中提供这些信息将有助于提高Ultralytics YOLOv8 的可用性和可访问性,使不同专业水平的用户都能更容易地使用它。



创建于 2024-02-01,更新于 2024-07-05
作者:glenn-jocher(6)、ambitious-octopus(1)、IvorZhu331(1)、RizwanMunawar(1)

评论