Ultralytics YOLO26을 사용한 인스턴스 세그멘테이션 및 트래킹 🚀
인스턴스 세분화란 무엇입니까?
인스턴스 분할은 이미지 내 개별 객체를 픽셀 수준에서 식별하고 윤곽을 나타내는 컴퓨터 비전 작업입니다. 단순히 범주별로 픽셀을 분류하는 시맨틱 분할과 달리, 인스턴스 분할은 각 객체 인스턴스에 고유한 레이블을 지정하고 정확하게 묘사하므로 의료 영상, 자율 주행, 산업 자동화와 같이 세부적인 공간 이해가 필요한 애플리케이션에 매우 중요합니다.
Ultralytics YOLO26은 YOLO 모델의 속도와 효율성을 유지하면서 정밀한 객체 경계 detect를 가능하게 하는 강력한 인스턴스 분할 기능을 제공합니다.
Ultralytics 패키지에서 사용할 수 있는 인스턴스 분할 추적에는 두 가지 유형이 있습니다.
클래스 객체를 이용한 인스턴스 분할: 각 클래스 객체는 명확한 시각적 구분을 위해 고유한 색상이 할당됩니다.
객체 트랙을 사용한 인스턴스 세그멘테이션: 모든 트랙은 고유한 색상으로 표현되어 비디오 프레임 전반에 걸쳐 손쉬운 식별 및 트래킹을 용이하게 합니다.
참고: Ultralytics YOLO26을 활용한 객체 track 기반 인스턴스 분할
샘플
| 인스턴스 분할 | 인스턴스 분할 + 객체 추적 |
|---|---|
![]() | |
| Ultralytics 인스턴스 분할 😍 | 객체 추적을 사용한 Ultralytics 인스턴스 분할 🔥 |
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 인수
다음은 테이블에 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.1 | 검출에 대한 신뢰도 임계값을 설정합니다. 값이 낮을수록 더 많은 객체를 추적할 수 있지만 오탐지가 포함될 수 있습니다. |
iou | float | 0.7 | 중복되는 detect를 필터링하기 위한 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 | int or None | None | 경계 상자의 선 너비를 지정합니다. 만약 None, 선 너비는 이미지 크기에 따라 자동으로 조정됩니다. 명확성을 위해 시각적 사용자 정의를 제공합니다. |
show_conf | bool | True | 레이블과 함께 각 감지에 대한 신뢰도 점수를 표시합니다. 각 감지에 대한 모델의 확신에 대한 통찰력을 제공합니다. |
show_labels | bool | True | 시각적 출력에서 각 감지에 대한 레이블을 표시합니다. 감지된 객체에 대한 즉각적인 이해를 제공합니다. |
인스턴스 분할의 응용
YOLO26을 활용한 인스턴스 분할은 다양한 산업 분야에서 수많은 실제 적용 사례를 가지고 있습니다.
폐기물 관리 및 재활용
YOLO26은 폐기물 관리 시설에서 다양한 유형의 재료를 식별하고 분류하는 데 사용될 수 있습니다. 이 모델은 플라스틱 폐기물, 판지, 금속 및 기타 재활용품을 높은 정밀도로 segment하여 자동 분류 시스템이 폐기물을 보다 효율적으로 처리할 수 있도록 합니다. 이는 전 세계적으로 발생하는 70억 톤의 플라스틱 폐기물 중 약 10%만이 재활용된다는 점을 고려할 때 특히 중요합니다.
자율 주행 차량
자율 주행 자동차에서 인스턴스 분할은 보행자, 차량, 교통 표지판 및 기타 도로 요소를 픽셀 수준에서 식별하고 track하는 데 도움을 줍니다. 환경에 대한 이러한 정밀한 이해는 내비게이션 및 안전 결정에 매우 중요합니다. YOLO26의 실시간 성능은 이러한 시간에 민감한 애플리케이션에 이상적입니다.
의료 영상
인스턴스 분할은 의료 스캔에서 종양, 장기 또는 세포 구조를 식별하고 윤곽을 그릴 수 있습니다. YOLO26의 객체 경계를 정밀하게 구분하는 능력은 의료 진단 및 치료 계획에 유용합니다.
건설 현장 모니터링
건설 현장에서 인스턴스 세그멘테이션은 중장비, 작업자 및 자재를 트래킹할 수 있습니다. 이는 장비 위치를 모니터링하고 작업자가 위험 구역에 진입하는 시점을 감지하여 안전을 확보하는 데 도움이 되며, 동시에 작업 흐름 및 자원 할당을 최적화합니다.
참고
문의 사항이 있으시면 언제든지 Ultralytics Issue Section 또는 아래에 언급된 토론 섹션에 질문을 게시해 주십시오.
FAQ
Ultralytics YOLO26을 사용하여 인스턴스 세그멘테이션을 어떻게 수행하나요?
Ultralytics YOLO26을 사용하여 인스턴스 분할을 수행하려면, YOLO26의 segmentation 버전을 사용하여 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("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()
Ultralytics YOLO26 가이드에서 인스턴스 분할에 대해 자세히 알아보세요.
Ultralytics YOLO26에서 인스턴스 세그멘테이션과 객체 트래킹의 차이점은 무엇인가요?
인스턴스 세그멘테이션은 이미지 내에서 개별 객체를 식별하고 윤곽을 잡아 각 객체에 고유한 레이블과 마스크를 부여합니다. 객체 트래킹은 비디오 프레임 전반에 걸쳐 객체에 일관된 ID를 할당하여 이를 확장하며, 시간이 지남에 따라 동일한 객체를 지속적으로 트래킹할 수 있도록 합니다. YOLO26의 구현에서처럼 이 둘을 결합하면 정밀한 경계 정보를 유지하면서 비디오 내 객체 움직임과 행동을 분석하는 강력한 기능을 얻을 수 있습니다.
Mask R-CNN 또는 Faster R-CNN과 같은 다른 모델보다 Ultralytics YOLO26을 인스턴스 세그멘테이션 및 트래킹에 사용해야 하는 이유는 무엇인가요?
Ultralytics YOLO26은 Mask R-CNN 또는 Faster R-CNN과 같은 다른 모델에 비해 실시간 성능, 뛰어난 정확도 및 사용 편의성을 제공합니다. YOLO26은 단일 패스(원스테이지 detect)로 이미지를 처리하여 높은 정밀도를 유지하면서도 훨씬 빠릅니다. 또한 Ultralytics Platform과 원활하게 통합되어 사용자가 모델, 데이터셋 및 훈련 파이프라인을 효율적으로 관리할 수 있습니다. 속도와 정확도 모두를 요구하는 애플리케이션에 YOLO26은 최적의 균형을 제공합니다.
Ultralytics에서 인스턴스 분할 및 track을 위한 YOLO26 모델 훈련에 적합한 데이터셋을 제공하나요?
네, Ultralytics는 인스턴스 분할을 위한 YOLO26 모델 훈련에 적합한 여러 데이터셋을 제공합니다. 여기에는 COCO-Seg, COCO8-Seg (빠른 테스트를 위한 더 작은 하위 집합), Package-Seg 및 Crack-Seg가 포함됩니다. 이 데이터셋들은 인스턴스 분할 작업에 필요한 픽셀 수준 주석을 포함하고 있습니다. 더 전문적인 애플리케이션의 경우, Ultralytics 형식에 따라 사용자 지정 데이터셋을 생성할 수도 있습니다. 전체 데이터셋 정보 및 사용 지침은 Ultralytics 데이터셋 문서에서 확인할 수 있습니다.
