gray_rows = 8
gray_cols = 8
gray_img_raw = [
[220, 210, 180, 120, 80, 120, 180, 210],
[210, 180, 100, 40, 20, 40, 100, 180],
[180, 100, 30, 10, 5, 10, 30, 100],
[150, 60, 10, 0, 0, 0, 10, 60],
[150, 60, 10, 0, 0, 0, 10, 60],
[180, 100, 30, 10, 5, 10, 30, 100],
[210, 180, 100, 40, 20, 40, 100, 180],
[220, 210, 180, 120, 80, 120, 180, 210]
]
gray_pixels = {
const arr = [];
for (let r = 0; r < 8; r++)
for (let c = 0; c < 8; c++)
arr.push({row: r, col: c, val: gray_img_raw[r][c]});
return arr;
}7 컴퓨터 비전과 이미지 데이터
7.1 컴퓨터 비전이란?
7.1.1 이미지에서 정보를 읽다
앞 장들에서 우리는 수치 데이터를 입력으로 받는 신경망을 배웠다. 그런데 현실 세계의 데이터는 숫자만 있는 것이 아니다 — 사진, 영상, 의료 이미지 등 시각 정보가 넘쳐난다.
7.1.2 컴퓨터 비전의 응용
컴퓨터 비전은 이미 우리 생활 곳곳에서 활용되고 있다.
| 분야 | 설명 | 예시 |
|---|---|---|
| 안면 인식 | 얼굴의 특징점을 추출하여 신원 확인 | 보안 시스템, 스마트폰 잠금 해제 |
| 질병 진단 | X-ray, CT 등 의료 이미지 분석 | 유방암 검출, 피부암 분류, COVID-19 진단 |
| 자율 주행 | 실시간 영상에서 차량·보행자·차선 인식 | 테슬라 오토파일럿 |
| 품질 검사 | 제조 공정에서 불량품 자동 검출 | 부품 표면 결함 탐지 |
이 모든 응용의 공통점은 “이미지를 입력으로 받아 판단을 출력한다”는 것이다. 그렇다면 컴퓨터는 이미지를 어떻게 “이해”할까?
7.2 컴퓨터가 보는 이미지
7.2.1 픽셀: 이미지의 기본 단위
사람의 눈에 이미지는 연속적인 색과 형태로 보이지만, 컴퓨터에게 이미지는 밝기가 다른 격자(grid)의 모음이다.
예를 들어, \(18 \times 12\) 크기의 흑백 이미지는 \(18 \times 12 = 216\)개의 숫자로 표현된다. 아래는 감을 잡기 위한 \(8 \times 8\) 축소 예시다 — 64개의 숫자가 모여 “어두운 원” 무늬 하나를 이룬다.
핵심: 컴퓨터에게 이미지란 숫자로 가득 찬 행렬이다. 이 숫자 행렬을 입력 데이터(\(\mathbf{X}\))로 사용하면, 회귀나 분류 모형을 만들 수 있다.
7.2.2 컬러 이미지: RGB 3채널
흑백 이미지가 2차원 행렬이라면, 컬러 이미지는 어떻게 표현할까?
모든 색깔은 빨강(R), 초록(G), 파랑(B) 세 가지 빛의 조합으로 만들 수 있다. 따라서 컬러 이미지는 3개의 2차원 행렬을 쌓은 3차원 텐서로 표현된다.
\[\text{컬러 이미지} \in \mathbb{R}^{H \times W \times 3}\]
- \(H\): 세로 픽셀 수 (높이)
- \(W\): 가로 픽셀 수 (너비)
- \(3\): R, G, B 채널
| 이미지 유형 | 데이터 형태 | 예시 (28×28) |
|---|---|---|
| 흑백 | \(H \times W\) | \(28 \times 28 = 784\)개 숫자 |
| 컬러 | \(H \times W \times 3\) | \(28 \times 28 \times 3 = 2{,}352\)개 숫자 |
7.3 완전연결 신경망의 한계
7.3.1 이미지를 FC 신경망에 넣으려면?
Ch02~Ch03에서 배운 완전연결(Fully Connected) 신경망에 이미지를 입력하려면, 2차원 행렬을 1차원 벡터로 펼쳐야(flatten) 한다.
\(18 \times 12\) 흑백 이미지의 경우 입력 노드가 216개이므로 관리할 만하다. 하지만 실제 이미지는 어떨까?
7.3.2 파라미터 폭발 문제
224×224 컬러 이미지만 해도 첫 번째 층의 가중치가 수천만 개에 달한다. 이는 단 하나의 층에 대한 수치이므로, 전체 네트워크의 파라미터는 훨씬 더 많아진다.
7.3.3 FC 접근법의 두 가지 문제
완전연결 신경망으로 이미지를 처리하면 다음 두 가지 근본적인 문제가 발생한다.
| 문제 | 설명 |
|---|---|
| 공간 정보 손실 | 2D 행렬을 1D 벡터로 펼치면(flatten), 인접한 픽셀 간의 위치 관계가 사라진다 |
| 파라미터 폭발 | 입력 노드 수가 픽셀 수와 같으므로, 가중치가 픽셀 수에 비례해(이미지 한 변 길이의 제곱으로) 증가한다 |
224×224×3 이미지를 256개 은닉 뉴런에 연결하면, 첫 번째 층에서만 약 3,800만 개의 가중치가 필요하다. 학습이 불가능한 것은 아니다 — 하지만 Ch04에서 배운 그대로다: 파라미터가 많을수록 암기할 용량이 커지고, 과적합을 막으려면 그만큼 많은 데이터가 필요하다. 이미지 하나를 처리하기 위해 이런 낭비를 감수할 이유가 없다.
7.3.4 공간 정보 손실을 직접 확인하기
두 문제 중 파라미터 폭발은 위의 계산기에서 확인했다. 그렇다면 “공간 정보 손실”은 정확히 무엇이 문제인가?
패턴을 한 칸만 옮겨도 활성 노드 번호가 통째로 바뀐다. FC 신경망에서 각 입력 노드는 자기만의 가중치를 가지므로, 왼쪽 위치에서 “이 무늬는 고양이 귀”라고 학습한 가중치를 오른쪽 위치에 재사용할 수 없다 — 같은 무늬를 위치마다 처음부터 다시 배워야 한다. “위치가 달라도 같은 패턴은 같은 방법으로 찾는다”는 연산이 필요하며, 그것이 다음 장의 콘볼루션이다.
7.4 인간의 시각과 특성 추출
7.4.1 사람은 이미지를 어떻게 인식하는가?
사람은 이미지를 볼 때 모든 픽셀을 하나하나 분석하지 않는다. 대신 핵심 특성(Feature)을 찾아 비교하는 방식으로 인식한다.
예를 들어 “사람 얼굴”을 인식할 때, 우리는 무의식적으로 눈, 코, 입이라는 특성을 찾는다. “자동차”라면 바퀴, 헤드램프, 번호판 같은 특성으로 판별한다.
7.4.2 컴퓨터 비전의 핵심 질문
사람의 개입 없이, 자동으로 이미지의 핵심 특성을 추출할 수 있을까?
이것이 바로 컴퓨터 비전이 해결해야 할 근본적인 질문이다. 실제로 딥러닝(특히 CNN)은 이 특성 추출 과정을 자동으로 학습하는데, 추출되는 특성은 계층적 구조를 가진다.
| 수준 | 추출되는 특성 | 예시 |
|---|---|---|
| Low-level | 기본적인 시각 패턴 | 에지(edge), 밝기 변화, 점 |
| Mid-level | 부분적인 구조 | 눈, 귀, 코 등 부위 |
| High-level | 전체적인 형태 | 얼굴 전체 구조, 자세 |
이 계층적 특성 추출이 어떻게 가능한지는 다음 장에서 콘볼루션(Convolution) 연산을 통해 알아본다.
7.4.3 특성 추출이 어려운 이유
같은 대상이라도 촬영 조건에 따라 전혀 다른 이미지가 될 수 있다. 컴퓨터가 자동으로 특성을 파악하기 어렵게 만드는 요인들은 다음과 같다.
| 요인 | 설명 |
|---|---|
| 시점 변화 (Viewpoint) | 같은 물체를 다른 각도에서 촬영하면 전혀 다른 모양 |
| 크기 변화 (Scale) | 물체의 크기가 작거나 크면 픽셀 분포가 달라짐 |
| 변형 (Deformation) | 고양이가 웅크리거나 뛰는 등 같은 대상의 형태 변화 |
| 가려짐 (Occlusion) | 물체의 일부가 다른 물체에 가려진 경우 |
| 조명 (Illumination) | 명암과 그림자에 따라 같은 물체도 다르게 보임 |
| 배경 혼잡 (Background) | 물체와 배경의 색·질감이 유사하면 구분 곤란 |
| 클래스 내 변이 (Intra-class) | “의자”라 해도 소파, 안락의자, 접이식 등 생김새가 다양 |
이 표는 팀 프로젝트의 촬영 체크리스트다
여러분이 프로젝트에서 직접 데이터를 수집할 때, 위 요인들은 남의 이야기가 아니라 여러분 모델의 성패가 된다. 같은 사물을 다양한 시점·거리·조명·배경에서 찍을수록 모델은 이 난관들에 강해진다. 반대로 같은 자리에서 같은 각도로만 찍은 200장은, 사실상 20장짜리 데이터다.
이러한 난관을 극복하기 위해, 단순히 픽셀값을 나열하는 FC 방식이 아닌 이미지의 공간적 구조를 활용하는 새로운 연산이 필요하다.
7.5 정리
이 장에서는 컴퓨터 비전의 기본 개념과 이미지 데이터의 구조를 살펴보았다.
| 핵심 내용 | 요약 |
|---|---|
| 이미지 = 숫자 행렬 | 흑백은 \(H \times W\), 컬러는 \(H \times W \times 3\)의 텐서 |
| FC의 한계 | 공간 정보 손실 + 파라미터 폭발로 이미지 처리에 부적합 |
| 특성 추출이 핵심 | 사람처럼 핵심 특성을 자동으로 추출하는 방법이 필요 |
| 다양한 난관 | 시점, 크기, 변형, 가려짐 등으로 자동 특성 추출이 어려움 |
다음 장 예고: 이미지의 공간적 구조를 보존하면서, 적은 파라미터로 효과적인 특성을 추출하는 연산 — 콘볼루션(Convolution)을 배운다.