나뭇잎 교과서

이미지 분류의 수학

이미지를 행렬로 나타내면 두 이미지가 얼마나 다른지 수로 잴 수 있습니다. 새 이미지를 가장 가까운 예시와 같은 종류로 분류하는 것이 가장 기본적인 이미지 분류입니다. 이 절에서는 손글씨 숫자를 본보기와 비교해 분류하고, 가까운 예시 여러 개의 투표로 분류하는 방법을 살펴봅니다.

본문

이미지 분류의 수학

본문

우편 번호를 손으로 써도 기계가 읽어 낸다. 사람마다 '7'을 쓰는 모양이 다른데, 컴퓨터는 처음 보는 손글씨가 어떤 숫자인지 어떻게 판단할까? 가장 단순한 생각은 이미 정답을 아는 손글씨들 가운데 새 글씨와 가장 닮은 것을 찾는 것이다. 그런데 두 그림이 '닮았다'는 것을 어떻게 수로 잴까?

그림 1. 파랑과 주황 두 무리의 학습 자료 사이에 새 점(빨강)이 놓였다. 가장 가까운 \(k\)개 이웃의 다수결로 새 점의 무리를 정한다. \(k\)를 바꾸면 경계 근처의 판정이 달라질 수 있다.
먼저 알아야 할 것좌표평면 위의 두 점 사이의 거리(공통수학2), 행렬의 뺄셈, 이미지와 행렬(행렬로 나타낸 이미지).

3.3.1이미지 사이의 거리

두 이미지가 같은 크기의 행렬 \(A\), \(B\)이면, 대응하는 픽셀의 밝기 차이로 닮은 정도를 잴 수 있다. 각 픽셀의 차이를 제곱해 모두 더한 뒤 제곱근을 취하면, 좌표평면의 두 점 사이 거리를 픽셀 수만큼의 차원으로 늘린 것이 된다. 이 값이 작을수록 두 이미지가 닮았다.

정의 3.3.1 두 이미지 사이의 거리

같은 크기의 이미지 행렬 \(A = (a_{ij})\), \(B = (b_{ij})\)에 대하여 \[d(A, B) = \sqrt{\sum_{i, j}(a_{ij} - b_{ij})^2}\] 이다. 이미지를 픽셀 수만큼의 성분을 가진 벡터로 보고 구한 유클리드 거리와 같다.

3.3.2k-최근접 이웃

정답을 아는 학습 이미지들과 새 이미지 사이의 거리를 모두 계산하고, 가장 가까운 \(k\)개의 정답 가운데 가장 많은 것을 새 이미지의 답으로 정한다. 이 방법을 k-최근접 이웃(k-NN)이라 한다. 학습이라고 할 만한 계산 없이, 자료를 저장해 두었다가 비교하기만 한다.

그림 1에서 새 점을 두 무리 사이로 옮겨 보자. \(k = 1\)이면 가장 가까운 점 하나가 우연히 다른 무리이기만 해도 판정이 뒤집힌다. \(k\)를 3이나 5로 늘리면 여러 이웃의 다수결이라 한두 점의 우연에 덜 흔들린다. 하지만 \(k\)가 지나치게 크면 먼 점까지 투표에 들어와 경계가 흐려진다. \(k\)를 홀수로 잡는 것은 두 무리를 가를 때 동점을 피하기 위해서이다.1

k장점단점 작다 (1)경계를 세밀하게 따른다잘못된 점 하나에 흔들림 크다우연에 덜 흔들린다경계가 뭉개짐
그림 2. 이웃의 수 \(k\)는 너무 작지도 크지도 않게, 시험용 자료로 정확도를 비교해 고른다.

3.3.3예제 풀이

예제 3.3.2

2 × 2 흑백 이미지를 0(흰색)과 1(검정)로 나타낸다. 학습 이미지 '세로줄' \(\begin{pmatrix} 1 & 0 \\ 1 & 0 \end{pmatrix}\)과 '가로줄' \(\begin{pmatrix} 1 & 1 \\ 0 & 0 \end{pmatrix}\)이 있을 때, 새 이미지 \(\begin{pmatrix} 1 & 0 \\ 1 & 1 \end{pmatrix}\)는 어느 쪽에 가까운가?

세로줄과의 차이는 \(\begin{pmatrix} 0 & 0 \\ 0 & 1 \end{pmatrix}\)이므로 거리는 \(\sqrt{1} = 1\)이다. 가로줄과의 차이는 \(\begin{pmatrix} 0 & -1 \\ 1 & 1 \end{pmatrix}\)이므로 거리는 \(\sqrt{3} \approx 1.73\)이다.

따라서 새 이미지는 세로줄에 더 가깝고, \(k = 1\)이면 '세로줄'로 판정한다. 손글씨 숫자도 같은 원리이다. 28 × 28 픽셀이면 784개 성분의 차이로 거리를 계산하며, 이 단순한 방법만으로도 손글씨 숫자를 95% 넘게 맞힐 수 있다고 알려져 있다.

아래 탐구 카드에서 손글씨 숫자 사이의 거리를 재고, 이웃의 수를 바꾸며 판정이 어떻게 달라지는지 확인해 보자.

  1. 픽셀 거리는 글씨가 한 칸만 옆으로 밀려도 크게 달라지는 약점이 있다. 그래서 실제로는 윤곽선 같은 특징을 먼저 뽑은 뒤 거리를 재거나, 신경망이 특징을 스스로 배우게 한다.
마무리

같은 크기의 두 이미지는 대응하는 픽셀 차이의 제곱합의 제곱근으로 거리를 잴 수 있고, 거리가 작을수록 닮았다. k-최근접 이웃은 가장 가까운 \(k\)개 학습 이미지의 다수결로 새 이미지의 답을 정한다. 그래서 처음 질문의 손글씨 숫자는, 정답을 아는 손글씨들 가운데 픽셀 거리가 가장 가까운 것들을 찾아 판정할 수 있다.

탐구 1

손으로 쓴 숫자를 컴퓨터는 어떻게 알아볼까?

이미지 분류의 수학 · 활용

  1. 질문우편번호, 수표, 시험 답안의 손글씨 숫자를 컴퓨터가 읽는다. 사람마다 글씨가 다른데 어떻게 알아볼까?
  2. 복원같은 크기의 두 행렬 \(A, B\)의 차 \(A - B\)는 같은 위치의 성분끼리 뺀 행렬이다.
  3. 설명쓴 숫자를 칠한 칸은 1, 빈칸은 0인 \(7 \times 5\) 행렬 \(X\)로 나타내고, 숫자 0~9의 본보기 행렬 \(T_0, \ldots, T_9\)와 비교한다. 두 행렬의 거리를 \(X - T_k\)의 성분의 절댓값을 모두 더한 값(다른 칸의 수)으로 정하면, 거리가 가장 작은 본보기의 숫자로 분류할 수 있다. 이렇게 가장 가까운 것으로 분류하는 방법은 1단원의 최근접 이웃과 같다.
  4. 연결실제 손글씨 인식은 28×28 같은 더 큰 행렬과 수만 개의 예시를 쓰고, 합성곱 신경망으로 학습한다. 다음 카드에서는 가까운 예시 여러 개의 투표로 분류한다.
  5. 적용숫자를 써서 분류 결과를 확인해 보자. 3을 써서 8로 잘못 분류되게 만들 수 있는지, 삐뚤게 쓴 7은 어떻게 분류되는지도 시험해 보자.
  6. 판단칸 단위로 비교하면 같은 숫자라도 한 칸 옆으로 밀려 쓰면 거리가 크게 늘어난다. 그래서 위치나 굵기가 조금 달라도 같은 숫자로 보려면 윤곽이나 모양 같은 더 좋은 특징을 써야 한다.

확인조건이 달라지면

\(X = \begin{pmatrix} 1 & 0 \\ 1 & 1 \end{pmatrix}\)와 \(T = \begin{pmatrix} 1 & 1 \\ 0 & 1 \end{pmatrix}\)의 거리(성분 차의 절댓값의 합)는?

탐구 2

가장 가까운 이웃 하나만 믿어도 될까, 여럿에게 물어볼까?

k-최근접 이웃 · 조작

사진에서 뽑은 두 특징(둥근 정도, 털 길이)으로 고양이와 강아지를 나눈 가상 자료이다. 검은 별(새 사진)을 끌어 보자.

  1. 질문새 사진과 가장 가까운 예시 하나가 하필 고양이인데 강아지로 표시된 것처럼 잘못 표시된 자료라면 어떻게 될까?
  2. 복원두 점 사이의 거리를 구할 수 있고, 여러 표 가운데 가장 많은 표를 따르는 것이 다수결이다.
  3. 설명k-최근접 이웃은 새 자료와 가장 가까운 예시 \(k\)개를 찾아 그들의 다수결로 분류한다. \(k = 1\)이면 잘못 표시된 예시 하나에도 판단이 흔들리고 경계가 들쭉날쭉해진다. 반대로 \(k\)를 키우면 판단이 안정되지만, 너무 크면 먼 예시까지 끼어들어 작은 무리를 무시하게 되며, 동점을 피하려고 보통 \(k\)를 홀수로 정한다.
  4. 연결\(k\)처럼 사람이 정하는 값을 하이퍼파라미터라 한다. 좋은 \(k\)는 학습에 쓰지 않은 자료로 정확도를 비교해 고른다.
  5. 적용강아지 무리 속에 있는 주황 점(잘못 표시된 자료) 옆에 별을 놓고 \(k = 1, 3, 7\)의 결과를 비교해 보자. 그리고 ‘영역 칠하기’를 켜고 \(k\)를 키우면 경계가 어떻게 변하는지 보자.
  6. 판단특징마다 단위가 다르면(무게 kg와 길이 mm처럼) 큰 수의 특징이 거리를 좌우한다. 그래서 거리로 분류할 때는 특징의 범위를 비슷하게 맞춰야 한다.

확인조건이 달라지면

새 점과 가까운 순서대로 이웃이 (고양이, 강아지, 강아지, 고양이, 강아지)이다. \(k = 1\)과 \(k = 5\)의 분류는?

AI 출제 문항연습문제 풀어보기18문항
Esc

↑↓ 고르기Enter 열기