딥러닝 기반 Computer Vision
분류·검출·분할 문제 정의부터 YOLO 파이프라인까지 딥러닝 CV를 역할 분리로 정리
Posted
By okorion
딥러닝 기반 Computer Vision
TL;DR
- 딥러닝 CV의 핵심은 모델 종류가 아니라 문제 유형의 구분이다.
- 분류·검출·분할은 출력 형태와 평가 기준이 다르다.
- CNN은 “판별기”가 아니라 특징 추출기다.
- 데이터 파이프라인이 성능의 절반 이상을 결정한다.
- YOLO는 속도를 위해 단일 패스 검출을 선택한 구조다.
- 실무에서는 전통 CV와 DL을 전·후처리로 결합해야 한다.
1. CV 관점에서 필요한 ML/DL 최소 개념
문제 유형의 차이
- 분류(Classification): 이미지 → 하나의 라벨
- 검출(Detection): 이미지 → (bbox, class, score)
- 분할(Segmentation): 이미지 → 픽셀 단위 라벨
Metric과 데이터 불균형
- accuracy는 대부분 쓸모없다
- 검출/분류에서는:
- precision: 거짓 양성 억제
- recall: 놓침 억제
- F1: 균형 지표
- 불균형 데이터에서는 recall 저하가 먼저 발생
2. 개념 지도: 딥러닝 기반 CV 구조
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
딥러닝 기반 CV
├─ 문제 정의
│ ├─ 분류
│ ├─ 검출
│ └─ 분할
├─ 모델
│ ├─ CNN (feature extractor)
│ └─ Detection Head
├─ 데이터
│ ├─ train / val / test
│ └─ augmentation
└─ 시스템
├─ 전처리 (CV)
├─ 추론 (DL)
└─ 후처리 (CV/Tracking)
3. CNN은 무엇을 하는가 (직관 중심)
CNN은 “이미지를 이해”하지 않는다. 국소 패턴을 점점 추상화할 뿐이다.
- 초기: 엣지/코너
- 중간: 텍스처/부품
- 후반: 객체 수준 패턴
👉 그래서 CNN은 전통 CV의 자동화된 특징 추출기다.
4. MNIST / CIFAR의 진짜 의미
- 목적: 모델 구조와 학습 파이프라인 검증
실무와 다른 점:
- 데이터 깨끗함
- 라벨 명확
실무 핵심은:
- train/val 분리
- overfitting 감시
- augmentation 전략
전이학습 체크포인트
- 데이터 1k 미만 → 필수
- backbone freeze → head만 학습
- domain gap 크면 성능 급락
5. YOLO v3: 왜 등장했는가
기존 문제
- Region Proposal 기반 → 느림
- 다단계 파이프라인 → 복잡
YOLO 선택
- 단일 패스
- grid 기반 예측
- 속도 우선 설계
출력 해석
- bbox (x, y, w, h)
- confidence
- class probability
- NMS로 중복 제거
6. 문제 유형별 추천 접근 표
| 문제 | 추천 접근 | 이유 |
|---|---|---|
| 단일 객체 분류 | CNN | 단순 |
| 다중 객체 위치 | YOLO | 속도 |
| 정밀 경계 | Segmentation | 픽셀 단위 |
| 실시간 추적 | Detection + Tracking | 안정성 |
| 단순 환경 | 전통 CV | 빠름 |
7. YOLO 추론 파이프라인 (의사코드)
1
2
3
4
5
6
7
입력 이미지
→ resize / normalize
→ DNN forward
→ raw detections
→ confidence threshold
→ NMS
→ bbox + class 출력
최소 실행 코드 (Mock 구조)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import numpy as np
def yolo_inference_mock(image):
"""
입력: image (H, W, 3)
출력: detections list
"""
H, W, _ = image.shape
detections = [
{"bbox": [0.3*W, 0.3*H, 0.4*W, 0.4*H],
"class": "object",
"score": 0.85}
]
return detections
img = np.zeros((416, 416, 3), dtype=np.uint8)
print(yolo_inference_mock(img))
해석 포인트
- 실제 YOLO도 구조는 동일
- 성능 차이는 전처리·threshold·NMS에서 발생
8. 전통 CV + DL 결합 구조
1
2
3
4
5
입력 프레임
→ 전통 CV 전처리 (resize, ROI)
→ DL 추론 (YOLO)
→ 후처리 (NMS, smoothing)
→ 추적 (tracking)
- DL은 결정
- CV는 안정화
9. 실무 체크리스트 (12+)
- 라벨 정의 명확한가
- 클래스 불균형 존재?
- val set 누수 없음?
- metric 적절?
- augmentation 과도?
- input scale 일관?
- threshold 근거 있음?
- NMS 파라미터 검증?
- FPS 측정 분리?
- 추론 실패 대비?
- 배포 환경 고려?
- 재학습 전략?
- 로그/모니터링?
10. 캡스톤으로 이어지는 최소 프로젝트 설계
목표: 실시간 객체 검출 + 추적
- 입력: 비디오
- 전처리: resize + grayscale 보조
- 검출: YOLO
- 유지: tracking
- 출력: bbox + ID
👉 이 구조 하나면 CV 전 범위를 관통한다.
섹션 요약
- 딥러닝 CV는 역할 분리가 핵심이다.
- YOLO는 만능이 아니라 속도 최적화 도구다.
- 전통 CV와 결합할 때 실무 품질이 나온다.
This post is licensed under CC BY 4.0 by the author.
