Bỏ để qua phần nội dung

Phát hiện đối tượng tương tác: Gradio & Ultralytics YOLOv8 🚀

Giới thiệu về Phát hiện đối tượng tương tác

Giao diện Gradio này cung cấp một cách dễ dàng và tương tác để thực hiện phát hiện đối tượng bằng cách sử dụng Ultralytics YOLOv8 mẫu. Người dùng có thể tải lên hình ảnh và điều chỉnh các thông số như ngưỡng tin cậy và ngưỡng giao nhau (IoU) để có kết quả phát hiện theo thời gian thực.

Tại sao sử dụng Gradio để phát hiện đối tượng?

  • Giao diện thân thiện với người dùng: Gradio cung cấp một nền tảng đơn giản để người dùng tải lên hình ảnh và trực quan hóa kết quả phát hiện mà không cần bất kỳ yêu cầu mã hóa nào.
  • Điều chỉnh thời gian thực: Các thông số như độ tin cậy và ngưỡng IoU có thể được điều chỉnh nhanh chóng, cho phép phản hồi ngay lập tức và tối ưu hóa kết quả phát hiện.
  • Khả năng tiếp cận rộng: Giao diện web Gradio có thể được truy cập bởi bất kỳ ai, làm cho nó trở thành một công cụ tuyệt vời cho các cuộc biểu tình, mục đích giáo dục và thử nghiệm nhanh.

Ảnh chụp màn hình ví dụ Gradio

Cách cài đặt Gradio

pip install gradio

Cách sử dụng giao diện

  1. Tải lên hình ảnh: Nhấp vào 'Tải lên hình ảnh' để chọn tệp hình ảnh để phát hiện đối tượng.
  2. Điều chỉnh thông số:
    • Ngưỡng tin cậy: Thanh trượt để đặt mức tin cậy tối thiểu để phát hiện đối tượng.
    • Ngưỡng IoU: Thanh trượt để đặt ngưỡng IoU để phân biệt các đối tượng khác nhau.
  3. Xem kết quả: Hình ảnh được xử lý với các đối tượng được phát hiện và nhãn của chúng sẽ được hiển thị.

Ví dụ về trường hợp sử dụng

  • Ảnh mẫu 1: Phát hiện bus với ngưỡng mặc định.
  • Ảnh mẫu 2: Phát hiện trên hình ảnh thể thao với ngưỡng mặc định.

Ví dụ sử dụng

Phần này cung cấp Python mã được sử dụng để tạo giao diện Gradio với Ultralytics YOLOv8 mẫu. Hỗ trợ các nhiệm vụ phân loại, nhiệm vụ phát hiện, nhiệm vụ phân đoạn và nhiệm vụ điểm chính.

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 and plots labeled objects in an image using 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()

Giải thích thông số

Tên tham số Kiểu Sự miêu tả
img Image Hình ảnh mà trên đó phát hiện đối tượng sẽ được thực hiện.
conf_threshold float Ngưỡng tin cậy để phát hiện các đối tượng.
iou_threshold float Ngưỡng giao nhau-over-union để phân tách đối tượng.

Thành phần giao diện Gradio

Thành phần Sự miêu tả
Đầu vào hình ảnh Để tải lên hình ảnh để phát hiện.
Sliders Để điều chỉnh ngưỡng tin cậy và IoU.
Đầu ra hình ảnh Để hiển thị kết quả phát hiện.


Đã tạo 2024-02-01, Cập nhật 2024-05-18
Tác giả: glenn-jocher (3), RizwanMunawar (1)

Ý kiến