테마 선택

📚 지식 노트

AI·하드웨어·주변기기·게임·컴퓨터 시스템·이론 컴퓨터 과학·수학·개발과 운영·보안·응용 분야에 대해 알아 두면 좋은 내용을 정리한 노트다. 위에서 분야를 고르고 아래에서 노트를 고른다.

컴퓨터 비전

컴퓨터가 사진과 영상에서 무엇이 어디에 있는지 알아내는 방법을, 고전 필터와 특징점에서 CNN·탐지·분할·3D 복원, 그리고 CLIP 같은 기반 모델까지 작은 예를 직접 계산한 그림으로 따라간다.

목차 (13)
  1. 이미지는 숫자 배열이다
  2. 특징점: 모서리, SIFT, ORB
  3. 이미지 분류: ImageNet에서 ViT까지
  4. 객체 탐지: 무엇이 어디에
  5. 분할: 픽셀마다 이름 붙이기
  6. 평가: IoU와 mAP
  7. 3D 비전: 사진에서 깊이와 형태로
  8. 영상과 추적
  9. 자기 지도 학습과 기반 모델
  10. 이미지를 읽는 언어 모델
  11. 응용과 한계
  12. 흔한 오해
  13. 핵심 논문

이미지는 숫자 배열이다

컴퓨터에게 사진은 픽셀 밝기의 2차원 배열이다. 컬러 사진은 빨강·초록·파랑 세 장이 겹친 높이 × 너비 × 3 배열이고, 값은 보통 0~255다. 픽셀과 색 모델, 블러 같은 기본 처리는 그래픽 기초 노트, 센서가 빛을 숫자로 바꾸는 과정은 카메라 노트에 있다. 컴퓨터 비전의 일은 이 숫자 더미에서 "고양이가 왼쪽 위에 있다" 같은 뜻을 꺼내는 것이다.

딥러닝 이전의 비전은 사람이 설계한 필터로 시작했다. 3×3 필터를 이미지 위로 밀며 이웃 픽셀에 가중치를 곱해 더하는 연산(합성곱)으로, 흐리게 하거나 날카롭게 하거나 경계를 찾는다. 소벨(Sobel) 필터는 오른쪽 열에서 왼쪽 열을 빼 가로 방향 밝기 변화 Gx를, 아래 줄에서 위 줄을 빼 세로 방향 변화 Gy를 잰다. 두 값의 크기 √(Gx² + Gy²)가 크면 경계, 방향 atan2(Gy, Gx)는 경계가 뻗은 쪽에 수직이다. 캐니(Canny) 경계 검출기는 여기에 노이즈 제거, 가는 선으로 깎기, 두 문턱으로 이어 붙이기를 더한 것이다.

6×6 입력에 소벨 필터를 적용해 4×4 Gx, Gy와 경계 크기를 구한 그림. 밝은 사각형의 왼쪽과 위쪽 가장자리에서만 값이 크다입력 6×6111111111111119999119999119999119999Gx (가로 변화)8800242400323200323200필터−101−202−101Gy (세로 변화)8243232824323200000000필터−1−2−1000121크기 |G|1125323225343232323200323200입력의 안쪽 4×4 자리마다 3×3 이웃에 필터를 곱해 더한다(가장자리 한 줄은 버림).색칠: 입력은 밝은 칸, |G|는 25 이상(경계)인 칸.
소벨 경계. 밝은 사각형의 왼쪽 가장자리에서는 Gx만, 위쪽 가장자리에서는 Gy만 크고, 모서리 근처에서는 둘 다 반응한다. 사각형 안처럼 평평한 곳은 0이다.

CNN의 첫 층이 학습해 내는 필터도 이런 경계·방향 검출기와 닮았다. 차이는 사람이 고르지 않고 데이터에서 배운다는 것, 그리고 층을 쌓아 경계 → 무늬 → 부품 → 물체로 올라간다는 것이다(딥러닝 노트의 합성곱 절).

특징점: 모서리, SIFT, ORB

두 사진을 이어 붙이거나(파노라마), 카메라가 어떻게 움직였는지 알아내려면 두 사진에서 같은 점을 찾아야 한다. 아무 점이나 되지는 않는다. 하늘 한가운데는 이웃과 구별이 안 되고, 직선 경계 위의 점은 경계를 따라 미끄러져도 똑같아 보인다. 어느 쪽으로 밀어도 모습이 바뀌는 모서리가 좋은 특징점이다.

해리스(Harris) 코너 검출은 이 직관을 계산으로 옮긴다. 작은 창 안의 기울기로 2×2 구조 텐서를 만들고 두 고유값을 본다. 둘 다 작으면 평평한 곳, 하나만 크면 경계, 둘 다 크면 모서리다. 고유값을 직접 구하는 대신 R = det − k·trace²로 판정한다.

평평한 조각, 경계 조각, 모서리 조각의 해리스 반응. 모서리에서만 두 고유값이 모두 크고 R이 양수다평평한 곳λ₁ = 0, λ₂ = 0R = 0평평 → 변화 없음경계λ₁ = 96, λ₂ = 0R = −461경계 → 한 방향만 변함모서리λ₁ = 80, λ₂ = 48R = 3021모서리 → 특징점R = λ₁λ₂ − 0.05(λ₁ + λ₂)². 창을 어느 쪽으로 밀어도 밝기가 변해야 R이 커진다.
해리스 반응. 경계는 고유값 하나만 커서 R이 음수, 모서리는 두 고유값이 모두 커서 R이 양수다.
  • SIFT(2004): 이미지를 여러 크기로 흐리게 한 차이(DoG)에서 특징점을 찾아 크기가 달라도 같은 점을 잡고, 주변 기울기 방향으로 회전을 맞춘다. 주변을 4×4칸으로 나눠 칸마다 8방향 히스토그램을 쌓은 128차원 벡터가 묘사자다. 특허가 2020년에 끝나 지금은 OpenCV 기본 모듈에 들어 있다.
  • ORB(2011): 빠른 FAST 모서리 검출과, 점 쌍의 밝기를 비교해 0/1을 늘어놓은 256비트 이진 묘사자(BRIEF)를 회전에 맞게 고친 것이다. 비교가 XOR와 비트 세기(해밍 거리)라 휴대 기기와 SLAM(ORB-SLAM)에서 널리 쓴다.
  • 짝을 지은 뒤에는 틀린 짝이 섞여 있으므로, RANSAC으로 무작위 몇 쌍에서 변환을 추정하고 가장 많은 짝이 동의하는 것을 고른다.

지금은 SuperPoint·LightGlue처럼 학습한 특징점과 매칭기가 고전 방법을 앞서지만, "구별되는 점을 찾고 → 묘사하고 → 짝짓고 → 기하로 걸러낸다"는 뼈대는 같다.

이미지 분류: ImageNet에서 ViT까지

이미지 분류는 사진 한 장에 라벨 하나를 붙이는 과제다. 2010년대 비전의 흐름은 ImageNet 대회(ILSVRC)가 만들었다. 1000개 분류, 학습 사진 약 120만 장이다. 처음 두 해는 SIFT 같은 수작업 특징을 모아 SVM으로 분류하는 방법이 우승했다. 2012년 AlexNet이 GPU로 학습한 CNN으로 top-5 오류율을 25.8%에서 15.3%로 낮추자 판이 바뀌었다. 이후 해마다 망이 깊어졌고(VGG 19층, GoogLeNet 22층, ResNet 152층), 2015년 ResNet의 3.57%는 같은 과제를 사람이 풀어 잰 5.1%보다 낮았다.

2010년부터 2015년까지 ImageNet 대회 우승 top-5 오류율 막대그래프. 2012년부터 CNN이 우승했고 2015년 ResNet이 사람 수치 5.1%보다 낮아졌다0%10%20%30%28.22010NEC-UIUC25.82011XRCE15.32012AlexNet11.72013Clarifai6.72014GoogLeNet3.572015ResNet사람 5.1%색칠 = CNNtop-5 오류율: 정답이 모델의 상위 5개 추측 안에 없는 비율(1000개 분류)
ILSVRC 분류 부문 우승 팀의 top-5 오류율. 2012년에 CNN으로 바뀌며 크게 꺾였다. 사람 수치는 한 사람이 일부 시험 사진을 풀어 잰 것이라 '사람을 넘었다'는 말은 이 과제에 한정된다.

2020년 ViT(Vision Transformer)는 합성곱을 버리고 이미지를 16×16 조각으로 잘라(224×224 사진이면 196조각) 낱말처럼 트랜스포머에 넣었다. CNN이 가진 "가까운 픽셀끼리 본다"는 가정이 없어 데이터가 적으면 CNN보다 못하지만, 수억 장 규모에서는 앞선다. 이후 데이터 늘리기·증류로 적은 데이터에서도 학습되게 한 DeiT, 반대로 CNN을 트랜스포머식으로 다듬은 ConvNeXt가 나와, 지금은 둘이 섞인 구조와 ViT가 함께 쓰인다. 트랜스포머와 어텐션은 딥러닝 노트에 있다.

객체 탐지: 무엇이 어디에

탐지는 물체마다 상자(bounding box)와 클래스를 낸다. 물체가 몇 개인지 모르고 크기도 제각각이라 분류보다 어렵다. 방법은 크게 세 갈래다.

  • 2단계: 먼저 "물체가 있을 법한 곳"을 수백~수천 개 제안하고, 후보마다 분류하고 상자를 다듬는다. R-CNN은 후보를 따로 잘라 CNN에 넣어 느렸고, Faster R-CNN은 특징 지도를 한 번만 계산하고 제안까지 신경망(RPN)으로 했다.
  • 1단계: YOLO·SSD·RetinaNet은 특징 지도의 칸마다 곧장 클래스와 상자를 예측한다. 한 번의 순전파라 빠르다. 대신 후보 대부분이 배경이라 학습이 쉬운 배경에 끌려가는데, RetinaNet의 초점 손실(focal loss)이 이 불균형을 줄였다.
  • 앵커: 칸마다 미리 정한 크기·비율의 기준 상자 몇 개를 두고, 모델은 상자를 처음부터 맞히는 대신 앵커에서 얼마나 옮기고 늘릴지를 예측한다. FCOS·CenterNet 같은 앵커 없는 방법은 칸에서 물체 경계까지의 거리나 중심점을 직접 예측한다.
  • DETR: 정해진 수의 질의(예: 100개)가 트랜스포머로 이미지를 보고 각자 물체 하나 또는 "없음"을 낸다. 학습 때 예측과 정답을 1:1로 짝지으므로 중복 상자가 생기지 않아 앵커도 NMS도 필요 없다.
2단계 탐지기, 1단계 탐지기, DETR의 처리 흐름 비교2단계: R-CNN → Faster R-CNN이미지CNN 특징후보 영역제안(RPN)후보마다 분류+ 상자 보정NMS로겹침 정리1단계: YOLO · SSD · RetinaNet이미지CNN 특징격자 칸·앵커마다한 번에 예측클래스 점수+ 상자 좌표NMS로겹침 정리트랜스포머: DETR이미지CNN·ViT 특징질의 N개가어텐션으로 봄질의마다물체 하나·없음정답과 1:1 매칭NMS 없음
탐지기의 세 갈래. 2단계는 후보를 고른 뒤 다시 보고, 1단계는 한 번에 예측하며, DETR은 질의마다 물체 하나를 맡는다.

앵커나 칸 기반 탐지기는 같은 물체 근처의 여러 칸이 모두 반응하므로 겹친 상자를 정리해야 한다. 이것이 비최대 억제(NMS)다. 점수가 가장 높은 상자를 남기고, 그것과 많이 겹치는(IoU가 문턱을 넘는) 상자를 지우기를 되풀이한다. 겹침을 재는 IoU는 아래 평가 절에서 다룬다.

NMS 단계 그림: 겹친 후보 상자 중 점수가 높은 것을 남기고 많이 겹친 것을 지운다ABCDEF점수 순 후보A 0.92대기← 이번에 남김남김남김남김D 0.88대기대기← 이번에 남김남김남김B 0.81대기지움 · A와 0.70지움 · A와 0.70지움 · A와 0.70지움 · A와 0.70C 0.64대기지움 · A와 0.69지움 · A와 0.69지움 · A와 0.69지움 · A와 0.69E 0.57대기대기지움 · D와 0.64지움 · D와 0.64지움 · D와 0.64F 0.35대기대기대기← 이번에 남김← 이번에 남김굵은 파랑 = 남김빨간 점선 = 지움
1 / 5

탐지기가 사람 두 명 근처에 상자 6개를 냈다. 같은 사람을 여러 상자가 가리킨다. 점수 순으로 줄 세운다.

비최대 억제(NMS, IoU 문턱 0.5). 문턱을 낮추면 붙어 선 두 사람 중 하나가 지워지고, 높이면 한 사람에 상자가 여럿 남는다.

위 탐지기들은 학습 때 정한 클래스(COCO라면 80종)만 찾는다. 오픈 어휘 탐지는 클래스 목록 대신 글을 받아 "빨간 우산을 든 사람"처럼 처음 보는 이름이나 설명으로 찾게 한다. Grounding DINO(2023)는 트랜스포머 탐지기 DINO에 글과 그림의 특징을 섞는 단계를 더해, COCO 학습 데이터 없이 COCO에서 AP 52.5를 냈다. 아래의 CLIP처럼 글과 그림을 한 공간에 놓는 발상이 탐지로 넘어온 것이다.

NMS는 사람이 붐비는 장면에서 붙어 선 두 사람을 하나로 지워 버리는 약점이 있다. 그래서 점수를 깎기만 하는 Soft-NMS나, 아예 NMS가 없는 DETR 계열이 나왔다.

분할: 픽셀마다 이름 붙이기

상자 대신 물체의 정확한 모양이 필요하면 픽셀마다 라벨을 붙이는 분할(segmentation)을 한다. 자율 주행에서 도로와 인도를 가르거나, 의료 영상에서 종양 경계를 그릴 때다.

  • 의미 분할: 픽셀마다 종류만 붙인다. 사람 둘이 붙어 있으면 한 덩어리가 된다.
  • 인스턴스 분할: 사람·차처럼 셀 수 있는 물체(thing)를 하나하나 따로 칠한다. Mask R-CNN이 탐지한 상자마다 마스크를 낸다.
  • 파놉틱 분할: 둘을 합쳐, 도로·하늘 같은 셀 수 없는 영역(stuff)까지 모든 픽셀에 종류와 개체 번호를 준다.
같은 장면을 의미 분할, 인스턴스 분할, 파놉틱 분할로 칠한 비교의미 분할픽셀마다 종류만: 사람·도로·하늘두 사람이 한 덩어리인스턴스 분할셀 수 있는 물체만, 하나하나도로·하늘은 칠하지 않음파놉틱 분할모든 픽셀에 종류 + 개체 번호둘을 합친 꼴
같은 장면의 세 가지 분할. 파랑과 빨강은 서로 다른 사람, 회색은 도로다.

분할 망은 입력과 같은 크기의 출력을 내야 한다. FCN은 분류 CNN의 마지막 층을 합성곱으로 바꿔 작은 클래스 지도를 내고 키웠다. U-Net은 해상도를 줄이며 "무엇"을 파악하는 인코더와 다시 키우며 "어디"를 되살리는 디코더를, 같은 해상도끼리 건너뛰기 연결로 이었다. 줄이는 동안 잃은 경계 세부를 건너뛰기 연결이 넘겨 주어, 적은 의료 영상으로도 경계가 정확했다. 이 U자 구조는 이미지 생성의 확산 모델에서도 노이즈를 걷어 내는 망으로 쓰였다.

U-Net 구조: 왼쪽 인코더가 해상도를 줄이고 오른쪽 디코더가 키우며, 같은 높이끼리 건너뛰기 연결로 이어진다256²128²64²32²가장 작지만 뜻이 가장 짙은 특징인코더: 줄이며 "무엇"디코더: 키우며 "어디"점선 = 건너뛰기 연결(경계 같은 세부를 넘김)출력은 입력과 같은 크기의 픽셀별 클래스 지도
U-Net. 왼쪽이 줄이고 오른쪽이 키우며, 점선 건너뛰기 연결이 같은 높이의 특징을 디코더로 넘긴다.

2023년 SAM(Segment Anything)은 클래스를 정해 두지 않고, 사용자가 찍은 점이나 상자 하나를 프롬프트로 받아 "그 물체"의 마스크를 낸다. 이미지 1100만 장에서 모델과 사람이 함께 만든 마스크 11억 개로 학습해, 처음 보는 종류의 물체도 분할한다. 2024년 SAM 2는 앞 프레임의 기억을 두어 영상에서 같은 물체를 계속 따라 분할한다. 라벨링 도구, 사진 편집의 "물체 선택"이 이런 모델을 쓴다.

평가: IoU와 mAP

탐지가 맞았는지는 예측 상자와 정답 상자가 얼마나 겹치는지로 정한다. IoU(Intersection over Union)는 겹친 넓이를 두 상자를 합친 넓이로 나눈 값이다. 완전히 같으면 1, 안 겹치면 0이다. 보기에 꽤 겹쳐 보여도 IoU는 생각보다 낮게 나온다. 아래 예는 0.46다.

정답 상자와 예측 상자가 겹친 부분을 칠하고 IoU를 계산한 그림정답 120×100예측 120×90겹침겹친 넓이 = 7,200합친 넓이 = 12,000 + 10,800 − 7,200= 15,600IoU = 7,200 ÷ 15,600 = 0.46PASCAL VOC는 0.5 이상이면 맞힘으로 친다.COCO는 0.5~0.95를 0.05 간격으로 모두 재 평균한다.이 예측은 0.5 기준으로도 틀린 것이 된다.
IoU. 위치와 크기가 조금씩 어긋나도 IoU는 빠르게 떨어진다.

탐지기는 점수가 붙은 상자를 많이 내므로, 점수 문턱을 바꿔 가며 정밀도와 재현율을 함께 본다. 점수가 높은 순으로 탐지를 하나씩 받아들이며, 정답(IoU 0.5 이상으로 아직 짝이 없는 정답 상자와 겹침)이면 맞힘, 아니면 헛경보로 센다. 그러면 정밀도(받아들인 것 중 맞힘 비율)와 재현율(정답 중 찾은 비율)이 순위마다 하나씩 찍힌다. 정밀도와 재현율 자체는 머신러닝 노트의 평가 절에 있다.

이 지그재그 곡선을 "그 재현율 이상에서 얻을 수 있는 최대 정밀도"로 펴서 계단으로 만들고, 그 아래 넓이를 잰 것이 AP(평균 정밀도)다. 클래스마다 AP를 구해 평균하면 mAP다. COCO 벤치마크는 IoU 문턱을 0.5부터 0.95까지 0.05 간격 10개로 바꿔 가며 잰 값까지 평균해, 상자를 대충 맞히는 모델보다 정확히 맞히는 모델에 점수를 더 준다. 논문의 "AP50"은 IoU 0.5 한 문턱의 값이다.

점수 순 탐지 10개의 정밀도–재현율 곡선과 보간한 계단, 그 아래 넓이인 AP000.50.511재현율정밀도AP = 0.662순위정답?정밀도재현율1✓1.000.172✓1.000.333✗0.670.334✓0.750.505✗0.600.506✓0.670.677✗0.570.678✗0.500.679✓0.560.8310✗0.500.83정답 물체 6개, 1개는 끝내 못 찾음
점수 순 탐지 10개의 정밀도–재현율. 점선이 실제 값, 파란 계단이 보간한 정밀도이고, 칠한 넓이가 AP = 0.662다.

3D 비전: 사진에서 깊이와 형태로

사진 한 장은 3차원 세계를 평면에 눌러 담은 것이라 깊이 정보가 사라진다. 되살리는 가장 오래된 방법은 사람 눈처럼 두 카메라를 쓰는 스테레오다. 나란히 놓은 두 카메라로 같은 점을 보면, 가까운 점일수록 두 영상에서 가로 위치가 많이 어긋난다. 이 어긋남이 시차(disparity) d이고, 초점 거리 f(픽셀)와 두 카메라 사이 거리 B를 알면 깊이는 Z = f·B ÷ d다.

두 카메라가 같은 점을 볼 때 영상 속 위치가 어긋나는 시차와, 시차에 따른 깊이·오차 표왼쪽 카메라오른쪽 카메라점 P (거리 Z)기준선 B = 12cm영상면시차 d = 왼쪽 영상 위치 − 오른쪽 영상 위치Z = f · B ÷ df = 700px, B = 12cm시차 d깊이 Z1px 틀리면84px1m±1.2cm42px2m±4.8cm21px4m±19.0cm8.4px10m±1.19m멀수록 시차가 작아져 오차가 거리²로 는다
스테레오 깊이. 시차가 반으로 줄면 거리는 두 배다. 시차를 1픽셀 잘못 재면 1m에서는 1.2cm, 10m에서는 1.19m를 틀린다.

시차를 1픽셀 틀릴 때의 깊이 오차는 ΔZ ≈ Z² ÷ (f·B)로, 거리의 제곱에 비례한다. 그래서 멀리까지 정확히 재려면 기준선을 넓히거나 해상도를 높인다. 두 영상을 미리 정렬(rectification)해 두면 같은 점이 같은 가로줄에 오므로, 짝 찾기가 줄 하나를 따라 훑는 1차원 문제가 된다. 레이저·ToF처럼 빛을 쏘아 재는 방법과의 비교는 거리·깊이 측정 노트에 있다. 요즘은 사진 한 장에서 깊이를 바로 추정하는 단안 깊이 모델(MiDaS, Depth Anything)도 쓸 만해졌는데, 상대적인 앞뒤는 잘 맞히지만 절대 거리는 단서가 부족해 스테레오나 센서보다 불확실하다.

  • SfM(Structure from Motion): 여러 장의 사진에서 특징점을 짝지어, 각 사진을 찍은 카메라 위치와 점들의 3차원 좌표를 함께 푼다. 모든 점의 재투영 오차를 한꺼번에 줄이는 번들 조정(bundle adjustment)이 핵심이다. COLMAP 같은 도구가 이 일을 하고, 이어서 MVS(다시점 스테레오)가 촘촘한 점구름과 메시를 만든다.
  • NeRF(2020): 장면을 "3차원 위치와 보는 방향 → 밀도와 색"을 내는 작은 MLP로 나타낸다. 카메라 광선을 따라 점을 뽑아 색을 쌓는 볼륨 렌더링으로 사진을 다시 그려 보고, 실제 사진과의 차이로 학습한다. 반사까지 사실적이지만 처음에는 학습에 하루, 한 장 그리기에 수십 초가 걸렸다.
  • 3D 가우시안 스플래팅(2023): 장면을 위치·모양·색·투명도를 가진 수백만 개의 3차원 가우시안 덩어리로 나타내고, GPU 래스터화로 화면에 뿌려 그린다. NeRF 수준의 화질을 실시간으로 그려 빠르게 퍼졌다. 래스터화와 볼륨 렌더링의 원리는 컴퓨터 그래픽스 노트에 있다.

영상과 추적

영상은 사진의 연속이지만 프레임 사이의 관계가 정보다. 광학 흐름(optical flow)은 픽셀마다 다음 프레임에서 어디로 움직였는지를 구한다. 고전 루카스–카나데(Lucas–Kanade)는 작은 창 안에서 밝기가 그대로라는 가정으로 움직임을 풀고, RAFT 같은 학습 모델은 모든 픽셀 쌍의 유사도를 보고 흐름을 되풀이해 다듬는다. 영상 압축의 움직임 보상, 영상 안정화, 프레임 보간이 이것을 쓴다.

여러 물체를 따라가는 다중 객체 추적은 대개 "매 프레임 탐지하고, 앞 프레임의 궤적과 잇는다"(tracking-by-detection)로 푼다. SORT는 칼만 필터로 각 궤적의 다음 상자를 예측하고, 이번 프레임 탐지와 IoU로 짝짓는다. 짝이 없는 탐지는 새 궤적이 되고, 몇 프레임 동안 짝이 없는 궤적은 지운다. DeepSORT는 겉모습 특징을 더해 가렸다 나타난 물체를 다시 알아보고, ByteTrack은 점수가 낮은 탐지도 버리지 않고 남은 궤적과 한 번 더 이어 가림에 강해졌다.

앞 프레임 궤적(점선)과 이번 프레임 탐지(실선)를 IoU 표로 짝지은 그림궤적 1궤적 2abc점선 = 앞 프레임 궤적, 실선 = 이번 프레임 탐지IoU 표abc궤적 10.000.690.00궤적 20.580.000.00궤적 1 ← b (IoU 0.69)궤적 2 ← a (IoU 0.58)c: 짝 없음 → 새 궤적 3
추적-탐지 연결. 앞 프레임 궤적(점선)과 이번 탐지(실선)의 IoU 표에서 큰 쌍부터 짝짓는다. SORT는 헝가리안 알고리즘으로 전체 최적 짝을 구하는데, 이 예에서는 결과가 같다.

행동 인식처럼 영상 전체의 뜻을 알아야 하는 과제는 시간 축까지 합성곱하는 3D CNN이나, 프레임 조각을 시공간 토큰으로 넣는 영상 트랜스포머를 쓴다. 영상은 데이터가 크고 프레임끼리 비슷한 정보가 많아, 몇 프레임만 뽑아 보는 것이 보통이다.

자기 지도 학습과 기반 모델

ImageNet 같은 라벨 데이터는 만들기 비싸다. 자기 지도 학습은 라벨 없이 데이터 자체에서 문제를 만들어 배운다. 같은 사진을 다르게 자르고 색을 바꾼 두 장은 가깝게, 다른 사진은 멀게 놓는 대조 학습(SimCLR, MoCo), 사진 조각의 75%를 가리고 되살리게 하는 마스크 학습(MAE), 학생 망이 선생 망의 출력을 따라 하게 하는 자기 증류(DINO)가 대표적이다. DINOv2(2023)는 골라 모은 사진 1억 4천만 장으로 이렇게 학습한 ViT의 특징이, 미세 조정 없이 위에 얇은 층만 얹어도 분류·분할·깊이 추정에 두루 통한다는 것을 보였다.

CLIP(2021)은 인터넷의 사진–설명 4억 쌍으로 이미지 인코더와 텍스트 인코더를 함께 학습했다. 한 배치 안에서 짝이 맞는 사진–문장의 임베딩은 가깝게, 나머지는 멀게 한다. 학습이 끝나면 "a photo of a cat", "a photo of a dog" 같은 문장을 클래스 대신 쓰는 제로샷 분류가 된다. 사진과 각 문장의 코사인 유사도에 배율을 곱해 소프트맥스하면 끝이다. 따로 학습하지 않고도 ImageNet에서 지도 학습한 ResNet-50과 비슷한 정확도를 냈다.

고양이 사진과 문장 세 개의 코사인 유사도와, 배율 100을 곱한 소프트맥스 확률사진 1장 → 이미지 인코더 → 벡터 · 문장 3개 → 텍스트 인코더 → 벡터후보 문장코사인 유사도확률 (× 100 → 소프트맥스)"a photo of a cat"0.3199.3%"a photo of a dog"0.260.7%"a photo of a car"0.10<0.1%유사도 0.31 대 0.26: 차이는 작지만 ×100 하면 로짓 차이가 4.9, 확률은 크게 갈린다.
CLIP식 제로샷 분류(4차원 장난감 벡터). 유사도 차이는 작아도 배율 100을 곱한 뒤 소프트맥스를 거치면 확률이 한쪽으로 쏠린다.

CLIP의 이미지–문장 공간은 텍스트로 사진을 찾는 검색, 이미지 생성 모델의 문장 조건(생성 모델 노트), 그리고 이미지를 읽는 멀티모달 LLM의 눈으로 쓰인다. 이런 범용 모델 위에 작은 머리만 붙여 탐지·분할·깊이를 하는 것이 요즘 비전 시스템의 흔한 꼴이다. 다만 CLIP은 물체를 세거나 위치 관계("왼쪽의 컵")를 따지는 데는 약하고, 인터넷 사진의 편향도 그대로 배운다.

이미지를 읽는 언어 모델

스크린숏을 보여 주며 묻는 멀티모달 LLM(비전 언어 모델, VLM)은 대개 세 부분을 잇는다. 이미지를 조각(패치)으로 잘라 벡터 열로 바꾸는 비전 인코더(CLIP식으로 학습한 ViT가 흔하다), 그 벡터를 언어 모델의 토큰 임베딩과 같은 공간으로 옮기는 작은 연결 층, 그리고 그 "이미지 토큰"을 글 토큰 앞에 붙여 읽는 LLM이다. LLM 입장에서 그림은 조금 특별한 토큰 묶음일 뿐이라, 다음 토큰 예측이라는 학습 방식이 그대로 이어진다.

LLaVA(2023)는 이 구조를 공개 모델로 보여 준 초기 예다. 글만 다루는 GPT-4로 이미지와 글이 짝지어진 지시–답 데이터를 만들고, 그 데이터로 비전 인코더와 LLM을 이은 모델을 처음부터 끝까지 함께 지시 튜닝했다. 이 방식의 약점도 구조에서 나온다.

  • 해상도: 그림 한 장이 고정된 수의 토큰이 되므로, 작은 글씨나 큰 표는 잘라서 여러 장으로 넣지 않으면 뭉개진다. 해상도를 올리면 이미지 토큰이 늘어 비용이 는다.
  • 세기와 위치: CLIP식 인코더의 약점(물체 세기, 왼쪽·오른쪽 관계)을 그대로 물려받기 쉽다.
  • 그림 속 글자도 입력이다: 사진 속에 적힌 문장도 모델이 읽는 글이라 지시로 착각할 수 있다(AI 보안 노트의 프롬프트 인젝션).

응용과 한계

  • 쓰이는 곳: 휴대폰 카메라의 얼굴·장면 인식과 인물 사진 배경 흐림, 문서 글자 인식(OCR), 공장의 불량 검사, 의료 영상 판독 보조, 자율 주행과 운전자 보조, 위성 사진 분석, 물류 로봇, 스포츠 중계의 선수 추적.
  • 분포 이동: 낮에 찍은 데이터로 학습한 모델은 밤·눈·다른 카메라에서 성능이 떨어진다. 시험 점수는 학습 데이터와 같은 분포에서 잰 것이다.
  • 지름길 학습: 모델이 물체 대신 배경을 보고 맞히기도 한다(눈밭이면 늑대, 병원 장비 표식이 있으면 환자). 겉으로는 정확해 보여 알아채기 어렵다.
  • 적대적 예제: 사람 눈에는 안 보이는 작은 노이즈나 인쇄한 스티커 한 장으로 분류를 바꿀 수 있다. 자율 주행 같은 안전 분야에서 문제가 된다.
  • 개인정보와 공정성: 얼굴 인식은 피부색·성별에 따라 오류율이 다르다는 측정이 여럿 있고, 감시에 쓰일 위험이 크다. EU AI 법은 공공장소의 실시간 원격 생체 인식을 법 집행에 쓰는 것을 원칙적으로 금지했다.
카메라, 전처리, 모델, 후처리, 판단 단계와 각 단계의 대표적인 실패 원인카메라조명·역광·흐림가림·낯선 각도전처리크기 줄이며작은 물체 사라짐모델학습과 다른 분포적대적 패치후처리점수 문턱·NMS설정에 따라 누락판단편향된 데이터책임·개인정보시험 점수가 높아도 실제 환경의 분포가 다르면 어느 단계에서든 조용히 틀린다
비전 시스템이 실패하는 자리. 모델 정확도만으로는 시스템 전체가 믿을 만한지 알 수 없다.

흔한 오해

  • "얼굴 검출과 얼굴 인식은 같은 기술이다" — 검출은 "사진의 이 자리에 얼굴이 있다"까지이고, 인식은 그 얼굴이 "누구인지"를 저장된 얼굴과 맞춰 보는 일이다. 카메라 앱의 얼굴 초점은 검출이고, 신원 확인·감시는 인식이라 규제와 개인정보 문제가 훨씬 크다.
  • "ImageNet에서 사람을 넘었으니 사람처럼 본다" — 정해진 1000개 분류의 한 시험 세트에서 오류율이 낮았다는 뜻이다. 처음 보는 조건, 지름길 학습, 적대적 예제 앞에서는 사람과 전혀 다르게 틀린다(응용과 한계 절).
  • "멀티모달 모델은 사진을 픽셀 단위로 정확히 본다" — 그림을 정해진 수의 토큰으로 줄여 본다. 작은 글씨, 개수, 정확한 위치에서 자주 틀린다(위 절).
  • "분류 정확도가 높으면 탐지·분할도 잘한다" — 무엇인지 맞히는 것과 어디에 정확히 있는지 맞히는 것은 다른 과제이고, 탐지는 IoU 문턱에 따라 점수가 크게 달라진다(평가 절).

핵심 논문

연도는 처음 공개된 해다. CNN·트랜스포머의 원리 논문은 딥러닝 노트, 분야 전체의 흐름은 논문 노트에 있다.

논문연도요지원문
Distinctive Image Features from Scale-Invariant Keypoints (Lowe, SIFT)2004여러 크기로 흐린 영상의 차이에서 특징점을 찾고, 주변 기울기 방향 히스토그램 128개 값으로 묘사해 크기·회전이 달라도 맞춰지게 했다.저자 공개 PDF
ImageNet Classification with Deep Convolutional Neural Networks (Krizhevsky 외, AlexNet)2012GPU로 학습한 8층 CNN이 ImageNet 대회에서 top-5 오류율을 10%p 넘게 낮춰, 컴퓨터 비전의 주류를 수작업 특징에서 딥러닝으로 바꿨다.NeurIPS
Rich feature hierarchies for accurate object detection (Girshick 외, R-CNN)2013후보 영역 약 2천 개를 따로 잘라 CNN 특징으로 분류하는 2단계 탐지를 열었다. 정확했지만 이미지 한 장에 수십 초가 걸렸다.arXiv
ImageNet Large Scale Visual Recognition Challenge (Russakovsky 외)20141000개 분류·탐지 대회의 데이터 수집, 평가 방식, 해마다의 결과와 사람과의 비교를 정리했다.arXiv
Very Deep Convolutional Networks for Large-Scale Image Recognition (Simonyan · Zisserman, VGG)20143×3 합성곱만 16~19층 쌓아도 깊이만으로 성능이 오른다는 것을 보였다. 단순한 구조라 특징 추출기로 오래 쓰였다.arXiv
Fully Convolutional Networks for Semantic Segmentation (Long 외, FCN)2014분류 CNN의 완전 연결 층을 합성곱으로 바꿔, 어떤 크기의 입력에도 픽셀마다 클래스를 내는 의미 분할을 끝에서 끝까지 학습했다.arXiv
U-Net: Convolutional Networks for Biomedical Image Segmentation (Ronneberger 외)2015줄이는 길과 키우는 길을 같은 해상도끼리 건너뛰기 연결로 이어, 적은 의료 영상으로도 경계가 정확한 분할을 했다. 확산 모델의 뼈대로도 쓰인다.arXiv
Faster R-CNN (Ren 외)2015후보 영역 제안까지 신경망(RPN)으로 하고 앵커를 도입해, 2단계 탐지를 거의 실시간으로 만들었다.arXiv
You Only Look Once (Redmon 외, YOLO)2015이미지를 격자로 나눠 칸마다 상자와 클래스를 한 번의 순전파로 예측하는 1단계 탐지. 초당 수십 장을 처리했다.arXiv
Deep Residual Learning for Image Recognition (He 외, ResNet)2015잔차 연결로 152층 망을 학습해 ImageNet top-5 오류율 3.57%로 우승했다. 이후 대부분 비전 모델의 기본 몸통이 됐다.arXiv
Simple Online and Realtime Tracking (Bewley 외, SORT)2016칼만 필터로 다음 위치를 예측하고 탐지 상자와 IoU로 짝짓는 단순한 방법이, 좋은 탐지기와 만나면 복잡한 추적기보다 낫다는 것을 보였다.arXiv
Mask R-CNN (He 외)2017Faster R-CNN에 물체마다 마스크를 내는 가지를 더해 인스턴스 분할을 했다.arXiv
Focal Loss for Dense Object Detection (Lin 외, RetinaNet)2017쉬운 배경 후보의 손실을 줄이는 초점 손실로, 1단계 탐지기가 2단계만큼 정확해질 수 있음을 보였다.arXiv
Panoptic Segmentation (Kirillov 외)2018의미 분할과 인스턴스 분할을 합친 과제와 평가 지표(PQ)를 정의했다.arXiv
NeRF: Representing Scenes as Neural Radiance Fields (Mildenhall 외)20203차원 위치와 보는 방향을 밀도·색으로 바꾸는 작은 MLP를 사진 몇십 장으로 학습해, 새로운 시점의 사진을 사실적으로 합성했다.arXiv
End-to-End Object Detection with Transformers (Carion 외, DETR)2020물체 질의를 트랜스포머로 풀고 정답과 1:1로 짝지어 학습해, 앵커와 NMS 없이 탐지를 했다.arXiv
An Image is Worth 16x16 Words (Dosovitskiy 외, ViT)2020이미지를 16×16 조각으로 잘라 낱말처럼 트랜스포머에 넣었다. 데이터가 충분하면 CNN을 넘어선다.arXiv
Learning Transferable Visual Models From Natural Language Supervision (Radford 외, CLIP)2021인터넷의 사진–설명 4억 쌍으로 사진과 문장을 같은 공간에 놓는 대조 학습을 해, 따로 학습하지 않은 분류를 문장만으로 했다.arXiv
Segment Anything (Kirillov 외, SAM)2023점·상자 같은 프롬프트로 무엇이든 분할하는 모델과, 이미지 1100만 장·마스크 11억 개의 SA-1B 데이터를 공개했다.arXiv
DINOv2: Learning Robust Visual Features without Supervision (Oquab 외)2023라벨 없이 자기 증류로 학습한 ViT의 특징이, 미세 조정 없이도 분류·분할·깊이 추정에 두루 쓰일 만큼 좋다는 것을 보였다.arXiv
3D Gaussian Splatting for Real-Time Radiance Field Rendering (Kerbl 외)2023장면을 수백만 개의 3차원 가우시안으로 나타내고 래스터화해, NeRF 수준의 화질을 실시간으로 그렸다.arXiv
SAM 2: Segment Anything in Images and Videos (Ravi 외)2024앞 프레임의 기억을 두어 SAM을 영상으로 넓혔다. 한 프레임에서 고른 물체를 영상 끝까지 따라가며 분할한다.arXiv
더 읽을거리