7가지 비전 작업
출력 행을 분류, 탐지, 인스턴스 분할, 시맨틱 분할, 깊이 추정, 포즈 또는 OBB에 연결하고, 시작할 YOLO26 가중치를 선택합니다.
작업 선택은 학습 전에 내리는 결정 중 비용이 가장 큽니다. 박스로 충분한데 분할을 선택하면 라벨링 비용이 늘어나고, 드론에서 본 선박에 직립 박스를 사용하면 박스 대부분이 물을 포함하게 됩니다. Ultralytics YOLO는 하나의 API로 7가지 작업을 지원하므로, 도구가 아니라 필요한 출력에 따라 선택하면 됩니다.
실습형
한눈에 보는 7가지 작업#

출력 열을 기준으로 표를 살펴보세요. 명세의 출력 행이 이에 맞아야 합니다.
| 작업 | 출력 | 답하는 질문 | YOLO26 가중치 |
|---|---|---|---|
| 분류 | 이미지당 라벨 하나와 확률 | “이 이미지는 무엇인가요?” | yolo26n-cls.pt |
| 탐지 | 객체별 클래스, 박스, 신뢰도 | “무엇이 어디에 있나요?” | yolo26n.pt |
| 인스턴스 분할 | 객체별 클래스 및 픽셀 마스크 | "각 객체의 정확한 형태는 무엇인가요?" | yolo26n-seg.pt |
| 인스턴스 분할 | 모든 픽셀에 하나의 클래스 지정 | "각 픽셀은 어떤 종류의 영역인가요?" | yolo26n-sem.pt |
| 깊이 추정 | 모든 픽셀의 거리를 미터 단위로 표시 | "각 픽셀은 얼마나 멀리 있나요?" | yolo26n-depth.pt |
| 자세 추정 | 사람 또는 객체별 박스와 키포인트 | "신체는 어떤 자세를 취하고 있나요?" | yolo26n-pose.pt |
| 회전 경계 상자 | 객체별 회전 박스 | "무엇이 어디에 있고, 각도는 얼마인가요?" | yolo26n-obb.pt |
두 쌍의 개념이 자주 혼동됩니다. 인스턴스 분할과 시맨틱 분할: 인스턴스 분할은 각 객체를 구분합니다(자동차 3대, 마스크 3개). 시맨틱 분할은 클래스만 기준으로 픽셀에 레이블을 지정합니다("자동차" 영역 하나, 개수 구분 없음). 검출과 OBB: 둘 다 객체별 박스 하나를 반환하지만, OBB는 객체의 방향에 맞춰 회전합니다. 따라서 하향식 이미지에서 객체가 비스듬히 놓인 경우 중요합니다.
하나의 API, 일곱 가지 출력#
작업을 전환한다고 도구까지 바꿀 필요는 없습니다. 가중치 파일에 따라 반환되는 값이 결정되며, Results 객체는 해당하는 속성을 채웁니다:
from ultralytics import YOLO
image = "https://ultralytics.com/images/bus.jpg"
outputs = ["probs", "boxes", "masks", "semantic_mask", "depth", "keypoints", "obb"]
for suffix in ["-cls", "", "-seg", "-sem", "-depth", "-pose", "-obb"]:
weights = f"yolo26n{suffix}.pt"
model = YOLO(weights)
result = model(image, verbose=False)[0]
filled = [name for name in outputs if getattr(result, name) is not None]
print(f"{weights:18} task={model.task:9} -> {', '.join(filled)}")yolo26n-cls.pt task=classify -> probs
yolo26n.pt task=detect -> boxes
yolo26n-seg.pt task=segment -> boxes, masks
yolo26n-sem.pt task=semantic -> semantic_mask
yolo26n-depth.pt task=depth -> depth
yolo26n-pose.pt task=pose -> boxes, keypoints
yolo26n-obb.pt task=obb -> obb오른쪽 열을 살펴보세요. 분할과 자세 추정도 박스를 반환합니다. 검출에 한 가지가 더해진 작업이기 때문입니다. 시맨틱 분할과 깊이 추정은 객체별 출력을 전혀 반환하지 않고, 대신 모든 픽셀을 설명합니다. 후속 코드에서는 이 속성 중 하나만 읽으므로, 사양의 출력 항목에 해당 속성의 이름을 명시해야 합니다.
실제 상황에서 선택하기#
예측 하나가 무엇을 설명해야 하는지부터 정한 다음, 의사결정 항목에 답하는 작업 중 가장 비용이 낮은 작업을 선택하세요:
- 이미지 전체에 대한 레이블 하나 → 분류.
- 객체를 구분할 필요 없이 모든 픽셀의 클래스가 필요함 → 시맨틱 분할.
- 모든 픽셀의 거리가 필요함 → 깊이 추정.
- 각 객체에 대한 정보:
- 객체의 위치를 알아내 개수를 세거나, 위치를 파악하거나, 필터링하려는 경우 → 검출(프레임 간 동일한 객체를 식별하려면 추적을 추가합니다);
- 객체의 정확한 형태, 경계 또는 면적이 필요한 경우 → 인스턴스 분할;
- 객체의 자세가 필요한 경우 → 자세 추정;
- 하향식 이미지에서 객체의 회전 방향이 필요한 경우 → OBB.
두 작업 모두 적합하다면 레이블을 지정하고 실행하는 데 비용이 더 적게 드는 작업을 선택하세요. 대부분의 제품에서 기본 선택은 검출입니다. 박스는 빠르게 그리고 검토할 수 있으며, 추적을 추가하면 다음 고속도로 장면처럼 계수, 구역 알림, 교통량 분석에도 활용할 수 있습니다:

깊이: "얼마나 먼가요?"에 답하는 작업#
깊이 추정은 이미지와 크기가 같은 맵을 반환하며, 픽셀마다 거리를 미터 단위로 표시합니다. 클래스나 박스는 없습니다. 거리가 의사결정을 좌우하는 경우에 사용하세요. 예를 들어 장애물을 피하는 로봇, 가까운 물체를 감지하면 속도를 줄이는 차량, 더미의 대략적인 부피 추정 등이 있습니다.
from ultralytics import YOLO
model = YOLO("yolo26n-depth.pt")
result = model("https://ultralytics.com/images/bus.jpg", verbose=False)[0]
depth = result.depth.data # meters, one value per pixel
print(f"depth map {tuple(depth.shape)}, nearest {float(depth.min()):.1f} m, farthest {float(depth.max()):.1f} m")depth map (1080, 810), nearest 2.0 m, farthest 14.9 m단일 카메라는 원근감과 객체 크기 같은 학습된 단서를 바탕으로 깊이를 추정하므로, 안전이 중요한 거리에 사용하기 전에 자체 장면에서 오차를 측정하세요. 깊이 추정은 검출과 함께 사용하기 좋습니다. 객체를 검출한 다음 해당 박스 안의 깊이 맵 값을 읽으면 됩니다.
주의할 점#
| 혼동 사례 | 증상 | 더 나은 선택 |
|---|---|---|
| 박스로 충분한데 분할을 사용함 | 후속 코드에서 마스크를 읽지 않음 | 검출 |
| 하향식 이미지에서 수직 박스 사용 | 박스 대부분이 배경을 포함하고, 인접 객체끼리 서로 억제됨 | OBB |
| 여러 객체가 있는 장면에 분류 사용 | 레이블이 작은 객체 하나에 따라 달라짐 | 검출과 규칙 |
| 개수를 세야 하는데 시맨틱 분할 사용 | 서로 맞닿은 객체가 하나의 영역으로 합쳐짐 | 인스턴스 분할 |
| 박스 크기를 거리의 대용값으로 사용 | 객체 크기가 달라지면 규칙이 작동하지 않음 | 깊이 추정 또는 검출과 깊이 추정 조합 |
| 존재 여부를 확인하기 위해 자세 추정 사용 | 키포인트를 전혀 읽지 않음 | 검출 |
더 풍부한 출력은 모든 단계에서 비용이 더 많이 듭니다. 마스크와 키포인트는 그리는 데 시간이 더 걸리고, 검토 시간도 더 길며, 더 엄격한 라벨링 규칙이 필요합니다. 의사결정 규칙에 답하는 가장 저렴한 태스크부터 시작하고, 실제 사용자가 추가 세부 정보를 필요로 할 때만 확장합니다.
정답 보기
지게차 사양의 답은 yolo26n.pt을 사용하고 result.boxes에서 값을 읽는 검출입니다.
의사결정 항목에서는 코드가 지게차와 사람 사이의 거리를 확인할 수 있도록 이들의 위치를 알아야 합니다. 박스로 충분히 파악할 수 있습니다. 인스턴스 분할을 사용해도 알림은 달라지지 않으므로 레이블링 비용만 늘어납니다. 박스의 아래쪽 가장자리만으로도 지면 위치를 알 수 있기 때문입니다. 자세는 의사결정에 포함되지 않으므로 자세 추정은 필요하지 않습니다. 깊이 추정은 이미지상의 위치를 미터 단위로 변환하는 데 도움이 될 수 있지만, 보정된 고정 카메라를 사용하면 깊이 추정 없이도 바닥 평면을 매핑할 수 있습니다. OBB는 카메라가 수직으로 아래를 향하고 지게차가 큰 대각선 각도로 나타나는 경우에만 테스트할 가치가 있습니다.