🤖 AI/ML

컴퓨터 비전

Computer Vision

컴퓨터가 이미지/영상을 이해하는 AI 분야. 객체 인식, 세그멘테이션, 자율주행에 활용.

📖 상세 설명

컴퓨터 비전(Computer Vision)은 컴퓨터가 디지털 이미지나 비디오를 분석하고 이해하여 의미 있는 정보를 추출하는 인공지능 분야입니다. 인간의 시각 시스템을 모방하여 물체 인식, 장면 이해, 패턴 감지 등의 작업을 자동화합니다. 2024-2025년 현재 Vision Transformer(ViT), CLIP, SAM(Segment Anything Model) 등의 기반 모델이 컴퓨터 비전의 패러다임을 혁신하고 있습니다.

컴퓨터 비전의 역사는 1960년대 MIT의 Summer Vision Project에서 시작되었으며, 2012년 AlexNet의 ImageNet 대회 우승으로 딥러닝 기반 접근법이 주류가 되었습니다. 이후 ResNet, EfficientNet 등 CNN 아키텍처가 발전하다가, 2020년 이후 Transformer 아키텍처가 도입되면서 멀티모달 학습과 제로샷 인식이 가능해졌습니다. 특히 2023년 Meta의 SAM 발표 이후 세그멘테이션 작업의 일반화 능력이 크게 향상되었습니다.

핵심 작업으로는 이미지 분류(Classification), 객체 탐지(Object Detection), 시맨틱 세그멘테이션(Semantic Segmentation), 인스턴스 세그멘테이션(Instance Segmentation), 포즈 추정(Pose Estimation), 깊이 추정(Depth Estimation) 등이 있습니다. YOLOv8, DINO, Grounding DINO 같은 최신 모델들은 실시간 처리와 오픈 보캐뷸러리(open-vocabulary) 인식을 지원하여 다양한 도메인에 즉시 적용 가능합니다.

실무에서 컴퓨터 비전은 자율주행 차량, 의료 영상 진단, 제조업 품질 검사, 보안 감시, AR/VR, 농업 드론 등 거의 모든 산업에서 활용됩니다. 2025년 기준 Edge AI 칩셋(NVIDIA Jetson Orin, Apple Neural Engine)과 결합하여 디바이스 온-디바이스 추론이 일반화되고 있으며, 5G/6G 네트워크와 연동한 실시간 비전 애플리케이션이 확산되고 있습니다.

💻 코드 예제

YOLOv8을 사용한 객체 탐지와 OpenCV를 활용한 이미지 처리 예제입니다.

# YOLOv8을 사용한 객체 탐지 예제
# pip install ultralytics opencv-python

from ultralytics import YOLO
import cv2

# YOLOv8 모델 로드 (nano, small, medium, large, xlarge 선택 가능)
model = YOLO('yolov8n.pt')  # 가장 빠른 nano 모델

# 이미지 파일로 객체 탐지
image_path = 'sample.jpg'
results = model(image_path)

# 결과 시각화 및 저장
for result in results:
    # 바운딩 박스 정보
    boxes = result.boxes
    for box in boxes:
        cls = int(box.cls[0])  # 클래스 인덱스
        conf = float(box.conf[0])  # 신뢰도
        label = model.names[cls]  # 클래스 이름
        print(f"탐지: {label} (신뢰도: {conf:.2f})")

    # 결과 이미지 저장
    result.save(filename='result.jpg')

# 실시간 웹캠 객체 탐지
cap = cv2.VideoCapture(0)
while cap.isOpened():
    ret, frame = cap.read()
    if not ret:
        break

    # 추론 수행
    results = model(frame, verbose=False)
    annotated_frame = results[0].plot()  # 결과 시각화

    cv2.imshow('YOLOv8 Detection', annotated_frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()

Transformers 라이브러리를 활용한 이미지 분류 예제입니다.

# Vision Transformer를 사용한 이미지 분류
# pip install transformers torch pillow

from transformers import ViTImageProcessor, ViTForImageClassification
from PIL import Image
import torch

# ViT 모델과 프로세서 로드
processor = ViTImageProcessor.from_pretrained('google/vit-base-patch16-224')
model = ViTForImageClassification.from_pretrained('google/vit-base-patch16-224')

# 이미지 로드 및 전처리
image = Image.open('cat.jpg')
inputs = processor(images=image, return_tensors="pt")

# 추론 수행
with torch.no_grad():
    outputs = model(**inputs)
    logits = outputs.logits

# Top-5 예측 결과
probs = torch.softmax(logits, dim=-1)
top5_probs, top5_indices = torch.topk(probs, 5)

print("Top-5 예측 결과:")
for prob, idx in zip(top5_probs[0], top5_indices[0]):
    label = model.config.id2label[idx.item()]
    print(f"  {label}: {prob.item():.4f}")

📊 성능 & 비용

2025년 1월 기준 주요 컴퓨터 비전 모델 비교입니다.

모델 COCO mAP 속도 (FPS) 파라미터 용도
YOLOv8-nano 37.3% ~600 FPS 3.2M Edge/모바일
YOLOv8-large 52.9% ~100 FPS 43.7M 서버 추론
DINO (ViT-L) 63.0% ~15 FPS 304M 고정밀 분석
SAM (ViT-H) - ~10 FPS 641M 세그멘테이션

클라우드 비전 API 가격 비교 (2025년 1월 기준):

서비스 1,000건 가격 무료 티어 주요 기능
Google Cloud Vision $1.50 1,000건/월 OCR, 라벨링, 얼굴
AWS Rekognition $1.00 5,000건/월 (12개월) 객체, 텍스트, 얼굴
Azure Computer Vision $1.00 5,000건/월 분석, OCR, 썸네일

🗣️ 실무에서 이렇게 말하세요

💬 회의에서
"제조 라인 불량 검출에 YOLOv8을 적용했더니 검사 시간이 2초에서 0.1초로 단축되었고, 불량 검출률도 95%에서 99.2%로 향상되었습니다. Edge GPU에서 실시간 처리가 가능해서 추가 인프라 비용도 없습니다."
💬 면접에서
"자율주행 프로젝트에서 BEV(Bird's Eye View) 변환과 멀티카메라 융합을 구현했습니다. 6대 카메라 입력을 3D 공간으로 통합하여 객체 추적 정확도를 40% 개선했고, TensorRT로 최적화하여 30 FPS 실시간 처리를 달성했습니다."
💬 기술 토론에서
"SAM 같은 파운데이션 모델이 나오면서 도메인별 데이터 라벨링 비용이 크게 줄었어요. 프롬프트 기반 세그멘테이션으로 의료 영상에서도 사전 학습 없이 바로 적용 가능하고, 파인튜닝하면 전문가 수준의 정확도가 나옵니다."

⚠️ 흔한 실수 & 주의사항

학습 데이터와 실제 환경의 차이 무시

COCO나 ImageNet으로 학습된 모델을 산업 현장에 바로 적용하면 성능이 크게 저하됩니다. 조명, 각도, 배경이 다른 실제 환경 데이터로 파인튜닝이 필수입니다.

모델 크기와 추론 환경 불일치

서버용 대형 모델을 Edge 디바이스에 배포하려다 실패하는 경우가 많습니다. 타겟 하드웨어의 메모리, 연산 능력을 먼저 확인하고 적절한 모델 크기를 선택하세요.

올바른 접근법

프로젝트 초기에 타겟 환경에서 벤치마크를 수행하고, 정확도와 속도의 트레이드오프를 명확히 정의하세요. ONNX, TensorRT, CoreML 등 추론 최적화 도구를 활용하여 배포 환경에 맞게 모델을 변환하세요.

🔗 관련 용어

📚 더 배우기