Skip to content

필사 모드: 컴퓨터 비전 프레임워크 2026 완벽 가이드 - OpenCV 4 · MediaPipe · Detectron2 · YOLO v11 · MMDetection · SAM 2 · Grounding DINO 심층 분석

한국어
0%
정확도 0%
💡 왼쪽 원문을 읽으면서 오른쪽에 따라 써보세요. Tab 키로 힌트를 받을 수 있습니다.
원문 렌더가 준비되기 전까지 텍스트 가이드로 표시합니다.

프롤로그 - 컴퓨터 비전은 "보는 것"이 아니라 "묻는 것"이 되었다

2010년대의 컴퓨터 비전은 분명한 모양이 있었다. SIFT·HOG·Haar로 특징을 뽑고, SVM·랜덤 포레스트로 분류하고, OpenCV가 그 모든 것을 묶었다. 2020년대 초반은 ResNet·EfficientNet·Mask R-CNN의 시대였다 - 데이터셋을 모으고, 모델을 학습시키고, mAP를 끌어올리는 일이 작업의 90%였다.

2026년의 풍경은 다르다. "이 사진에서 빨간 헬멧을 쓴 사람의 자세를 추정해라"라는 한 문장이 Grounding DINO로 박스를 잡고, SAM 2로 마스크를 만들고, MMPose로 키포인트를 뽑는 파이프라인 세 줄로 끝난다. 학습은 거의 하지 않는다. 대신 우리는 "어떤 모델을 어떤 순서로 부를 것인가"를 설계한다.

이 글은 2026년의 컴퓨터 비전 스택을 한 호흡으로 정리한다. OpenCV의 기본기부터 SAM 2와 VLM, DINOv3와 DUSt3R, 그리고 모바일 추론까지 - 어디서 어떤 도구를 쓸지, 그 결정의 기준을 한 페이지에 담았다.

1장 - 2026년 CV 스택의 지도

도구 하나하나에 들어가기 전에, 전체 지도부터 그려보자. 2026년의 컴퓨터 비전은 다섯 개의 층(layer)으로 나뉜다.

[Layer 5] Vision Language Model (VLM)

GPT-4o, Claude 3.5 Sonnet, Gemini 2.0 Flash

Qwen2-VL, InternVL 2.5, Pixtral 12B

|

[Layer 4] Open-Vocabulary Foundation

Grounding DINO 1.6, Florence-2, YOLO-World

SAM 2, DINOv3, CLIP, SigLIP

|

[Layer 3] Task-Specific Model

YOLO v11, Detectron3, MMDetection

MMPose, DWPose, ByteTrack, Depth Anything v3

|

[Layer 2] Inference Runtime

ONNX Runtime, TensorRT, OpenVINO

CoreML, TFLite, NCNN, MNN

|

[Layer 1] Image I/O & Primitives

OpenCV 4.10, Pillow-SIMD

FFmpeg, GStreamer

층이 위로 올라갈수록 "지능"이 올라가지만 지연 시간도 따라 올라간다. **VLM은 초당 한두 프레임, YOLO v11은 초당 100프레임 이상.** 이 두 끝을 어떻게 조합하느냐가 2026년 비전 엔지니어의 일이다.

한 줄 요약: **"VLM으로 질문을 받고, YOLO로 답을 그린다."**

2장 - OpenCV 4.10/5.x - 여전히 모든 것의 시작

OpenCV는 죽지 않았다. 오히려 2026년에 더 단단해졌다. 이유는 단순하다 - 이미지를 읽고, 자르고, 색공간을 바꾸고, 비디오 프레임을 디코딩하는 일은 어떤 딥러닝 파이프라인에서도 반드시 필요하다.

2026년 5월 기준 OpenCV 4.10은 LTS이고, 5.0 베타가 활발히 개발 중이다. 변화의 핵심 세 가지를 짚는다.

첫째, **DNN 모듈이 ONNX 추론의 기본기가 되었다.** PyTorch나 TensorFlow를 거치지 않고도 `cv2.dnn.readNetFromONNX()` 한 줄로 YOLO·ResNet·ViT를 부른다.

둘째, **G-API(Graph API)가 안정화되었다.** 입력에서 출력까지를 그래프로 표현하고, OpenCL·CUDA·Vulkan 백엔드 위에서 실행한다. 모바일·임베디드에서 특히 강력하다.

셋째, **CUDA·OpenCL 가속이 빌트인이다.** `cv2.cuda` 모듈로 GPU에서 Gaussian blur·optical flow·이미지 워핑을 직접 돌린다.

1) 이미지 읽기 - 색공간은 BGR(주의)

img = cv2.imread('input.jpg')

img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

2) 리사이즈 - INTER_AREA는 축소에 최적

small = cv2.resize(img_rgb, (640, 640), interpolation=cv2.INTER_AREA)

3) DNN 추론 - ONNX 모델 직접 로드

net = cv2.dnn.readNetFromONNX('yolov11n.onnx')

net.setPreferableBackend(cv2.dnn.DNN_BACKEND_CUDA)

net.setPreferableTarget(cv2.dnn.DNN_TARGET_CUDA)

blob = cv2.dnn.blobFromImage(small, 1/255.0, (640, 640), swapRB=True)

net.setInput(blob)

outputs = net.forward()

기억할 두 가지: **OpenCV는 BGR 색공간을 쓴다**(PIL/PyTorch와 다름), **`imread`는 실패하면 None을 반환한다**(예외를 던지지 않는다). 이 두 가지로 2026년에도 매주 누군가 디버깅 한 시간을 날린다.

3장 - MediaPipe 0.10 / MediaPipe Studio - 모바일 실시간의 새 표준

Google의 MediaPipe는 2024년 후반에 큰 변화가 있었다. 그전까지의 "MediaPipe Solutions API"가 **MediaPipe Tasks API**로 통합되었고, 노코드 학습/배포 도구인 **MediaPipe Studio**가 등장했다.

2026년 기준 MediaPipe는 다음 솔루션을 한 줄짜리 API로 제공한다.

- **Hand Landmarker** - 21개 손 키포인트

- **Pose Landmarker** - 33개 신체 키포인트 + 세그멘테이션 마스크

- **Face Landmarker** - 478개 얼굴 메시 + Blendshape

- **Image Embedder** - MobileNet-V3 임베딩

- **Object Detector** - EfficientDet-Lite

- **Image Segmenter** - Selfie segmentation, hair segmentation

- **Gesture Recognizer** - 미리 학습된 7가지 제스처

- **Image Classifier** - EfficientNet-Lite

from mediapipe.tasks import python

from mediapipe.tasks.python import vision

Pose Landmarker - 한 줄짜리 인스턴스 생성

options = vision.PoseLandmarkerOptions(

base_options=python.BaseOptions(model_asset_path='pose_landmarker.task'),

running_mode=vision.RunningMode.VIDEO,

num_poses=2,

min_pose_detection_confidence=0.5,

)

landmarker = vision.PoseLandmarker.create_from_options(options)

프레임마다 추론

result = landmarker.detect_for_video(mp_image, timestamp_ms)

for pose in result.pose_landmarks:

for lm in pose:

print(lm.x, lm.y, lm.z, lm.visibility)

MediaPipe의 진짜 가치는 **모바일에서 30~60 FPS**가 보장된다는 점이다. 같은 작업을 PyTorch로 짜면 모바일에서는 5 FPS도 어렵다. CPU/GPU/NPU 자동 디스패치, TFLite 경량화, XNNPACK 백엔드까지 묶여 있는 결과다.

한계도 분명하다 - 미리 정의된 작업이 아니면 쓸 수 없고, 학습을 직접 하려면 MediaPipe Model Maker로 우회해야 한다. "정해진 일을 빠르게"가 MediaPipe의 자리다.

4장 - Detectron2 / Detectron3 - 메타의 정통 검출 툴킷

Meta AI Research의 Detectron2는 2019년 출시 이후 학계의 사실상 표준이었다. 2025년 말 **Detectron3**가 베타로 나왔고, 2026년 현재 두 가지가 공존한다.

차이를 정리하면 다음과 같다.

| 항목 | Detectron2 | Detectron3 |

| --- | --- | --- |

| 기본 백본 | ResNet, ViT | ConvNeXt v2, DINOv3, SAM2 인코더 |

| 검출 헤드 | Mask R-CNN, Cascade R-CNN | Mask R-CNN, Mask2Former, ViTDet |

| 학습 프레임워크 | PyTorch 1.x/2.x | PyTorch 2.5+, torch.compile 기본 |

| Config 시스템 | YACS (yaml) | LazyConfig (pythonic) |

| 분산 학습 | DDP | FSDP + activation checkpoint |

Detectron2 코드 한 조각.

from detectron2 import model_zoo

from detectron2.config import get_cfg

from detectron2.engine import DefaultPredictor

cfg = get_cfg()

cfg.merge_from_file(model_zoo.get_config_file(

"COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x.yaml"

))

cfg.MODEL.WEIGHTS = model_zoo.get_checkpoint_url(

"COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x.yaml"

)

cfg.MODEL.ROI_HEADS.SCORE_THRESH_TEST = 0.5

predictor = DefaultPredictor(cfg)

outputs = predictor(image)

outputs["instances"].pred_boxes, pred_masks, pred_classes

Detectron3의 LazyConfig는 yaml 대신 파이썬 객체로 설정을 쓴다. IDE 자동완성·타입체크가 되고, 분기 로직이 들어가도 깔끔하다.

**언제 Detectron을 쓰는가?** 논문을 재현할 때, COCO/LVIS 벤치마크를 비교할 때, 그리고 "표준" 마스크 R-CNN 베이스라인이 필요할 때. 실제 프로덕션에서는 YOLO나 MMDetection으로 옮겨가는 경우가 많다.

5장 - YOLO 계열 - v8부터 v12까지의 분기

Ultralytics가 관리하는 YOLO 계열은 2024년 v8, 2024년 후반 v9, 2025년 v10, 2025년 후반 v11, 그리고 2026년 초 v12까지 나왔다. 한 회사가 1년에 한두 번씩 메이저를 내는 속도는 다른 어떤 비전 프레임워크도 따라가지 못한다.

핵심을 정리하면 다음과 같다.

| 버전 | 출시 | 핵심 변화 | 라이선스 |

| --- | --- | --- | --- |

| YOLOv8 | 2023 | Anchor-free, classification/segmentation 통합 | AGPL-3.0 |

| YOLOv9 | 2024 | PGI(Programmable Gradient Information), GELAN | AGPL-3.0 |

| YOLOv10 | 2024 | NMS-free 헤드, end-to-end 학습 | AGPL-3.0 |

| YOLOv11 | 2025 | C3k2 블록, SPPF + C2PSA, 더 작은 파라미터 | AGPL-3.0 |

| YOLOv12 | 2026 | Attention-centric 아키텍처, FlashAttention 기반 | AGPL-3.0 |

YOLO의 매력은 한 줄로 충분하다.

from ultralytics import YOLO

1) 모델 로드 - 8개 작업이 한 가지 API

model = YOLO('yolo11n.pt') # nano

model = YOLO('yolo11n-seg.pt') # segmentation

model = YOLO('yolo11n-pose.pt') # pose

model = YOLO('yolo11n-obb.pt') # oriented bounding box

model = YOLO('yolo11n-cls.pt') # classification

2) 추론

results = model('input.jpg')

for r in results:

print(r.boxes.xyxy) # 좌표

print(r.boxes.conf) # 신뢰도

print(r.boxes.cls) # 클래스

3) 학습

model.train(data='coco.yaml', epochs=100, imgsz=640)

4) 내보내기 - ONNX, TensorRT, CoreML, TFLite 모두 한 줄

model.export(format='onnx')

model.export(format='engine') # TensorRT

model.export(format='coreml')

**AGPL 라이선스 주의.** YOLO 모델을 SaaS·웹 서비스에 쓰면 코드 공개 의무가 생긴다. 상용 사용은 Ultralytics Enterprise 라이선스를 구매해야 한다. 이 문제 때문에 일부 회사는 RT-DETR·DAMO-YOLO·D-FINE 같은 Apache-2.0 대안을 쓴다.

6장 - MMDetection / MMCV / OpenMMLab - 가장 넓은 카탈로그

상하이 AI 연구소가 운영하는 OpenMMLab은 비전 분야에서 가장 넓은 모델 카탈로그를 가진다. **MMDetection**(검출), **MMSegmentation**(분할), **MMPose**(자세), **MMTracking**(추적), **MMDetection3D**(3D 검출), **MMYOLO**(YOLO 계열 통합) 등 10개 이상의 서브 프로젝트가 있다.

특징은 두 가지다.

첫째, **모든 모델이 같은 config 시스템을 공유한다.** Mask R-CNN을 ConvNeXt 백본으로 바꾸고, FPN을 BiFPN으로 바꾸고, 해드를 DETR로 바꾸는 일이 yaml 몇 줄로 끝난다.

둘째, **벤치마크 재현이 강력하다.** 논문 결과가 ±0.3 mAP 안에 들어오는 게 일반적이다. 학계 표준에 가장 가까운 프레임워크다.

from mmdet.apis import init_detector, inference_detector

config = 'configs/yolox/yolox_s_8xb8-300e_coco.py'

checkpoint = 'yolox_s.pth'

model = init_detector(config, checkpoint, device='cuda:0')

result = inference_detector(model, 'demo.jpg')

result.pred_instances.bboxes, scores, labels

MMDetection의 단점은 **러닝 커브가 가파르다.** Config 시스템·Registry 패턴·Hook 시스템을 다 이해해야 자기 모델을 끼워 넣을 수 있다. "빠르게 시작"하기보다 "깊게 들어가기"에 어울리는 도구다.

7장 - Roboflow Universe + Supervision - 어노테이션부터 학습까지

Roboflow는 비전 데이터의 GitHub 같은 자리에 있다. 2026년 현재 **Roboflow Universe**에는 30만 개 이상의 공개 데이터셋과 5만 개 이상의 사전 학습 모델이 호스팅된다.

핵심 도구 두 가지.

**Roboflow Annotate** - 웹 기반 어노테이션. 박스·폴리곤·키포인트·OBB를 모두 지원한다. Auto-label 기능이 SAM·Grounding DINO를 호출해 초안을 만든다.

**Supervision** - Roboflow가 오픈소스로 공개한 비전 유틸리티. 시각화·필터링·메트릭·트래커가 한 패키지에 있다.

from ultralytics import YOLO

model = YOLO('yolo11n.pt')

results = model('input.jpg')[0]

Roboflow Supervision의 Detection 객체로 변환

detections = sv.Detections.from_ultralytics(results)

시각화 - 박스 + 라벨 한 줄

box_annotator = sv.BoxAnnotator()

label_annotator = sv.LabelAnnotator()

annotated = box_annotator.annotate(scene=image, detections=detections)

annotated = label_annotator.annotate(scene=annotated, detections=detections)

추적 - ByteTrack 한 줄

tracker = sv.ByteTrack()

detections = tracker.update_with_detections(detections)

Supervision의 장점은 **모델 추론과 시각화/메트릭을 분리**한다는 점이다. YOLO·Detectron·MMDetection의 출력을 같은 `Detections` 객체로 통일시켜준다.

8장 - HuggingFace Transformers Vision - ViT부터 DETR까지

HuggingFace Transformers는 NLP만의 라이브러리가 아니다. 2026년 기준 비전 모델만 200개 이상이 등록되어 있다.

대표 모델 카탈로그.

- **ViT(Vision Transformer)** - 분류의 표준

- **DETR / Deformable DETR / DINO** - 트랜스포머 기반 검출

- **Mask2Former / OneFormer** - 통합 세그멘테이션

- **OWL-ViT / OWLv2** - 오픈 보캐브 검출

- **CLIP / SigLIP / SigLIP 2** - 이미지-텍스트 임베딩

- **DINOv2 / DINOv3** - 자기 지도 학습 백본

- **SAM / SAM 2** - 세그멘테이션

- **Depth Anything v2 / v3** - 깊이 추정

from transformers import pipeline

분류 - 한 줄

classifier = pipeline('image-classification', model='google/vit-base-patch16-224')

print(classifier('input.jpg'))

검출

detector = pipeline('object-detection', model='facebook/detr-resnet-50')

오픈 보캐브 검출

detector = pipeline('zero-shot-object-detection', model='google/owlv2-base-patch16-ensemble')

print(detector('input.jpg', candidate_labels=['cat', 'dog', 'person']))

세그멘테이션

segmenter = pipeline('image-segmentation', model='facebook/mask2former-swin-large-coco-panoptic')

`pipeline()` 한 줄로 추론이 끝나는 게 HuggingFace의 매력이다. 모델을 바꾸려면 문자열만 바꾸면 된다. 다만 학습은 다른 도구로 가는 게 좋다 - HF Trainer는 비전에서는 PyTorch Lightning이나 MMDetection보다 어색하다.

9장 - Segment Anything 2 (SAM 2) - 비디오 마스크의 새 표준

Meta의 SAM(Segment Anything Model)은 2023년 4월에 처음 나왔다. 2024년 7월 **SAM 2**가 출시되면서 이미지뿐 아니라 **비디오에 대한 메모리 어텐션**이 추가되었다. 한 프레임에서 마스크를 잡으면, 나머지 프레임이 자동으로 추적된다.

2026년 기준 SAM 계열의 가족은 다음과 같다.

| 모델 | 출시 | 파라미터 | 특징 |

| --- | --- | --- | --- |

| SAM | 2023 | 91M-636M | 이미지 세그멘테이션 |

| SAM 2 | 2024 | 39M-224M | 비디오 + 이미지 |

| SAM 2.1 | 2024-말 | 동일 | 작은 객체·가림 처리 개선 |

| SAMURAI | 2024 | 동일 | 칼만 필터 기반 추적 강화 |

| FastSAM | 2023 | 68M | YOLOv8-seg 백본, 50x 빠름 |

| MobileSAM | 2023 | 9.8M | 모바일용 경량화 |

| EfficientSAM | 2023 | 26M | KD로 경량화 |

SAM 2 사용 예시.

from sam2.build_sam import build_sam2_video_predictor

predictor = build_sam2_video_predictor(

'configs/sam2_hiera_l.yaml',

'checkpoints/sam2_hiera_large.pt'

)

비디오 초기화

state = predictor.init_state(video_path='video.mp4')

첫 프레임에서 클릭 한 번 - 마스크 자동 추적

predictor.add_new_points(

inference_state=state,

frame_idx=0,

obj_id=1,

points=[[210, 350]],

labels=[1]

)

모든 프레임에 대해 마스크 추적

for frame_idx, obj_ids, masks in predictor.propagate_in_video(state):

masks shape: (num_objects, H, W)

pass

SAM 2의 가치는 **"한 번 가르치면 평생 따라간다"**는 점이다. 라벨링 비용이 비디오 길이에 비례하지 않는다. CVAT·Label Studio·Roboflow가 모두 SAM 2 통합을 기본 기능으로 받아들였다.

10장 - Grounding DINO 1.5 / 1.6 - 텍스트로 박스를 그리다

IDEA Research의 **Grounding DINO**는 "오픈 보캐브 검출"이라는 작업을 표준으로 만든 모델이다. 2023년 1.0이 나왔고, 2024년 1.5 Pro/Edge, 2024년 후반 1.6이 나왔다.

전통적인 YOLO·Detectron은 학습할 때 본 클래스(80개·1203개)만 검출한다. Grounding DINO는 다르다 - **"빨간 자동차"·"문 손잡이"·"사람이 들고 있는 우산"** 같은 자연어 프롬프트로 박스를 그린다.

from groundingdino.util.inference import load_model, load_image, predict

model = load_model('GroundingDINO_SwinT_OGC.cfg.py', 'groundingdino_swint_ogc.pth')

image_source, image = load_image('input.jpg')

자연어 프롬프트 - 명사구를 점(.)으로 구분

TEXT_PROMPT = 'red car. person holding umbrella. door handle.'

BOX_THRESHOLD = 0.35

TEXT_THRESHOLD = 0.25

boxes, logits, phrases = predict(

model=model,

image=image,

caption=TEXT_PROMPT,

box_threshold=BOX_THRESHOLD,

text_threshold=TEXT_THRESHOLD,

)

**Grounding SAM** - Grounding DINO로 박스를 잡고, SAM(또는 SAM 2)으로 그 박스 안의 마스크를 만드는 파이프라인. 2026년 라벨링 시작점의 사실상 표준이다.

1) Grounding DINO로 박스

boxes, _, _ = predict(model_gdino, image, 'cat. dog.', 0.35, 0.25)

2) SAM으로 마스크

sam_predictor.set_image(image_source)

masks, _, _ = sam_predictor.predict(box=boxes, multimask_output=False)

이 두 줄이 "데이터셋 없이 객체 분할"의 전부다. 1만 장에 박스를 손으로 그리던 일이 30분짜리 스크립트로 끝난다.

11장 - Florence-2, YOLO-World - 또 다른 오픈 보캐브

오픈 보캐브 진영에는 Grounding DINO 말고도 두 가지 강자가 있다.

**Florence-2**(Microsoft, 2024) - 분류·캡셔닝·검출·분할·OCR을 한 모델로 처리한다. 0.23B와 0.77B 파라미터로 매우 작은데도 성능이 좋다. 자연어 프롬프트가 아니라 **태스크 토큰**을 쓴다 - `<OD>`(detection), `<DENSE_REGION_CAPTION>`, `<REFERRING_EXPRESSION_SEGMENTATION>` 등.

from transformers import AutoProcessor, AutoModelForCausalLM

processor = AutoProcessor.from_pretrained('microsoft/Florence-2-large', trust_remote_code=True)

model = AutoModelForCausalLM.from_pretrained('microsoft/Florence-2-large', trust_remote_code=True)

prompt = '<OD>' # Object Detection 태스크 토큰

inputs = processor(text=prompt, images=image, return_tensors='pt')

generated_ids = model.generate(**inputs, max_new_tokens=1024, num_beams=3)

generated_text = processor.batch_decode(generated_ids, skip_special_tokens=False)[0]

parsed = processor.post_process_generation(generated_text, task='<OD>', image_size=(W, H))

**YOLO-World**(Tencent, 2024) - YOLO 속도에 오픈 보캐브를 얹었다. Grounding DINO보다 10~20배 빠르고, 자연어 프롬프트로 학습 없이 검출한다.

from ultralytics import YOLOWorld

model = YOLOWorld('yolov8x-worldv2.pt')

model.set_classes(['red car', 'door handle', 'person holding umbrella'])

results = model.predict('input.jpg')

언제 어떤 걸 쓰느냐. **품질이 최우선이면 Grounding DINO 1.6**, **속도가 최우선이면 YOLO-World**, **여러 작업을 한 모델로 묶고 싶으면 Florence-2**. 이 세 가지가 2026년 오픈 보캐브의 삼각형이다.

12장 - VLM (Vision Language Model) - "이미지에게 묻는다"

2024년 GPT-4V가 등장한 후, VLM은 컴퓨터 비전의 새 층이 되었다. 2026년 5월 기준 주요 VLM은 다음과 같다.

**클로즈드 소스 (API)**

- **GPT-4o** / **GPT-4.5-vision** (OpenAI)

- **Claude 3.5 Sonnet** / **Claude 4 Opus** (Anthropic)

- **Gemini 2.0 Flash** / **Gemini 2.0 Pro** (Google)

**오픈 소스**

- **Qwen2-VL** / **Qwen2.5-VL** (Alibaba) - 2B/7B/72B

- **InternVL 2.5** (OpenGVLab) - 1B/2B/4B/8B/26B/40B/76B

- **Llava-OneVision** (Bytedance/UW) - 0.5B/7B/72B

- **CogVLM2** (Zhipu) - 19B

- **Phi-3.5-vision** (Microsoft) - 4.2B

- **Pixtral 12B** (Mistral) - 12B

VLM의 사용 패턴은 두 가지로 갈린다.

**(a) Vision QA** - "이 사진에 사람이 몇 명 있어?"

from anthropic import Anthropic

client = Anthropic()

with open('input.jpg', 'rb') as f:

img_b64 = base64.standard_b64encode(f.read()).decode('utf-8')

message = client.messages.create(

model='claude-3-5-sonnet-20241022',

max_tokens=1024,

messages=[{

'role': 'user',

'content': [

{'type': 'image', 'source': {'type': 'base64', 'media_type': 'image/jpeg', 'data': img_b64}},

{'type': 'text', 'text': 'How many people are in this image?'}

]

}]

)

**(b) Structured Output** - "이 영수증에서 항목·금액을 JSON으로 뽑아라"

JSON 스키마를 강제하면 OCR + 파싱이 한 호출로 끝난다

schema = {

'type': 'object',

'properties': {

'items': {'type': 'array', 'items': {

'type': 'object',

'properties': {

'name': {'type': 'string'},

'price': {'type': 'number'},

'quantity': {'type': 'integer'}

}

}},

'total': {'type': 'number'}

}

}

VLM의 한계도 분명하다. **(1) 좌표가 약하다** - "왼쪽 위에서 세 번째 객체"는 잘 알지만, 정확한 픽셀 좌표는 부정확하다. **(2) 비싸고 느리다** - GPT-4o로 1만 장을 처리하면 $10~50, YOLO로는 무료에 1분이다. **(3) 결정론적이지 않다** - 같은 질문에 다른 답이 나올 수 있다.

그래서 패턴: **VLM으로 "무엇을 찾을지" 묻고, 전통 모델로 "어디에 있는지" 찾는다.**

13장 - 3D 비전 - DUSt3R, MASt3R, VGGT

2024~2025년 3D 비전에서 가장 큰 변화는 "두 장의 사진만으로 3D 재구성"이 가능해졌다는 것이다.

**DUSt3R**(Naver Labs Europe, 2024) - 두 장의 이미지를 받아서 픽셀별 3D 포인트맵을 직접 회귀한다. 카메라 내부 파라미터를 모르고도 동작한다. 전통적인 SfM·MVS의 복잡한 파이프라인을 한 모델로 줄였다.

**MASt3R**(Naver Labs, 2024) - DUSt3R + 매칭. 두 이미지 사이의 픽셀 대응을 함께 출력한다. SLAM·로컬라이제이션에 직접 쓸 수 있다.

**VGGT**(Meta, 2025) - Visual Geometry Grounded Transformer. 여러 이미지를 한 번에 받아 카메라 포즈·깊이맵·포인트맵을 동시에 추정한다. DUSt3R의 페어와이즈 한계를 넘었다.

**Spann3R**(2024) - 메모리 토큰을 통해 시퀀셜 3D 재구성을 한다. 비디오 SLAM에 가까운 결과를 얻는다.

from dust3r.inference import inference

from dust3r.model import AsymmetricCroCo3DStereo

model = AsymmetricCroCo3DStereo.from_pretrained('naver/DUSt3R_ViTLarge_BaseDecoder_512_dpt')

images = load_images(['img1.jpg', 'img2.jpg'], size=512)

pairs = make_pairs(images, scene_graph='complete', prefilter=None, symmetrize=True)

output = inference(pairs, model, device='cuda', batch_size=1)

output에서 pointmap, confidence, depth 추출

3D 비전 분야의 한국 기여가 큰 곳이다. Naver Labs Europe의 그르노블 팀이 DUSt3R·MASt3R·CroCo를 모두 만들었다.

14장 - Depth Anything v2/v3, Marigold, DepthPro

단안 깊이 추정은 2024~2025년에 폭발적으로 발전했다.

**Depth Anything v2**(HKU, 2024) - 6200만 장의 미라벨 이미지로 학습한 강력한 깊이 추정 모델. Small(24M)·Base(97M)·Large(335M)·Giant(1.3B) 네 사이즈. **Depth Anything v3**(2025)는 비디오 일관성과 메트릭 깊이를 강화했다.

**Marigold**(ETH Zürich, 2024) - Stable Diffusion을 깊이 추정으로 파인튜닝. 디퓨전 기반이라 디테일이 좋지만 느리다.

**DepthPro**(Apple, 2024) - 한 장에서 메트릭 깊이를 0.3초 안에 추정. iPhone의 LiDAR 없는 깊이 추정의 기반이다.

from transformers import pipeline

pipe = pipeline(task='depth-estimation', model='depth-anything/Depth-Anything-V2-Large-hf')

depth = pipe('input.jpg')['depth'] # PIL Image

언제 어떤 걸 쓰느냐. **상대 깊이로 충분**하면 Depth Anything, **메트릭 깊이가 필요**하면 DepthPro, **디테일이 최우선**이면 Marigold.

15장 - 자세 추정 - MMPose, OpenPose, AlphaPose, DWPose

자세 추정(Pose Estimation)은 키포인트를 찾는 작업이다. 2026년의 표준 카탈로그.

| 도구 | 키포인트 | 특징 |

| --- | --- | --- |

| MediaPipe Pose | 33 | 모바일 실시간 |

| OpenPose | 25(BODY_25) | 멀티 퍼슨, 오래된 표준 |

| AlphaPose | 17(COCO) | Top-down 정확도 |

| MMPose | 17~133 | 가장 넓은 모델 카탈로그 |

| DWPose | 133(전신+얼굴+손) | ControlNet 자세 조건의 표준 |

| RTMPose | 17 | 모바일 실시간, MMPose 소속 |

**DWPose**가 2024~2026년 자세 분야의 사실상 표준이 되었다. 이유는 단순하다 - **ControlNet·AnimateDiff·Stable Video Diffusion이 모두 DWPose 키포인트를 조건으로 받는다**. 생성형 AI의 자세 조건은 거의 DWPose다.

from mmpose.apis import inference_topdown, init_model

config = 'configs/wholebody_2d_keypoint/rtmpose/cocktail14/rtmw-x_8xb320-270e_cocktail14-384x288.py'

checkpoint = 'rtmw-x_simcc-cocktail14_pt-ucoco_270e-384x288.pth'

model = init_model(config, checkpoint, device='cuda')

results = inference_topdown(model, 'input.jpg', bboxes=person_boxes)

results[i].pred_instances.keypoints, keypoint_scores

16장 - 객체 추적 - ByteTrack, BoT-SORT, OC-SORT, DEVA

비디오에서 같은 객체에 같은 ID를 부여하는 일이 추적(tracking)이다. 2026년의 표준은 네 가지로 좁혀진다.

| 추적기 | 입력 | 특징 |

| --- | --- | --- |

| ByteTrack(2022) | 박스 + 신뢰도 | 낮은 신뢰도 박스도 두 단계 매칭. 가장 널리 쓰임 |

| BoT-SORT(2022) | 박스 + ReID 임베딩 | 카메라 움직임 보상 |

| OC-SORT(2023) | 박스 | 관측 중심, 가림 강건 |

| DEVA(2023) | 박스 + 마스크 | SAM과 짝, 비디오 세그멘테이션 추적 |

ByteTrack은 Roboflow Supervision에 통합되어 있어 한 줄이면 끝난다.

tracker = sv.ByteTrack(track_thresh=0.5, track_buffer=30)

for frame, detections in stream():

detections = tracker.update_with_detections(detections)

detections.tracker_id에 ID가 들어 있음

**SAM 2 자체가 추적기 역할을 한다**는 점도 기억해두자. 한 프레임에서 클릭하면 비디오 전체에서 마스크가 따라온다. 추적과 분할이 한 모델로 합쳐졌다.

17장 - 디퓨전 기반 비전 - ControlNet, IP-Adapter

생성형 비전은 더 이상 "다른 분야"가 아니다. ControlNet·IP-Adapter는 검출/분할 결과를 입력 조건으로 받아 새 이미지를 생성한다.

- **ControlNet** - Canny edge, depth, pose(DWPose), segmentation, normal 등을 조건으로 받음

- **IP-Adapter** - 이미지 자체를 스타일/내용 조건으로 받음

- **T2I-Adapter** - 더 가벼운 ControlNet 대안

from diffusers import StableDiffusionXLControlNetPipeline, ControlNetModel

controlnet = ControlNetModel.from_pretrained('thibaud/controlnet-openpose-sdxl-1.0', torch_dtype=torch.float16)

pipe = StableDiffusionXLControlNetPipeline.from_pretrained(

'stabilityai/stable-diffusion-xl-base-1.0',

controlnet=controlnet,

torch_dtype=torch.float16

).to('cuda')

pose_image = compute_dwpose(input_image) # DWPose 키포인트 이미지

image = pipe('a person dancing in the rain', image=pose_image).images[0]

이 코드 한 토막이 **"비전 인식 -> 비전 생성"** 파이프라인의 표준이다. 검출과 생성이 같은 도구 체인 안에 들어왔다.

18장 - 임베딩 모델 - CLIP, SigLIP, DINOv2, DINOv3

이미지를 벡터로 바꾸는 도구는 2026년 가장 많이 호출되는 컴퓨터 비전 모델이다. 이미지 검색·중복 제거·클러스터링·제로샷 분류가 모두 임베딩 위에서 동작한다.

| 모델 | 학습 신호 | 차원 | 강점 |

| --- | --- | --- | --- |

| CLIP(2021) | 이미지-텍스트 페어 | 512/768 | 텍스트와 정렬 |

| OpenCLIP | 동일, 더 큰 데이터 | 동일 | 더 강한 베이스라인 |

| SigLIP(2023) | Sigmoid loss | 동일 | CLIP보다 효율 |

| SigLIP 2(2024) | 다중 작업 | 동일 | OCR·문서 강함 |

| DINOv2(2023) | 자기지도(SSL) | 768/1024/1536 | 텍스트 비의존, 강한 특징 |

| DINOv3(2025) | 자기지도, 더 큼 | 동일 | DINOv2 후속 |

언제 어떤 임베딩을 쓰느냐.

- **텍스트로 이미지 검색** -> CLIP / SigLIP 2

- **이미지로 이미지 검색** -> DINOv3

- **다운스트림 분류 헤드 학습** -> DINOv3

- **OCR·문서 작업** -> SigLIP 2

from transformers import AutoModel, AutoProcessor

model = AutoModel.from_pretrained('facebook/dinov3-vitl-pretrain-lvd1689m')

processor = AutoProcessor.from_pretrained('facebook/dinov3-vitl-pretrain-lvd1689m')

inputs = processor(images=image, return_tensors='pt')

with torch.no_grad():

outputs = model(**inputs)

embedding = outputs.last_hidden_state.mean(dim=1) # (1, 1024)

19장 - 어노테이션 도구 - CVAT, Label Studio, Roboflow, VIA

라벨링 도구는 2026년 한 가지 공통점을 공유한다 - **AI-assist가 기본**이다. SAM·Grounding DINO·YOLO가 도구 안에서 직접 호출된다.

| 도구 | 라이선스 | 강점 |

| --- | --- | --- |

| CVAT | MIT, 오픈소스 | 가장 넓은 형식 지원, 비디오 강함 |

| Label Studio | Apache 2.0 | NLP/오디오/이미지 통합, ML 백엔드 |

| Roboflow Annotate | 상용 SaaS | SAM/Grounding DINO 통합, 협업 |

| VIA | BSD, 오픈소스 | 가볍고 단일 HTML 파일 |

**팀 단위 작업**이라면 Roboflow나 CVAT, **모델 통합**이 중요하면 Label Studio, **5분 안에 시작**해야 하면 VIA.

20장 - 추론 런타임 - ONNX Runtime, TensorRT, OpenVINO

학습된 모델을 빠르게 실행하는 것이 추론 런타임의 일이다. 2026년의 선택지.

| 런타임 | 타겟 | 강점 |

| --- | --- | --- |

| ONNX Runtime | 크로스 플랫폼 | CPU/GPU/NPU 모두, 가장 표준 |

| TensorRT | NVIDIA GPU | 최고 속도, INT8/FP8 양자화 |

| OpenVINO | Intel CPU/iGPU/NPU | x86 PC 최강 |

| CoreML | Apple Silicon | iOS/macOS, ANE 활용 |

| TFLite | 모바일 (Android) | XNNPACK, Hexagon |

| NCNN | 모바일/임베디드 | Tencent, ARM 최적화 |

| MNN | 모바일/임베디드 | Alibaba, OpenCL 강함 |

YOLO 한 줄로 모두 내보낼 수 있다.

from ultralytics import YOLO

model = YOLO('yolo11n.pt')

model.export(format='onnx', dynamic=True, simplify=True)

model.export(format='engine', half=True) # TensorRT FP16

model.export(format='openvino', int8=True) # OpenVINO INT8

model.export(format='coreml', nms=True) # CoreML

model.export(format='tflite', int8=True) # TFLite INT8

model.export(format='ncnn') # NCNN

**선택 규칙.** NVIDIA GPU 서버 -> TensorRT. Intel PC -> OpenVINO. iOS/macOS -> CoreML. Android -> TFLite. 잘 모르겠으면 -> ONNX Runtime.

21장 - 모바일 비전 - ML Kit, Vision Framework, MNN

모바일 앱에서 비전을 쓴다면 네이티브 프레임워크가 가장 안전하다.

**Google ML Kit** (Android/iOS) - 얼굴·바코드·텍스트·랜드마크·번역·자세를 모두 제공. 디바이스 온디바이스/서버 옵션.

**Apple Vision Framework** (iOS/macOS) - VNDetectFaceRectangles·VNDetectHumanBodyPoseRequest 등 100개 이상의 비전 요청. 2024년 추가된 VNGenerateForegroundInstanceMaskRequest는 모바일 SAM이다.

**MNN** (Alibaba) - 중국 모바일 생태계의 사실상 표준. 알리바바·핀둬둬·바이트댄스 앱에 들어가 있다.

// Swift / Apple Vision

let request = VNDetectHumanBodyPoseRequest { request, error in

guard let obs = request.results as? [VNHumanBodyPoseObservation] else { return }

for observation in obs {

let points = try? observation.recognizedPoints(.all)

// points에 키포인트가 들어 있음

}

}

let handler = VNImageRequestHandler(cgImage: cgImage)

try? handler.perform([request])

**규칙.** 단순한 ML 기능(얼굴·텍스트·바코드)은 네이티브 -> 빠르고 무료. 커스텀 모델은 CoreML(iOS) / TFLite(Android) -> 자기 모델 배포.

22장 - 한국 비전 생태계

한국의 컴퓨터 비전 기여는 학계와 산업 양쪽에서 굵직하다.

**Naver Labs Europe** - DUSt3R·MASt3R·CroCo의 그르노블 팀. 3D 비전에서 세계 최전선.

**KAIST CVLab** - 박은병·권인소·노용만 교수 그룹. CVPR·ICCV 정기 발표.

**Lunit** - 의료 영상 AI. 흉부 X선·맘모그래피·디지털 병리에서 FDA·CE 승인을 다수 획득. INSIGHT CXR·MMG·BCC가 주력.

**Seerslab** - AR/VR/비전. Naver Z의 자회사로 ZEPETO·SNOW의 얼굴 인식·필터 엔진 담당.

**VUNO** - 의료 영상 AI. DeepASR·DeepCT·DeepBrain.

**MakinaRocks** - 산업 비전 이상탐지. 반도체·디스플레이 검사.

**Riiid / Trinity / Innospace** - 교육·국방 영역.

한국 학계의 강점은 **얼굴·OCR·자율주행·의료 영상**에 집중되어 있다. CVPR 발표 수에서 한국은 세계 4~5위권이다.

23장 - 일본 비전 생태계

**Preferred Networks(PFN)** - 일본 최대 AI 회사. 자체 비전 라이브러리 PFN-Vision, 화학·소재·로보틱스 비전.

**ABEJA** - 도쿄 기반 비전 SaaS. 소매·제조 분야의 점포 분석.

**Recruit Holdings** - 잡스루·인디드 등 자회사 통해 비전 채용 시스템.

**ALBERT(현 Accenture 일본)** - 산업 AI/비전 컨설팅.

**Nikon AI** - 의료 영상·산업 검사. 카메라 회사가 비전 AI로 확장.

**LeapMind** - 양자화 추론 엔진 Blueoil로 임베디드 비전 강세.

**SoftBank Robotics** - Pepper·NAO의 비전 시스템.

**Fast Retailing(UNIQLO)** - 자체 비전 라이브러리로 매장 카메라 분석.

일본 학계는 **OCR·문서 비전·로보틱스 비전**에 강하다. 도쿄대 IIS·京大·名大·東工大가 정기적으로 CVPR 발표를 낸다.

24장 - 2026년 컴퓨터 비전 엔지니어의 자세

지금까지 정리한 24장의 결론을 한 페이지로 줄이면 이렇다.

**(1) 학습은 가급적 피하라.** 사전 학습 모델·오픈 보캐브·VLM의 조합으로 80%는 끝난다. 데이터 1만 장을 모으는 시간보다 Grounding DINO 프롬프트를 다듬는 시간이 짧다.

**(2) 파이프라인을 설계하라, 모델을 학습하지 말라.** 2026년의 일은 "어떤 모델을 어떤 순서로 부를 것인가"이지, "어떤 손실 함수로 학습할 것인가"가 아니다.

**(3) VLM과 전통 모델을 분업시켜라.** VLM에 "무엇을 찾을지" 묻고, 전통 모델에 "어디에 있는지" 묻는다. 이게 2026년 비전 시스템의 표준 형태다.

**(4) 추론 런타임을 가볍게 보지 말라.** PyTorch에서 30 FPS가 나오는 모델이 TensorRT에서 200 FPS가 나온다. 6배 차이는 사용자 경험에서 다른 제품이다.

**(5) 라이선스를 챙겨라.** YOLO 계열은 AGPL이다. 회사 제품에 그대로 넣으면 코드 공개 의무가 생긴다. RT-DETR·D-FINE·MMDetection을 대안으로 알아둬라.

**(6) "픽셀의 일"은 OpenCV에 맡겨라.** 색공간·리사이즈·디코딩·인코딩은 여전히 OpenCV가 가장 빠르고 안정적이다.

**(7) 데이터셋보다 라벨링 도구가 먼저다.** SAM 2 통합된 CVAT/Roboflow로 시작하라. 손으로 박스를 그리는 시대는 끝났다.

비전 엔지니어의 미래는 **"모델을 만드는 사람"이 아니라 "모델을 묶는 사람"**이다. 도구는 많다. 줄을 잘 서야 한다.

References

- OpenCV - https://opencv.org/

- OpenCV 5.x roadmap - https://github.com/opencv/opencv/wiki/OpenCV-5

- MediaPipe - https://developers.google.com/mediapipe

- MediaPipe Tasks API - https://developers.google.com/mediapipe/solutions/tasks

- Detectron2 - https://github.com/facebookresearch/detectron2

- Detectron2 Model Zoo - https://github.com/facebookresearch/detectron2/blob/main/MODEL_ZOO.md

- Ultralytics YOLO - https://github.com/ultralytics/ultralytics

- Ultralytics docs - https://docs.ultralytics.com/

- MMDetection - https://github.com/open-mmlab/mmdetection

- MMPose - https://github.com/open-mmlab/mmpose

- Roboflow - https://roboflow.com/

- Roboflow Supervision - https://github.com/roboflow/supervision

- HuggingFace Transformers Vision - https://huggingface.co/docs/transformers/main/en/tasks/object_detection

- Segment Anything 2 - https://github.com/facebookresearch/sam2

- SAM 2 paper - https://ai.meta.com/research/publications/sam-2-segment-anything-in-images-and-videos/

- Grounding DINO - https://github.com/IDEA-Research/GroundingDINO

- Grounding SAM - https://github.com/IDEA-Research/Grounded-Segment-Anything

- Florence-2 - https://huggingface.co/microsoft/Florence-2-large

- YOLO-World - https://github.com/AILab-CVC/YOLO-World

- DUSt3R - https://github.com/naver/dust3r

- MASt3R - https://github.com/naver/mast3r

- VGGT - https://github.com/facebookresearch/vggt

- Depth Anything v2 - https://github.com/DepthAnything/Depth-Anything-V2

- Marigold - https://github.com/prs-eth/Marigold

- Apple DepthPro - https://github.com/apple/ml-depth-pro

- DINOv3 - https://github.com/facebookresearch/dinov3

- CLIP - https://github.com/openai/CLIP

- SigLIP 2 - https://huggingface.co/collections/google/siglip2

- DWPose - https://github.com/IDEA-Research/DWPose

- ByteTrack - https://github.com/ifzhang/ByteTrack

- ONNX Runtime - https://onnxruntime.ai/

- TensorRT - https://developer.nvidia.com/tensorrt

- OpenVINO - https://docs.openvino.ai/

- Apple CoreML - https://developer.apple.com/documentation/coreml

- TFLite - https://www.tensorflow.org/lite

- NCNN - https://github.com/Tencent/ncnn

- MNN - https://github.com/alibaba/MNN

- CVAT - https://github.com/cvat-ai/cvat

- Label Studio - https://labelstud.io/

- Naver Labs Europe - https://europe.naverlabs.com/

- Lunit - https://www.lunit.io/

- Preferred Networks - https://www.preferred.jp/en/

현재 단락 (1/459)

2010년대의 컴퓨터 비전은 분명한 모양이 있었다. SIFT·HOG·Haar로 특징을 뽑고, SVM·랜덤 포레스트로 분류하고, OpenCV가 그 모든 것을 묶었다. 2020년대 초...

작성 글자: 0원문 글자: 22,931작성 단락: 0/459