Ultralytics YOLO11 🚀을 사용한 인스턴스 세분화 및 추적
인스턴스 세분화란 무엇인가요?
인스턴스 분할 은 픽셀 수준에서 이미지의 개별 개체를 식별하고 윤곽을 그리는 컴퓨터 비전 작업입니다. 픽셀을 범주별로만 분류하는 시맨틱 분할과 달리 인스턴스 분할은 각 객체 인스턴스에 고유한 레이블을 지정하고 정확하게 묘사하므로 의료 영상, 자율 주행 및 산업 자동화와 같이 상세한 공간 이해가 필요한 애플리케이션에 매우 중요합니다.
Ultralytics YOLO11 은 강력한 인스턴스 세분화 기능을 제공하여 YOLO 모델의 속도와 효율성을 유지하면서 정확한 객체 경계를 감지할 수 있습니다.
Ultralytics 패키지에서 사용할 수 있는 인스턴스 세분화 추적에는 두 가지 유형이 있습니다:
-
클래스 객체를 사용한 인스턴스 세분화: 각 클래스 객체에는 시각적으로 명확하게 구분할 수 있도록 고유한 색상이 할당됩니다.
-
오브젝트 트랙을 사용한 인스턴스 세분화: 모든 트랙은 고유한 색상으로 표시되어 비디오 프레임 전반에서 쉽게 식별하고 추적할 수 있습니다.
Watch: 오브젝트 추적을 사용한 인스턴스 세분화 Ultralytics YOLO11
샘플
인스턴스 세분화 | 인스턴스 세분화 + 오브젝트 추적 |
---|---|
![]() |
![]() |
Ultralytics 인스턴스 세분화 😍 | Ultralytics 오브젝트 추적을 통한 인스턴스 세분화 🔥. |
Ultralytics YOLO 사용한 인스턴스 세분화
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 를 클릭하면 이미지 크기에 따라 선 너비가 자동으로 조정됩니다. 선명도를 위한 시각적 사용자 지정 기능을 제공합니다. |
인스턴스 세분화의 애플리케이션
YOLO11 사용한 인스턴스 세분화는 다양한 산업 분야에 걸쳐 수많은 실제 적용 사례를 보유하고 있습니다:
폐기물 관리 및 재활용
YOLO11 폐기물 관리 시설에서 다양한 유형의 재료를 식별하고 분류하는 데 사용할 수 있습니다. 이 모델은 플라스틱 폐기물, 판지, 금속 및 기타 재활용품을 매우 정밀하게 분류할 수 있어 자동화된 분류 시스템이 폐기물을 보다 효율적으로 처리할 수 있게 해줍니다. 이는 전 세계적으로 발생하는 70억 톤의 플라스틱 폐기물 중 약 10%만이 재활용된다는 점을 고려할 때 특히 가치가 높습니다.
자율 주행 차량
자율주행차에서 인스턴스 세분화는 픽셀 수준에서 보행자, 차량, 교통 표지판 및 기타 도로 요소를 식별하고 추적하는 데 도움이 됩니다. 환경에 대한 이러한 정확한 이해는 내비게이션 및 안전 결정에 매우 중요합니다. YOLO11 실시간 성능은 이러한 시간에 민감한 애플리케이션에 이상적입니다.
의료 영상
인스턴스 분할은 의료 스캔에서 종양, 장기 또는 세포 구조를 식별하고 윤곽을 그릴 수 있습니다. 물체 경계를 정밀하게 묘사하는 YOLO11 기능은 의료 진단 및 치료 계획에 유용합니다.
건설 현장 모니터링
건설 현장에서는 인스턴스 세분화를 통해 중장비, 작업자, 자재를 추적할 수 있습니다. 이를 통해 장비 위치를 모니터링하고 작업자가 위험 구역에 진입하는 시점을 감지하여 안전을 보장하는 동시에 워크플로와 리소스 할당을 최적화할 수 있습니다.
참고
문의 사항이 있으시면 Ultralytics 이슈 섹션 또는 아래에 언급된 토론 섹션에 자유롭게 질문을 게시해 주세요.
자주 묻는 질문
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 구현에서와 같이 두 기능을 결합하면 정확한 경계 정보를 유지하면서 동영상에서 객체의 움직임과 행동을 분석할 수 있는 강력한 기능을 사용할 수 있습니다.
예를 들어 세분화 및 추적에 Mask R-CNN 또는 Faster R-CNN과 같은 다른 모델보다 Ultralytics YOLO11 을 사용해야 하는 이유는 무엇인가요?
Ultralytics YOLO11 실시간 성능, 뛰어난 정확도, 사용 편의성을 마스크 R-CNN 또는 Faster R-CNN과 같은 다른 모델에 비해 제공합니다. YOLO11 단일 패스(1단계 감지)로 이미지를 처리하므로 높은 정밀도를 유지하면서 훨씬 더 빠르게 처리할 수 있습니다. 또한, 사용자가 모델, 데이터 세트, 훈련 파이프라인을 효율적으로 관리할 수 있도록 Ultralytics HUB와의 원활한 통합을 제공합니다. 속도와 정확성이 모두 필요한 애플리케이션의 경우, YOLO11 최적의 균형을 제공합니다.
Ultralytics 에서 제공하는 데이터 세트 중 인스턴스 세분화 및 추적을 위한 YOLO11 모델 학습에 적합한 것이 있나요?
예, Ultralytics 인스턴스 세분화를 위한 YOLO11 모델 훈련에 적합한 여러 데이터 세트를 제공합니다. 여기에는 COCO-Seg, COCO8-Seg (빠른 테스트를 위한 더 작은 하위 집합), Package-Seg 및 Crack-Seg가 포함됩니다. 이러한 데이터 세트에는 인스턴스 세분화 작업에 필요한 픽셀 수준 주석이 함께 제공됩니다. 보다 전문적인 애플리케이션의 경우, Ultralytics 형식에 따라 사용자 정의 데이터 세트를 만들 수도 있습니다. 전체 데이터 세트 정보 및 사용 지침은 Ultralytics 데이터 세트 설명서에서 확인할 수 있습니다.