콘텐츠로 건너뛰기

Ultralytics YOLO11 🚀을 사용한 인스턴스 분할 및 추적

인스턴스 세분화란 무엇입니까?

인스턴스 분할은 이미지 내 개별 객체를 픽셀 수준에서 식별하고 윤곽을 나타내는 컴퓨터 비전 작업입니다. 단순히 범주별로 픽셀을 분류하는 시맨틱 분할과 달리, 인스턴스 분할은 각 객체 인스턴스에 고유한 레이블을 지정하고 정확하게 묘사하므로 의료 영상, 자율 주행, 산업 자동화와 같이 세부적인 공간 이해가 필요한 애플리케이션에 매우 중요합니다.

Ultralytics YOLO11은(는) YOLO 모델의 속도와 효율성을 유지하면서 정확한 객체 경계 감지를 가능하게 하는 강력한 인스턴스 분할 기능을 제공합니다.

Ultralytics 패키지에서 사용할 수 있는 인스턴스 분할 추적에는 두 가지 유형이 있습니다.

  • 클래스 객체를 이용한 인스턴스 분할: 각 클래스 객체는 명확한 시각적 구분을 위해 고유한 색상이 할당됩니다.

  • 객체 트랙을 사용한 인스턴스 분할: 모든 트랙은 고유한 색상으로 표시되어 비디오 프레임에서 쉽게 식별하고 추적할 수 있습니다.



참고: Ultralytics YOLO11을 사용한 객체 추적을 사용한 인스턴스 분할

샘플

인스턴스 분할 인스턴스 분할 + 객체 추적
Ultralytics 인스턴스 분할 객체 추적을 사용한 Ultralytics 인스턴스 분할
Ultralytics 인스턴스 분할 😍 객체 추적을 사용한 Ultralytics 인스턴스 분할 🔥

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 인수

다음은 테이블에 InstanceSegmentation 인수입니다.

인수 유형 기본값 설명
model str None Ultralytics YOLO 모델 파일의 경로입니다.
region list '[(20, 400), (1260, 400)]' 계수 영역을 정의하는 점 목록입니다.

활용할 수도 있습니다. track 내의 인수들 InstanceSegmentation 솔루션:

인수 유형 기본값 설명
tracker str 'botsort.yaml' 사용할 추적 알고리즘을 지정합니다 (예: bytetrack.yaml 또는 botsort.yaml.
conf float 0.3 검출에 대한 신뢰도 임계값을 설정합니다. 값이 낮을수록 더 많은 객체를 추적할 수 있지만 오탐지가 포함될 수 있습니다.
iou float 0.5 겹치는 검출을 필터링하기 위한 IoU (Intersection over Union) 임계값을 설정합니다.
classes list None 클래스 인덱스별로 결과를 필터링합니다. 예를 들어, classes=[0, 2, 3] 지정된 클래스만 추적합니다.
verbose bool True 추적 결과 표시를 제어하여 추적된 객체의 시각적 출력을 제공합니다.
device str None 추론을 위한 장치를 지정합니다 (예: cpu, cuda:0 또는 0). 사용자는 모델 실행을 위해 CPU, 특정 GPU 또는 기타 컴퓨팅 장치 중에서 선택할 수 있습니다.

또한 다음과 같은 시각화 인수를 사용할 수 있습니다:

인수 유형 기본값 설명
show bool False 만약 True, 어노테이션이 적용된 이미지나 비디오를 창에 표시합니다. 개발 또는 테스트 중 즉각적인 시각적 피드백에 유용합니다.
line_width None or int None 경계 상자의 선 너비를 지정합니다. 만약 None, 선 너비는 이미지 크기에 따라 자동으로 조정됩니다. 명확성을 위해 시각적 사용자 정의를 제공합니다.
show_conf bool True 레이블과 함께 각 감지에 대한 신뢰도 점수를 표시합니다. 각 감지에 대한 모델의 확신에 대한 통찰력을 제공합니다.
show_labels bool True 시각적 출력에서 각 감지에 대한 레이블을 표시합니다. 감지된 객체에 대한 즉각적인 이해를 제공합니다.

인스턴스 분할의 응용

YOLO11을 사용한 인스턴스 분할은 다양한 산업 분야에서 수많은 실제 응용 프로그램을 가지고 있습니다.

폐기물 관리 및 재활용

YOLO11은 폐기물 처리 시설에서 다양한 유형의 물질을 식별하고 분류하는 데 사용할 수 있습니다. 이 모델은 플라스틱 폐기물, 판지, 금속 및 기타 재활용품을 높은 정밀도로 분할하여 자동화된 분류 시스템이 폐기물을 보다 효율적으로 처리할 수 있도록 합니다. 전 세계적으로 발생하는 70억 톤의 플라스틱 폐기물 중 약 10%만이 재활용된다는 점을 고려할 때 특히 유용합니다.

자율 주행 차량

자율 주행 자동차에서 인스턴스 분할은 보행자, 차량, 교통 표지판 및 기타 도로 요소를 픽셀 수준에서 식별하고 추적하는 데 도움이 됩니다. 이러한 환경에 대한 정확한 이해는 내비게이션 및 안전 결정에 매우 중요합니다. YOLO11의 실시간 성능은 이러한 시간에 민감한 애플리케이션에 이상적입니다.

의료 영상

인스턴스 분할은 의료 스캔에서 종양, 장기 또는 세포 구조를 식별하고 윤곽을 그릴 수 있습니다. YOLO11의 객체 경계를 정확하게 묘사하는 능력은 의료 진단 및 치료 계획에 유용합니다.

건설 현장 모니터링

건설 현장에서 인스턴스 분할은 중장비, 작업자 및 자재를 추적할 수 있습니다. 이는 장비 위치를 모니터링하고 작업자가 위험 지역에 들어갈 때를 감지하여 안전을 보장하는 동시에 워크플로 및 리소스 할당을 최적화하는 데 도움이 됩니다.

참고

문의 사항이 있으시면 언제든지 Ultralytics Issue Section 또는 아래에 언급된 토론 섹션에 질문을 게시해 주십시오.

FAQ

Ultralytics YOLO11을 사용하여 인스턴스 분할을 어떻게 수행합니까?

Ultralytics YOLO11을 사용하여 인스턴스 분할을 수행하려면 YOLO 모델을 YOLO11의 분할 버전으로 초기화하고 비디오 프레임을 처리합니다. 다음은 단순화된 코드 예제입니다.

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()

Ultralytics YOLO11 가이드에서 인스턴스 분할에 대해 자세히 알아보세요.

Ultralytics YOLO11에서 인스턴스 분할과 객체 추적의 차이점은 무엇입니까?

인스턴스 분할은 이미지 내의 개별 객체를 식별하고 윤곽을 표시하여 각 객체에 고유한 레이블과 마스크를 제공합니다. 객체 추적은 비디오 프레임에서 객체에 일관된 ID를 할당하여 이를 확장하여 시간이 지남에 따라 동일한 객체를 지속적으로 추적할 수 있도록 합니다. YOLO11의 구현에서와 같이 결합하면 정확한 경계 정보를 유지하면서 비디오에서 객체 이동 및 동작을 분석하는 강력한 기능을 얻을 수 있습니다.

인스턴스 분할 및 추적에 Ultralytics YOLO11을 Mask R-CNN 또는 Faster R-CNN과 같은 다른 모델보다 사용해야 하는 이유는 무엇인가요?

Ultralytics YOLO11은 Mask R-CNN 또는 Faster R-CNN과 같은 다른 모델에 비해 실시간 성능, 뛰어난 정확도 및 사용 편의성을 제공합니다. YOLO11은 이미지를 단일 패스(단일 단계 탐지)로 처리하므로 높은 정밀도를 유지하면서 훨씬 빠릅니다. 또한 사용자가 모델, 데이터 세트 및 훈련 파이프라인을 효율적으로 관리할 수 있도록 Ultralytics HUB와 원활하게 통합됩니다. 속도와 정확도가 모두 필요한 애플리케이션의 경우 YOLO11은 최적의 균형을 제공합니다.

Ultralytics에서 인스턴스 분할 및 추적을 위한 YOLO11 모델 학습에 적합한 데이터 세트를 제공합니까?

예, Ultralytics는 COCO-Seg, COCO8-Seg (빠른 테스트를 위한 더 작은 하위 집합), Package-SegCrack-Seg를 포함하여 인스턴스 분할을 위한 YOLO11 모델 학습에 적합한 여러 데이터 세트를 제공합니다. 이러한 데이터 세트는 인스턴스 분할 작업에 필요한 픽셀 수준 주석과 함께 제공됩니다. 보다 전문화된 애플리케이션의 경우 Ultralytics 형식을 따라 사용자 정의 데이터 세트를 만들 수도 있습니다. 전체 데이터 세트 정보 및 사용 지침은 Ultralytics 데이터 세트 설명서에서 확인할 수 있습니다.



📅 1년 전에 생성됨 ✏️ 4개월 전에 업데이트됨

댓글