들어가며
컴퓨터 비전에서 "무엇이 어디에 있는가"를 답하는 두 축이 객체 검출(object detection)과 이미지 분할(segmentation)입니다. 검출은 물체를 사각형 박스로 감싸 위치와 클래스를 알려주고, 분할은 픽셀 단위로 물체의 경계를 그려냅니다. 이 글에서는 두 분야의 대표 모델들이 어떤 아이디어의 계보를 따라 발전해 왔는지, 아키텍처 원리를 중심으로 정리합니다.
한 가지 전제를 먼저 밝혀 둡니다. 비전 SOTA는 매우 빠르게 바뀌고, 특정 벤치마크의 순위나 수치는 버전·설정에 따라 달라집니다. 따라서 이 글은 구체적인 리더보드 순위보다는 각 모델이 도입한 핵심 개념과 그 개념이 후속 연구에 남긴 영향에 집중합니다. 확실하지 않은 최신 스펙은 단정하지 않고 계열 수준에서 설명합니다.
객체 검출의 계보
2단계 검출: R-CNN 계열
검출의 초기 딥러닝 접근은 "먼저 물체가 있을 법한 후보 영역을 뽑고, 그 다음 각 후보를 분류한다"는 2단계 구조였습니다. R-CNN이 이 흐름을 열었고, 이후 속도와 정확도를 개선하며 발전했습니다.
- **R-CNN**: 선택적 탐색(selective search)으로 후보 영역을 뽑고, 각 영역을 CNN에 통과시켜 특징을 추출한 뒤 분류기로 판정합니다. 정확하지만 후보마다 CNN을 반복 실행해 매우 느렸습니다.
- **Fast R-CNN**: 이미지 전체를 한 번만 CNN에 통과시키고, RoI Pooling으로 각 후보의 특징을 공유 특징맵에서 잘라내 재사용합니다. 반복 연산을 크게 줄였습니다.
- **Faster R-CNN**: 후보 영역 생성 자체를 신경망(Region Proposal Network, RPN)으로 통합했습니다. 이제 검출 전체가 하나의 학습 가능한 파이프라인이 되었습니다.
2단계 계열은 정확도가 높지만, 후보 생성과 판정을 나누는 구조 탓에 실시간 추론에는 상대적으로 무거웠습니다.
1단계 검출: YOLO와 SSD
1단계 검출은 후보 영역 생성 단계를 없애고, 이미지를 격자로 나눈 뒤 각 위치에서 박스와 클래스를 한 번에 예측합니다. "You Only Look Once"라는 이름 그대로, 한 번의 순전파로 검출을 끝냅니다.
- **YOLO**: 이미지를 격자로 분할하고 각 셀이 박스 좌표와 클래스 확률을 직접 회귀합니다. 속도가 빠르고 실시간 응용에 적합합니다.
- **SSD(Single Shot Detector)**: 여러 해상도의 특징맵에서 다양한 크기의 박스를 예측해, 작은 물체와 큰 물체를 함께 다룹니다.
1단계 계열은 속도와 정확도의 균형을 잡으며 실무에서 널리 쓰여 왔습니다. 특히 YOLO는 이후 여러 버전을 거치며 백본, 특징 융합(neck), 손실 함수, 학습 기법을 지속적으로 개선해 왔습니다. 버전별 세부 구조와 성능은 서로 다르므로, 여기서는 "1단계·앵커 기반에서 출발해 앵커프리·엔드투엔드 요소를 흡수하며 실시간 검출의 대표 계열로 자리 잡았다" 정도로 계열의 흐름만 정리합니다.
앵커와 NMS라는 두 개의 손잡이
전통적 검출기는 두 가지 사람이 설계한 요소에 의존했습니다.
- **앵커(anchor)**: 미리 정한 여러 크기·비율의 기준 박스. 모델은 앵커를 기준으로 물체 박스를 조정(회귀)합니다.
- **NMS(Non-Maximum Suppression)**: 한 물체에 여러 박스가 겹쳐 나올 때, 점수가 낮은 중복 박스를 사후에 제거하는 후처리.
이 두 요소는 잘 작동했지만, 하이퍼파라미터 튜닝이 필요하고 파이프라인을 "완전한 엔드투엔드"로 만들지 못하는 걸림돌이기도 했습니다. 다음에 나올 DETR은 바로 이 지점을 겨냥합니다.
트랜스포머 검출: DETR
DETR(DEtection TRansformer, arXiv 2005.12872)은 검출을 **집합 예측(set prediction)** 문제로 재정의했습니다. 격자·앵커·NMS 대신, 트랜스포머가 물체들의 집합을 직접 출력하도록 만든 것이 핵심입니다.
기본 아이디어는 다음과 같습니다.
- CNN 백본이 이미지 특징을 뽑고, 트랜스포머 인코더가 전역 관계를 정리합니다.
- 디코더는 학습된 **오브젝트 쿼리(object query)** 집합을 입력받아, 각 쿼리가 하나의 물체(또는 "물체 없음")를 예측합니다.
- 학습 시에는 **헝가리안 매칭(Hungarian matching)** 으로 예측과 정답을 일대일로 짝지어, 중복 예측 자체가 생기지 않도록 유도합니다. 그 결과 NMS 후처리가 필요 없어집니다.
DETR 검출 파이프라인 (개념)
이미지
|
[CNN 백본] --> 특징맵
|
[트랜스포머 인코더] (전역 self-attention)
|
[트랜스포머 디코더] <-- 오브젝트 쿼리 집합 (예: N개)
|
각 쿼리 -> (박스 좌표, 클래스 또는 "no object")
|
헝가리안 매칭으로 정답과 1:1 대응하여 학습
|
결과: NMS 없이 물체 집합을 직접 출력
DETR은 개념적으로 우아하지만 초기 버전은 수렴이 느리고 작은 물체에 약하다는 한계가 있었습니다. 이후 연구들이 이 문제를 겨냥했습니다.
- **Deformable DETR**: 전체 특징맵이 아니라 소수의 참조 지점 주변만 주의(attention)하도록 하여 수렴을 빠르게 하고 작은 물체 성능을 개선했습니다.
- **DINO 계열 등 개선판**: 쿼리 초기화, 노이즈 대비 학습(denoising) 등으로 정확도와 수렴을 끌어올린 후속 계열이 이어졌습니다.
정리하면, 검출의 큰 흐름은 "2단계(정확하지만 무거움) → 1단계(빠름, 실시간) → 트랜스포머 집합 예측(엔드투엔드, 후처리 제거)"으로 이어져 왔고, 실무에서는 여전히 세 계열이 목적에 따라 공존합니다.
검출 계열 비교
| 계열 | 대표 | 후보 생성 | 후처리 | 특징 |
|---|---|---|---|---|
| 2단계 | Faster R-CNN | RPN | NMS | 높은 정확도, 상대적으로 무거움 |
| 1단계 | YOLO, SSD | 없음(직접 예측) | NMS | 빠름, 실시간 적합 |
| 트랜스포머 | DETR 계열 | 오브젝트 쿼리 | 불필요(집합 예측) | 엔드투엔드, 개념적 단순함 |
표의 정확도·속도는 절대적 순위가 아니라 계열의 일반적 성향으로 이해하는 것이 안전합니다. 실제 값은 백본, 입력 해상도, 학습 데이터, 버전에 따라 크게 달라집니다.
이미지 분할의 세 가지 과제
분할은 "무엇이 어디에 있는가"를 픽셀 단위로 답합니다. 목표에 따라 세 가지로 나뉩니다.
- **시맨틱 분할(semantic segmentation)**: 각 픽셀에 클래스를 부여합니다. 같은 클래스의 서로 다른 개체는 구분하지 않습니다. 예: 도로·하늘·사람 영역을 색으로 칠하되, 사람 세 명을 한 덩어리로 봅니다.
- **인스턴스 분할(instance segmentation)**: 개별 물체(인스턴스)를 픽셀 마스크로 구분합니다. 사람 세 명을 각각 다른 마스크로 분리합니다.
- **판옵틱 분할(panoptic segmentation)**: 시맨틱과 인스턴스를 통합합니다. 배경처럼 셀 수 없는 영역(stuff)은 시맨틱하게, 셀 수 있는 물체(things)는 인스턴스로 다뤄 장면 전체를 빠짐없이 설명합니다.
같은 장면, 세 가지 분할 관점
시맨틱: [사람][사람][사람] -> 모두 "사람" 한 색
인스턴스: [사람1][사람2][사람3] -> 개체별 마스크
판옵틱: things(사람1,2,3) + stuff(도로, 하늘) 통합
분할 아키텍처의 흐름
- **FCN(Fully Convolutional Network)**: 완전연결층을 합성곱으로 대체해 임의 크기 입력을 픽셀 단위로 분류하는 길을 열었습니다.
- **U-Net**: 인코더로 축소하며 문맥을 얻고, 디코더로 복원하며 세부를 살리되, 스킵 연결로 저수준 위치 정보를 전달합니다. 의료 영상 등에서 널리 쓰입니다.
- **Mask R-CNN**: Faster R-CNN에 마스크 예측 분기를 더해 인스턴스 분할의 표준적 접근이 되었습니다. 검출과 분할을 하나의 틀로 묶은 대표 사례입니다.
- **마스크 기반 트랜스포머 접근**: 최근에는 시맨틱·인스턴스·판옵틱을 하나의 "마스크 집합 예측" 틀로 통합하려는 트랜스포머 계열 연구가 활발합니다. DETR의 집합 예측 사고방식이 분할로 확장된 흐름으로 볼 수 있습니다.
Segment Anything: 프롬프트 가능 분할
발상의 전환
Segment Anything(SAM, arXiv 2304.02643)은 분할을 바라보는 관점을 바꿨습니다. 기존 분할 모델은 대개 "정해진 클래스 집합"을 픽셀에 부여하도록 특정 데이터셋에 맞춰 학습했습니다. SAM은 대신 **프롬프트 가능 분할(promptable segmentation)** 이라는 과제를 제안합니다. 점, 박스, 대략적인 마스크 같은 프롬프트를 주면, 그 프롬프트가 가리키는 대상을 클래스 이름 없이도 분할해 냅니다.
구조
SAM은 크게 세 부분으로 구성됩니다.
SAM 구조 (개념)
이미지 --> [이미지 인코더(무거움, 1회 계산)] --> 이미지 임베딩
|
프롬프트(점/박스/마스크) --> [프롬프트 인코더] --> 프롬프트 임베딩
|
v
[가벼운 마스크 디코더] --> 마스크(들)
|
모호할 때 여러 후보 마스크 + 신뢰도 점수
- **이미지 인코더**: 대체로 무거운 비전 트랜스포머로 이미지를 한 번 인코딩합니다. 이 임베딩은 재사용되므로, 같은 이미지에서 여러 프롬프트를 빠르게 처리할 수 있습니다.
- **프롬프트 인코더**: 점·박스·마스크 프롬프트를 임베딩으로 변환합니다.
- **마스크 디코더**: 이미지 임베딩과 프롬프트 임베딩을 결합해 마스크를 출력합니다. 프롬프트가 모호하면(예: 옷의 한 점을 찍었을 때 "옷"인지 "사람"인지) 여러 후보 마스크와 각각의 신뢰도 점수를 함께 냅니다.
데이터 엔진
SAM에서 자주 강조되는 또 하나의 축은 대규모 마스크 데이터를 만든 방식입니다. 모델과 사람이 번갈아 마스크를 생성·검수하는 반복 과정을 통해, 사람이 직접 그리기 어려운 규모의 마스크 데이터를 구축했습니다. "많은 종류의 물체를 프롬프트로 분리한다"는 일반화 능력의 상당 부분이 이 대규모·다양성 데이터에서 나옵니다.
SAM의 의미와 한계
- **의미**: SAM은 특정 클래스에 묶이지 않는 범용 분할의 가능성을 보였습니다. 다른 검출기·인식기와 조합하면, "이 박스 안 물체를 마스크로 따 달라" 같은 하위 작업의 강력한 부품이 됩니다.
- **한계**: SAM 자체는 "이것이 고양이다" 같은 의미 라벨을 직접 부여하지 않습니다. 클래스 인식은 별도 모델이나 프롬프트 설계가 필요합니다. 또한 이미지 인코더가 무거워 실시간·경량 환경에서는 경량화 변형이나 후속 연구가 요구됩니다.
오픈 보캐뷸러리 검출·분할
전통적 검출기는 학습 때 본 고정된 클래스 목록만 인식합니다. **오픈 보캐뷸러리(open-vocabulary)** 접근은 이 제약을 풀려는 흐름입니다. 텍스트-이미지를 함께 학습한 표현(예: 이미지와 텍스트를 같은 공간에 정렬하는 대조학습 계열)을 활용하면, 학습 시 명시적으로 라벨링하지 않은 클래스도 텍스트 설명으로 지시해 찾을 수 있습니다.
- **아이디어**: 클래스를 고정된 정수 라벨이 아니라 텍스트 임베딩으로 다룹니다. "빨간 우산"처럼 자유로운 표현으로 대상을 지정할 수 있습니다.
- **효과**: 새로운 범주를 매번 재학습하지 않고도 지시할 수 있어 유연합니다.
- **주의**: 자유 텍스트 지시의 정확도는 대상·표현·도메인에 따라 편차가 큽니다. 실무에서는 대상 도메인에 맞춘 검증이 필요합니다.
SAM 계열의 프롬프트 가능 분할과 오픈 보캐뷸러리 검출을 조합하면 "텍스트로 무엇을 찾을지 지시하고, 그 대상을 픽셀 마스크로 분리한다"는 파이프라인을 구성할 수 있습니다. 검출·분할·언어 정렬 표현이 부품처럼 결합되는 것이 최근 흐름의 특징입니다.
백본의 진화: 무엇이 특징을 뽑는가
검출·분할 모델은 대개 "백본(backbone) + 넥(neck) + 헤드(head)"의 세 부분으로 나눠 볼 수 있습니다. 이 중 백본은 이미지에서 특징을 뽑는 핵심 부품이며, 백본의 발전이 곧 검출·분할 성능의 상당 부분을 끌어왔습니다.
- **CNN 백본**: ResNet 계열처럼 합성곱을 깊게 쌓아 지역 패턴을 계층적으로 학습합니다. 오랫동안 검출·분할의 표준 백본이었습니다.
- **특징 피라미드(FPN)**: 서로 다른 해상도의 특징맵을 위아래로 연결해, 작은 물체(고해상도)와 큰 물체(저해상도)를 함께 다룹니다. 다중 스케일 검출의 핵심 부품입니다.
- **비전 트랜스포머 백본**: 이미지를 패치로 나눠 어텐션으로 전역 관계를 학습합니다. 계층적 트랜스포머 백본은 지역성과 전역성을 함께 살려 검출·분할 백본으로도 널리 쓰입니다.
검출·분할 모델의 3단 구성 (개념)
이미지
|
[백본] --> 다양한 해상도의 특징맵
|
[넥(FPN 등)] --> 스케일 간 특징 융합
|
[헤드] --> 박스/클래스 또는 마스크 예측
백본 선택은 정확도와 속도의 큰 손잡이입니다. 무거운 백본은 정확하지만 느리고, 경량 백본은 빠르지만 어려운 장면에서 손해를 봅니다. 실무에서는 목표 지연·정확도에 맞춰 백본을 고르고, 필요하면 사전학습된 가중치로 시작합니다.
평가 지표: mAP와 IoU
검출·분할 결과를 어떻게 "좋다/나쁘다"로 판정하는지 이해하면 벤치마크 숫자를 훨씬 정확히 읽을 수 있습니다.
- **IoU(Intersection over Union)**: 예측 영역과 정답 영역의 겹침 정도입니다. 교집합을 합집합으로 나눈 값으로, 1에 가까울수록 잘 맞은 것입니다. 박스든 마스크든 "얼마나 겹치는가"를 재는 기본 척도입니다.
- **정밀도·재현율(precision·recall)**: 정밀도는 "예측한 것 중 맞은 비율", 재현율은 "정답 중 찾아낸 비율"입니다. 둘은 상충하는 경향이 있어 함께 봐야 합니다.
- **AP·mAP(mean Average Precision)**: 다양한 신뢰도 임계값에서 정밀도-재현율 곡선 아래 면적을 구해 클래스별로 평균한 값입니다. 검출·인스턴스 분할의 대표 지표입니다.
IoU 개념 (박스 예시)
IoU = 교집합 넓이 / 합집합 넓이
잘 맞음: 예측과 정답이 크게 겹침 --> IoU 높음
빗나감: 겹침 작음 --> IoU 낮음
보통 IoU 임계값(예: 0.5) 이상이면 "맞은 검출"로 셈
주의할 점은 mAP 하나로 모델을 줄 세우기 어렵다는 것입니다. 같은 mAP라도 작은 물체·큰 물체·특정 클래스에서의 강약이 다를 수 있습니다. 또 벤치마크 데이터셋의 특성(도심 도로, 실내, 항공 등)에 따라 순위가 뒤집히기도 합니다. 숫자는 "어떤 데이터셋에서, 어떤 IoU 기준으로" 잰 것인지 함께 봐야 의미가 있습니다.
손실 함수의 관점
검출·분할 모델은 여러 손실을 합쳐 학습합니다. 각 손실이 무엇을 가르치는지 알면 모델의 행동을 이해하기 쉽습니다.
- **분류 손실**: 각 위치·후보가 어떤 클래스인지(또는 배경인지) 맞히도록 가르칩니다. 배경이 훨씬 많은 불균형 문제를 다루기 위해 어려운 예에 가중치를 주는 손실이 쓰이기도 합니다.
- **박스 회귀 손실**: 예측 박스를 정답 박스에 가깝게 조정합니다. 좌표 차이를 직접 재거나, IoU 자체를 손실로 삼는 방식이 있습니다.
- **마스크 손실(분할)**: 픽셀 단위로 마스크를 정답과 비교합니다. 픽셀 분류 손실이나 영역 겹침을 재는 손실이 함께 쓰입니다.
- **매칭 손실(DETR 계열)**: 예측 집합과 정답 집합을 1:1로 짝지은 뒤, 짝지어진 쌍에 대해서만 위 손실들을 계산합니다.
손실 설계는 종종 정확도와 안정성을 좌우합니다. 예컨대 배경 불균형을 제대로 다루지 못하면 모델이 "전부 배경"이라고 예측하는 쪽으로 치우칠 수 있습니다.
여기서 기억할 점은, 여러 손실의 가중치 균형이 모델의 성향을 바꾼다는 것입니다. 박스 회귀에 큰 가중치를 주면 위치는 정확해지지만 분류가 흔들릴 수 있고, 반대도 마찬가지입니다. 어려운 예를 강조하는 손실은 드문 물체를 잘 잡게 하지만, 라벨 잡음이 많으면 오히려 잡음을 학습할 위험이 있습니다. 손실은 "무엇을 더 중요하게 볼지"를 모델에 알려주는 언어라고 생각하면 이해가 쉽습니다.
실무 파이프라인과 자주 하는 실수
실제 검출·분할 시스템을 만들 때 반복적으로 마주치는 지점들을 정리합니다.
- **데이터가 8할**: 도메인에 맞는 라벨 데이터의 양과 질이 성능을 좌우합니다. 조명·각도·가림이 다양한 데이터가 일반화를 돕습니다.
- **클래스 불균형**: 흔한 클래스와 드문 클래스의 비율 차가 크면 드문 클래스가 무시됩니다. 샘플링·가중치·증강으로 완화합니다.
- **작은 물체 문제**: 작은 물체는 특징맵에서 픽셀이 적어 놓치기 쉽습니다. 고해상도 입력, 다중 스케일 특징(FPN), 타일링 추론이 도움이 됩니다.
- **도메인 갭**: 학습 데이터와 실제 배포 환경이 다르면 성능이 떨어집니다. 배포 환경 데이터로의 미세조정이나 도메인 적응이 필요합니다.
- **후처리 튜닝**: NMS 임계값, 신뢰도 임계값 같은 값은 목표(재현율 우선 대 정밀도 우선)에 맞춰 조정해야 합니다.
전형적 검출 파이프라인 (개념)
데이터 수집/라벨링
|
전처리·증강 (크롭, 색 변형, 모자이크 등)
|
사전학습 백본으로 학습
|
검증셋에서 mAP 측정 + 임계값 튜닝
|
배포 환경 데이터로 미세조정
|
경량화(양자화 등) 후 배포
|
운영 중 오탐/미탐 수집 -> 데이터에 되먹임
가장 흔한 실수는 "벤치마크 숫자가 좋으니 우리 문제도 잘 풀리겠지"라고 가정하는 것입니다. 벤치마크와 실제 도메인의 차이를 항상 검증하고, 자신의 데이터로 다시 재는 습관이 중요합니다.
검출과 분할의 결합
최근 흐름의 큰 특징 하나는, 검출과 분할과 언어가 서로 부품처럼 결합된다는 점입니다. 대표적 조합을 정리하면 다음과 같습니다.
- **검출 + SAM**: 검출기로 물체 박스를 얻고, 그 박스를 SAM의 프롬프트로 주어 정밀한 마스크를 얻습니다. "무엇이 어디에 있는지"를 검출이, "픽셀 경계"를 SAM이 담당합니다.
- **오픈 보캐뷸러리 검출 + SAM**: 텍스트로 대상을 지시해 박스를 얻고, SAM으로 마스크를 딴 뒤, 필요하면 추적기로 프레임에 걸쳐 따라갑니다.
- **분할 + 깊이·3D**: 분할 마스크와 깊이 정보를 결합하면 "이 물체가 어디에 얼마나 떨어져 있는가"까지 알 수 있어 로보틱스·AR에서 유용합니다.
이런 조합은 각 부품이 독립적으로 발전하면서도 표준적인 인터페이스(박스, 마스크, 텍스트 임베딩)로 이어지기 때문에 가능합니다. 계보를 이해한다는 것은 곧 이 부품들을 어떻게 조립할 수 있는지 아는 것과 같습니다.
실시간 검출의 관점
실무에서 검출은 종종 지연 시간이 핵심 제약입니다. 실시간 검출을 좌우하는 요소는 대략 다음과 같습니다.
- **백본 경량화**: 연산량을 줄인 백본과 효율적 특징 융합으로 처리량을 높입니다.
- **앵커프리·엔드투엔드 요소**: 후처리와 튜닝 부담을 줄여 파이프라인을 단순화합니다.
- **입력 해상도 조절**: 해상도를 낮추면 빨라지지만 작은 물체 성능이 떨어지는 상충이 있습니다.
- **하드웨어·양자화**: 정밀도를 낮추거나(양자화) 특정 가속기에 맞춰 최적화해 처리량을 끌어올립니다.
YOLO 계열이 오랫동안 실시간 검출의 대표로 언급되어 온 이유는, 정확도를 크게 희생하지 않으면서 이 요소들을 균형 있게 다뤄 왔기 때문입니다. 다만 어떤 버전이 "가장 좋은가"는 목표 지연 시간, 정확도 요구, 배포 하드웨어에 따라 달라지므로 절대적 결론은 피하는 편이 안전합니다.
강점과 한계 정리
| 접근 | 강점 | 한계 |
|---|---|---|
| Faster R-CNN | 안정적 고정확도 | 실시간에는 상대적으로 무거움 |
| YOLO/SSD | 빠른 실시간 추론 | 극소 물체·밀집 장면에서 어려움 가능 |
| DETR 계열 | 엔드투엔드, NMS 불필요 | 초기 버전 느린 수렴(후속판이 개선) |
| Mask R-CNN | 검출+인스턴스 분할 통합 | 무거운 파이프라인 |
| SAM | 클래스 무관 범용 분할 | 의미 라벨 부재, 인코더 무거움 |
| 오픈 보캐뷸러리 | 자유 텍스트로 지시 | 도메인·표현별 정확도 편차 |
계보를 한눈에
지금까지의 흐름을 시간 순의 발전 계보로 정리하면 다음과 같습니다. 각 단계가 이전 단계의 무엇을 학습으로 흡수했는지에 주목하면 큰 그림이 보입니다.
검출·분할의 발전 계보 (개념)
[검출]
R-CNN --> Fast R-CNN --> Faster R-CNN (후보 생성을 RPN으로 흡수)
\--> YOLO / SSD (후보 생성 제거, 1단계)
\--> DETR (앵커·NMS 제거, 집합 예측)
\--> Deformable/DINO 등 (수렴·소물체 개선)
[분할]
FCN --> U-Net (인코더-디코더, 스킵)
\--> Mask R-CNN (검출+인스턴스 분할)
\--> 마스크 트랜스포머 계열 (통합 마스크 집합 예측)
[범용화]
SAM (프롬프트 가능 분할)
+ 오픈 보캐뷸러리 (텍스트로 지시)
= 부품 조립형 비전 시스템
이 계보에서 반복되는 패턴은 "사람이 손으로 튜닝하던 요소를 학습 가능한 부품으로 바꾼다"는 것입니다. 이 관점을 가지면 새로 등장하는 모델이 계보의 어느 자리에 놓이는지 빠르게 파악할 수 있습니다.
한 가지 덧붙이면, 이 계보는 "새 것이 옛 것을 완전히 대체한다"는 이야기가 아닙니다. Faster R-CNN 같은 2단계 검출기는 정확도가 중요한 곳에서 여전히 쓰이고, YOLO 계열은 실시간의 표준으로 남아 있으며, DETR 계열은 후처리 없는 우아함으로 자리를 넓혀 갑니다. 각 계열은 서로 다른 상충점 위에 있고, 실무는 그 상충 중 어디에 서고 싶은지에 따라 선택합니다.
어떤 상황에 무엇을 고를까
- **정확도가 최우선, 지연 여유 있음**: Faster R-CNN 같은 2단계 또는 강한 백본의 검출기. 정밀한 인스턴스 분할이 필요하면 Mask R-CNN 계열.
- **실시간이 필수(감시·로봇·모바일)**: YOLO 계열 같은 1단계 검출기를 경량 백본·양자화와 함께.
- **후처리 튜닝을 줄이고 싶음**: DETR 계열의 엔드투엔드 접근. 다만 학습 비용·수렴을 고려.
- **정밀 마스크가 필요, 클래스는 유연하게**: 검출기로 대상을 찾고 SAM으로 마스크를 따는 조합.
- **새 클래스를 자주 다뤄야 함**: 오픈 보캐뷸러리 검출로 텍스트 지시. 단, 도메인 검증 필수.
정답은 하나가 아니며, 대개 여러 부품을 조합해 목표에 맞춥니다. 이것이 계보를 이해하는 실용적 이유입니다.
마무리
검출과 분할의 발전은 "사람이 설계한 부품을 하나씩 학습으로 흡수해 온 과정"으로 요약할 수 있습니다. 후보 생성은 RPN으로, 후처리는 집합 예측으로, 고정된 클래스는 텍스트 정렬 표현으로 대체되어 왔습니다. SAM은 여기에 "프롬프트로 무엇이든 분할한다"는 축을 더했습니다.
핵심은 특정 모델의 순간 순위가 아니라, 각 모델이 도입한 개념이 부품처럼 재조합되며 비전 시스템 전체를 유연하게 만들어 왔다는 점입니다. 새 SOTA가 나오더라도 이 계보의 사고방식을 이해하면 변화를 훨씬 빠르게 따라갈 수 있습니다.
마지막으로 실무자의 태도를 하나 강조하고 싶습니다. 벤치마크 리더보드의 최상단 모델을 무조건 가져오기보다, 자신의 문제가 요구하는 상충점(지연 대 정확도, 박스 대 마스크, 고정 클래스 대 자유 지시)을 먼저 명확히 하는 편이 낫습니다. 그 상충점이 정해지면, 이 글에서 정리한 계보 위에서 알맞은 부품을 고르고 조립하는 일이 훨씬 수월해집니다. 모델은 계속 바뀌지만, 상충을 다루는 사고방식은 오래 남습니다.
참고 자료
- DETR 논문 "End-to-End Object Detection with Transformers": [arxiv.org/abs/2005.12872](https://arxiv.org/abs/2005.12872)
- Segment Anything 논문: [arxiv.org/abs/2304.02643](https://arxiv.org/abs/2304.02643)
- Segment Anything 공식 페이지: [segment-anything.com](https://segment-anything.com)
- Faster R-CNN 논문: [arxiv.org/abs/1506.01497](https://arxiv.org/abs/1506.01497)
- Mask R-CNN 논문: [arxiv.org/abs/1703.06870](https://arxiv.org/abs/1703.06870)
- U-Net 논문: [arxiv.org/abs/1505.04597](https://arxiv.org/abs/1505.04597)
- Deformable DETR 논문: [arxiv.org/abs/2010.04159](https://arxiv.org/abs/2010.04159)
- SSD 논문: [arxiv.org/abs/1512.02325](https://arxiv.org/abs/1512.02325)
- Segment Anything 코드: [github.com/facebookresearch/segment-anything](https://github.com/facebookresearch/segment-anything)
퀴즈
2단계는 후보 영역을 먼저 생성한 뒤 각 후보를 분류합니다(예: Faster R-CNN). 1단계는 후보 생성 단계 없이 이미지에서 박스와 클래스를 한 번에 예측합니다(예: YOLO, SSD). 1단계가 보통 더 빠릅니다.
학습 시 헝가리안 매칭으로 예측과 정답을 1:1로 짝지어 중복 예측이 생기지 않도록 유도하기 때문입니다. 집합 예측 방식이라 겹치는 박스를 사후 제거할 필요가 없습니다.
시맨틱은 픽셀마다 클래스만 부여하고 개체를 구분하지 않습니다. 인스턴스는 개별 물체를 각각의 마스크로 분리합니다. 판옵틱은 배경(stuff)은 시맨틱하게, 물체(things)는 인스턴스로 다뤄 둘을 통합합니다.
점, 박스, 대략적 마스크 같은 프롬프트를 주면 클래스 이름 없이도 그 대상을 분할해 주는 방식입니다. 고정된 클래스 집합에 묶이지 않는 범용 분할을 지향합니다.
이미지 인코더는 무겁지만 한 이미지당 한 번만 계산해 임베딩을 재사용합니다. 마스크 디코더는 가벼워, 같은 이미지에서 여러 프롬프트를 빠르게 처리할 수 있습니다.
클래스를 고정된 정수 라벨이 아니라 텍스트 임베딩으로 다뤄, 학습 때 명시적으로 라벨링하지 않은 대상도 자유 텍스트로 지시해 찾는 것입니다. 텍스트-이미지 정렬 표현을 활용합니다.
SAM은 마스크를 만들 뿐 "이것이 무엇이다"라는 의미 라벨을 직접 붙이지 않습니다. 클래스 인식은 별도 모델이 필요하고, 이미지 인코더가 무거워 실시간·경량 환경에는 경량화가 요구됩니다.
정확도와 속도는 백본, 입력 해상도, 학습 데이터, 버전, 배포 하드웨어에 따라 크게 달라지기 때문입니다. 목표 지연 시간과 정확도 요구에 맞춰 계열을 고르는 것이 현실적입니다.
IoU는 예측 영역과 정답 영역의 겹침(교집합/합집합)을 재는 기본 척도입니다. mAP는 여러 신뢰도 임계값에서 정밀도-재현율 곡선 아래 면적을 클래스별로 평균한 값으로, 검출·인스턴스 분할의 대표 지표입니다.
서로 다른 해상도의 특징맵을 융합해 작은 물체(고해상도)와 큰 물체(저해상도)를 함께 다루도록 돕는 부분입니다. 다중 스케일 검출의 핵심 부품입니다.
벤치마크 데이터셋의 특성과 실제 배포 도메인이 다를 수 있기 때문입니다. 조명·각도·클래스 분포가 다르면 성능이 떨어지므로, 자신의 데이터로 다시 검증하는 것이 중요합니다.
검출기로 물체 박스를 얻고, 그 박스를 SAM의 프롬프트로 주어 정밀한 픽셀 마스크를 얻습니다. "무엇이 어디에"는 검출기가, "픽셀 경계"는 SAM이 담당하는 역할 분담입니다.
현재 단락 (1/195)
컴퓨터 비전에서 "무엇이 어디에 있는가"를 답하는 두 축이 객체 검출(object detection)과 이미지 분할(segmentation)입니다. 검출은 물체를 사각형 박스로 감...