Chuyển đến nội dung

Phân đoạn Đối tượng (Instance Segmentation) và Theo dõi (Tracking) sử dụng Ultralytics YOLO26 🚀

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 YOLO26 cung cấp khả năng phân đoạn đối tượng 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 nổi tiếng.

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 đối tượng (Instance Segmentation) với các track đối tượng: Mỗi track đượ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à track trên các khung video.



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

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 YOLO26
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="yolo26n-seg.pt",  # model="yolo26n-seg.pt" for object segmentation using YOLO26.
    # classes=[0, 2],  # segment specific classes, e.g., person and car with the 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 tệp mô hình Ultralytics YOLO.
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.1Đặ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.7Đặt ngưỡng Intersection over Union (IoU) để lọc các detect 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_widthint or NoneNoneChỉ đị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 đoạn đối tượng với YOLO26 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ế

YOLO26 có thể được sử dụng trong các cơ sở quản lý chất thải để nhận diện 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 xem xét rằng chỉ 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 ô tô tự lái, phân đoạn đối tượng giúp nhận diện 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 rất quan trọng cho việc điều hướng và các quyết định an toàn. Hiệu suất thời gian thực của YOLO26 làm cho 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 đoạn đối tượng có thể nhận diện và phác thảo các khối u, cơ quan hoặc cấu trúc tế bào trong các bản quét y tế. Khả năng phân định ranh giới đối tượng một cách chính xác của YOLO26 làm cho nó có 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 đối tượng (instance segmentation) 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à detect khi công nhân đi 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ổ tài nguyên.

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 đối tượng bằng Ultralytics YOLO26?

Để thực hiện phân đoạn đối tượng bằng Ultralytics YOLO26, hãy khởi tạo mô hình YOLO với phiên bản phân đoạn của YOLO26 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="yolo26n-seg.pt",  # model="yolo26n-seg.pt" for object segmentation using YOLO26.
)

# 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 đối tượng trong hướng dẫn Ultralytics YOLO26.

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

Phân đoạn đối tượng (instance segmentation) nhận diện và phác thảo từng đố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 (object tracking) mở rộng điều này bằng cách gán ID nhất quán cho các đối tượng qua các khung hình video, tạo điều kiện theo dõi liên tục cùng một đối tượng theo thời gian. Khi kết hợp, như trong triển khai của YOLO26, bạn sẽ 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, đồng thời duy trì thông tin ranh giới chính xác.

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

Ultralytics YOLO26 mang lại 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. YOLO26 xử lý hình ảnh trong một lần (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 Nền tảng Ultralytics, cho phép người dùng quản lý mô hình, tập dữ liệu và quy trình huấn luyện một cách hiệu quả. Đối với các ứng dụng yêu cầu cả tốc độ và độ chính xác, YOLO26 cung cấp sự cân bằng tối ưu.

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

Có, Ultralytics cung cấp một số tập dữ liệu phù hợp để huấn luyện các mô hình YOLO26 cho phân đoạn đối tượng, 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 đối tượng. Đố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 định dạng của Ultralytics. Thông tin tập dữ liệu đầy đủ và hướng dẫn sử dụng có thể được tìm thấy trong tài liệu Ultralytics Datasets.



📅 Được tạo 2 năm trước ✏️ Cập nhật 7 ngày trước
glenn-jocherRizwanMunawarRizwanMunawarpderrengerleonnilUltralyticsAssistantMatthewNoyceIvorZhu331

Bình luận