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 thể hiện với theo dõi đối tượng: Mỗi трек được biểu thị bằng một màu riêng biệt, tạo điều kiện 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ể Ultralytics Ultralytics 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ại Mặc định Mô tả
model str None Đường dẫn đến Tệp Mô hình Ultralytics YOLO.
region list '[(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ại Mặc định Mô tả
tracker str 'botsort.yaml' Chỉ định thuật toán theo dõi để sử dụng, ví dụ: bytetrack.yaml hoặc botsort.yaml.
conf float 0.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ả.
iou float 0.5 Đặt ngưỡng Intersection over Union (IoU) để lọc các phát hiện trùng lặp.
classes list None Lọ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.
verbose bool True Kiể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.
device str None Chỉ đị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ại Mặc định Mô tả
show bool False Nế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_width None or int None Chỉ đị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_conf bool True Hiể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_labels bool True Hiể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ể phân đoạn chất 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ý chất thải hiệu quả hơn. Điều này đặc biệt có giá trị khi chỉ có khoảng 10% trong số 7 tỷ tấn chất 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 thể hiện giúp xác định và theo dõi 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 là rất quan trọng đối với các quyết định điều hướng và an toàn. Hiệu suất thời gian thực của YOLO11 khiến nó trở nên lý tưởng cho các ứng dụng nhạy cảm về thời gian này.

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 thể hiện có thể theo dõi 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 theo dõi vị trí thiết bị và phát hiện khi công nhân đi vào các 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?

Có, Ultralytics cung cấp một số bộ dữ liệu phù hợp để huấn luyện các mô hình YOLO11 cho phân đoạn thể hiện, bao gồm COCO-Seg, COCO8-Seg (một tập hợp con nhỏ hơn để kiểm tra nhanh), Package-SegCrack-Seg. Các bộ 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 thể hiện. Đối với các ứng dụng chuyên biệt hơn, bạn cũng có thể tạo các bộ dữ liệu tùy chỉnh theo định dạng Ultralytics. Thông tin bộ dữ liệu đầy đủ và hướng dẫn sử dụng có thể được tìm thấy trong tài liệu Bộ dữ liệu Ultralytics.



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

Bình luận