Chuyển đến nội dung

Phân đoạn Instance và Theo dõi sử dụng Ultralytics YOLO11 🚀

Phân đoạn thể hiện (Instance Segmentation) là gì?

Phân đoạn thể hiện (Instance segmentation) là một tác vụ thị giác máy tính liên quan đến việc xác định và phác thảo các đối tượng riêng lẻ trong một hình ảnh ở cấp độ pixel. Không giống như phân đoạn ngữ nghĩa (semantic segmentation) chỉ phân loại các pixel theo danh mục, phân đoạn thể hiện dán nhãn duy nhất và phân định chính xác từng thể hiện đối tượng, làm cho nó trở nên quan trọng đối với các ứng dụng đòi hỏi sự hiểu biết không gian chi tiết như hình ảnh y tế, lái xe tự động và tự động hóa công nghiệp.

Ultralytics YOLO11 cung cấp các khả năng phân vùng thể hiện mạnh mẽ, cho phép phát hiện ranh giới đối tượng chính xác trong khi vẫn duy trì tốc độ và hiệu quả mà các mô hình YOLO được biết đến.

Có hai loại theo dõi phân đoạn thể hiện (instance segmentation tracking) có sẵn trong gói Ultralytics:

  • Phân đoạn thể hiện với các đối tượng lớp: Mỗi đối tượng lớp được gán một màu duy nhất để phân tách trực quan rõ ràng.

  • Phân đoạn phiên bản với các đối tượng theo dõi: Mọi track được thể hiện bằng màu sắc riêng biệt, giúp dễ dàng nhận dạng và theo dõi trên các khung hình video.



Xem: Phân đoạn Instance với Theo dõi Đối tượng sử dụng Ultralytics YOLO11

Mẫu

Phân đoạn thực thểPhân đoạn Instance + Theo dõi Đối tượng
Phân đoạn thực thể UltralyticsUltralytics Instance Segmentation với tính năng theo dõi đối tượng
Ultralytics Instance Segmentation 😍Ultralytics Instance Segmentation với tính năng theo dõi đối tượng 🔥

Phân vùng thể hiện bằng Ultralytics YOLO

# Instance segmentation using Ultralytics YOLO11
yolo solutions isegment show=True

# Pass a source video
yolo solutions isegment source="path/to/video.mp4"

# Monitor the specific classes
yolo solutions isegment classes="[0, 5]"
import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"

# Video writer
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))
video_writer = cv2.VideoWriter("isegment_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

# Initialize instance segmentation object
isegment = solutions.InstanceSegmentation(
    show=True,  # display the output
    model="yolo11n-seg.pt",  # model="yolo11n-seg.pt" for object segmentation using YOLO11.
    # classes=[0, 2],  # segment specific classes i.e, person and car with pretrained model.
)

# Process video
while cap.isOpened():
    success, im0 = cap.read()

    if not success:
        print("Video frame is empty or video processing has been successfully completed.")
        break

    results = isegment(im0)

    # print(results)  # access the output

    video_writer.write(results.plot_im)  # write the processed frame.

cap.release()
video_writer.release()
cv2.destroyAllWindows()  # destroy all opened windows

InstanceSegmentation Các đối số

Đây là bảng với InstanceSegmentation các đối số:

Đối sốLoạiMặc địnhMô tả
modelstrNoneĐường dẫn đến một Ultralytics YOLO tập tin mô hình.
regionlist'[(20, 400), (1260, 400)]'Danh sách các điểm xác định vùng đếm.

Bạn cũng có thể tận dụng track các tham số trong InstanceSegmentation giải pháp:

Đối sốLoạiMặc địnhMô tả
trackerstr'botsort.yaml'Chỉ định thuật toán theo dõi để sử dụng, ví dụ: bytetrack.yaml hoặc botsort.yaml.
conffloat0.3Đặt ngưỡng tin cậy cho các phát hiện; giá trị thấp hơn cho phép theo dõi nhiều đối tượng hơn nhưng có thể bao gồm các kết quả dương tính giả.
ioufloat0.5Đặt Giao điểm trên Union ( IoU ) ngưỡng để lọc các phát hiện chồng chéo.
classeslistNoneLọc kết quả theo chỉ số lớp. Ví dụ: classes=[0, 2, 3] chỉ theo dõi các lớp được chỉ định.
verboseboolTrueKiểm soát việc hiển thị kết quả theo dõi, cung cấp đầu ra trực quan về các đối tượng được theo dõi.
devicestrNoneChỉ định thiết bị cho suy luận (ví dụ: cpu, cuda:0 hoặc 0). Cho phép người dùng lựa chọn giữa CPU, một GPU cụ thể hoặc các thiết bị tính toán khác để thực thi mô hình.

Hơn nữa, các đối số trực quan hóa sau đây có sẵn để sử dụng:

Đối sốLoạiMặc địnhMô tả
showboolFalseNếu True, hiển thị hình ảnh hoặc video đã chú thích trong một cửa sổ. Hữu ích để có phản hồi trực quan ngay lập tức trong quá trình phát triển hoặc thử nghiệm.
line_widthNone or intNoneChỉ định độ rộng đường của hộp giới hạn. Nếu None, độ rộng đường kẻ được tự động điều chỉnh dựa trên kích thước hình ảnh. Cung cấp tùy chỉnh trực quan để rõ ràng hơn.
show_confboolTrueHiển thị điểm tin cậy cho mỗi lần phát hiện cùng với nhãn. Cung cấp cái nhìn sâu sắc về độ chắc chắn của mô hình cho mỗi lần phát hiện.
show_labelsboolTrueHiển thị nhãn cho mỗi lần phát hiện trong đầu ra trực quan. Cung cấp sự hiểu biết ngay lập tức về các đối tượng được phát hiện.

Các ứng dụng của phân đoạn thể hiện

Phân vùng thể hiện với YOLO11 có nhiều ứng dụng thực tế trong các ngành công nghiệp khác nhau:

Quản Lý Chất Thải và Tái Chế

YOLO11 có thể được sử dụng trong các cơ sở quản lý chất thải để xác định và phân loại các loại vật liệu khác nhau. Mô hình có thể segment Rác thải nhựa, bìa cứng, kim loại và các vật liệu tái chế khác với độ chính xác cao, cho phép các hệ thống phân loại tự động xử lý rác thải hiệu quả hơn. Điều này đặc biệt có giá trị khi xét đến việc chỉ khoảng 10% trong số 7 tỷ tấn rác thải nhựa được tạo ra trên toàn cầu được tái chế.

Xe tự hành

Trong xe tự lái , phân đoạn trường hợp giúp xác định và track Người đi bộ, phương tiện, biển báo giao thông và các yếu tố đường bộ khác ở cấp độ pixel. Sự hiểu biết chính xác về môi trường này rất quan trọng cho các quyết định điều hướng và an toàn. YOLO11 Hiệu suất thời gian thực của nó làm cho nó trở nên lý tưởng cho các ứng dụng nhạy cảm về thời gian.

Chẩn đoán Hình ảnh Y tế

Phân vùng thể hiện có thể xác định và khoanh vùng các khối u, cơ quan hoặc cấu trúc tế bào trong ảnh chụp y tế. Khả năng phân định ranh giới đối tượng một cách chính xác của YOLO11 khiến nó trở nên giá trị cho chẩn đoán y tế và lập kế hoạch điều trị.

Giám sát công trường xây dựng

Tại các công trường xây dựng, phân đoạn trường hợp có thể track máy móc hạng nặng, công nhân và vật liệu. Điều này giúp đảm bảo an toàn bằng cách giám sát vị trí thiết bị và phát hiện khi công nhân vào khu vực nguy hiểm, đồng thời tối ưu hóa quy trình làm việc và phân bổ nguồn lực.

Lưu ý

Nếu có bất kỳ thắc mắc nào, vui lòng đăng câu hỏi của bạn trong Mục Vấn đề của Ultralytics hoặc mục thảo luận được đề cập bên dưới.

Câu hỏi thường gặp

Làm cách nào để thực hiện phân đoạn thể hiện bằng Ultralytics YOLO11?

Để thực hiện phân đoạn thể hiện bằng Ultralytics YOLO11, hãy khởi tạo mô hình YOLO với phiên bản phân đoạn của YOLO11 và xử lý các khung hình video thông qua nó. Dưới đây là một ví dụ mã đơn giản:

import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"

# Video writer
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))
video_writer = cv2.VideoWriter("instance-segmentation.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

# Init InstanceSegmentation
isegment = solutions.InstanceSegmentation(
    show=True,  # display the output
    model="yolo11n-seg.pt",  # model="yolo11n-seg.pt" for object segmentation using YOLO11.
)

# Process video
while cap.isOpened():
    success, im0 = cap.read()
    if not success:
        print("Video frame is empty or processing is complete.")
        break
    results = isegment(im0)
    video_writer.write(results.plot_im)

cap.release()
video_writer.release()
cv2.destroyAllWindows()

Tìm hiểu thêm về phân đoạn thể hiện trong hướng dẫn Ultralytics YOLO11.

Sự khác biệt giữa phân đoạn thể hiện và theo dõi đối tượng trong Ultralytics YOLO11 là gì?

Phân vùng thể hiện xác định và khoanh vùng các đối tượng riêng lẻ trong một hình ảnh, gán cho mỗi đối tượng một nhãn và mặt nạ duy nhất. Theo dõi đối tượng mở rộng điều này bằng cách gán ID nhất quán cho các đối tượng trên các khung hình video, tạo điều kiện theo dõi liên tục các đối tượng giống nhau theo thời gian. Khi kết hợp, như trong triển khai của YOLO11, bạn có được khả năng mạnh mẽ để phân tích chuyển động và hành vi của đối tượng trong video trong khi vẫn duy trì thông tin ranh giới chính xác.

Tại sao tôi nên sử dụng Ultralytics YOLO11 để phân đoạn thể hiện và theo dõi thay vì các mô hình khác như Mask R-CNN hoặc Faster R-CNN?

Ultralytics YOLO11 cung cấp hiệu suất thời gian thực, độ chính xác vượt trội và dễ sử dụng so với các mô hình khác như Mask R-CNN hoặc Faster R-CNN. YOLO11 xử lý hình ảnh trong một lần duy nhất (phát hiện một giai đoạn), giúp nó nhanh hơn đáng kể trong khi vẫn duy trì độ chính xác cao. Nó cũng cung cấp khả năng tích hợp liền mạch với Ultralytics HUB, cho phép người dùng quản lý các mô hình, bộ dữ liệu và quy trình đào tạo một cách hiệu quả. Đối với các ứng dụng đòi hỏi cả tốc độ và độ chính xác, YOLO11 cung cấp sự cân bằng tối ưu.

Ultralytics có cung cấp bộ dữ liệu nào phù hợp để huấn luyện các mô hình YOLO11 cho phân đoạn và theo dõi đối tượng không?

Đúng, Ultralytics cung cấp một số tập dữ liệu phù hợp cho việc đào tạo YOLO11 Các mô hình phân đoạn mẫu, bao gồm COCO -Seg , COCO8 -Seg (một tập con nhỏ hơn để kiểm tra nhanh), Package-SegCrack-Seg . Các tập dữ liệu này đi kèm với các chú thích cấp pixel cần thiết cho các tác vụ phân đoạn mẫu. Đối với các ứng dụng chuyên biệt hơn, bạn cũng có thể tạo các tập dữ liệu tùy chỉnh theo Ultralytics định dạng. Thông tin đầy đủ về tập dữ liệu và hướng dẫn sử dụng có thể được tìm thấy trong tài liệu Tập dữ liệu Ultralytics .



📅 Đã tạo 1 năm trước ✏️ Cập nhật 7 tháng trước
glenn-jocherRizwanMunawarleonnilUltralyticsAssistantMatthewNoyceIvorZhu331

Bình luận