인공지능 기초

컴퓨터 비전

컴퓨터는 우리가 보는 세상을 어떻게 알아볼까요?
사진 속 얼굴을 찾고 자율주행차가 길을 살피는 일이 어떤 계산으로 이루어지고, 또 어디서 어긋나는지를 알아봅니다.

학습 목표

  1. 컴퓨터 비전의 개념과 이미지 인식 원리(픽셀·RGB)를 설명할 수 있다.
  2. 합성곱과 풀링이 이미지에서 무엇을 하는지 설명할 수 있다.
  3. 딥러닝(합성곱 신경망)이 컴퓨터 비전 문제를 해결하는 방식과 활용 분야를 탐색할 수 있다.
  4. 컴퓨터 비전의 한계를 설명할 수 있다. (적대적 공격은 참고 자료)

컴퓨터 비전 (Computer Vision)이란?

컴퓨터가 사진에서 의미 있는 정보를 추출하는 기술

사람이 눈으로 사물을 보고 「이건 사과네!」, 「저건 고양이네!」라고 알아채는 것처럼, 컴퓨터가 사진이나 영상(이미지)에서 의미 있는 정보를 추출하고 인식하는 기술을 연구하는 분야를 컴퓨터 비전이라고 합니다.

이 중에서 사진 속 장소, 물체, 사람 등을 알아맞히는 것을 「이미지 인식(Image Recognition)」이라고 부르며, 컴퓨터 비전의 가장 대표적인 기술입니다.

얼굴 인식 잠금 해제 스마트폰이 주인의 얼굴을 알아봅니다.
자율주행 자동차 카메라로 차선, 신호등, 보행자를 봅니다.

컴퓨터가 「사람처럼 본다」는 뜻일까?

아닙니다. 사람은 사진을 볼 때 전체 형태와 그 장면의 분위기를 한꺼번에 받아들이지만, 컴퓨터에 들어가는 것은 색의 밝기를 적어 둔 숫자들의 배열뿐입니다. 컴퓨터 비전은 그 숫자 배열에서 반복되는 패턴을 계산으로 찾아내는 일이지, 사람의 눈과 뇌가 하는 일을 그대로 옮겨 놓은 것이 아닙니다. 그 숫자가 정확히 어떤 모양으로 들어가는지는 「컴퓨터는 이미지를 숫자로 봅니다」 절에서 다룹니다.

또 하나, 「알아본다」는 것과 「뜻을 이해한다」는 것은 다릅니다. 모델이 사진에 붙이는 것은 가장 그럴듯한 이름표이지, 그 장면이 무슨 일인지를 사람처럼 겪어 아는 것이 아닙니다.

스스로 확인

마트 계산대의 카메라가 바구니 속 과일을 보고 「사과 3개, 바나나 1개」라고 적었습니다. 카메라가 실제로 받은 것은 무엇이고, 「사과」라는 이름표는 무엇에서 나온 것일까요?

딥러닝은 이미지를 어떻게 학습할까?

사람이 특징을 찾아 주던 방식에서, 인공신경망이 스스로 특징을 학습하는 방식으로

심층 신경망(DNN, 은닉층이 2개 이상인 인공신경망)의 기본 구조는 앞 층의 값을 모두 다음 층에 이어 붙입니다. 그런데 사진은 가까이 붙어 있는 점끼리 뭉쳐 봐야 모서리나 무늬가 보입니다. 그래서 이미지를 다루기 좋게 구조를 바꾼 심층 신경망이 합성곱 신경망(CNN, Convolutional Neural Network)입니다. 딥러닝을 활용한 컴퓨터 비전은 이 인공신경망으로 이미지의 특징을 모델이 스스로 찾아내는 방식입니다. 구조가 정확히 어떻게 생겼는지는 「합성곱과 풀링」 절에서 자세히 다룹니다.

전통적인 컴퓨터 비전

사람이 직접 이미지 데이터의 특징(모서리, 색상 등)을 추출하는 규칙을 정하고, 그 규칙으로 모델을 학습시키는 방식입니다.

딥러닝 기반 컴퓨터 비전 (CNN)

인공신경망이 수많은 데이터를 반복 학습하며 무엇을 볼지까지 스스로 정합니다. 비슷한 장면이 붙은 사진을 충분히 많이 학습하면, 물체 하나하나뿐 아니라 여러 물체가 함께 놓인 상황에도 이름표를 붙일 수 있습니다. 다만 이것도 학습해 본 장면에 한해서이고, 처음 보는 상황에서는 엉뚱한 이름표를 달기도 합니다.

해 보기: 같은 사진을 두 방식으로 보기

우산을 든 사람들이 젖은 길에 서 있고 하늘이 어두운 사진이 있다고 합시다. 사람이 규칙을 정해 준 방식은 「우산」, 「사람」처럼 미리 정해 둔 물체만 찾아냅니다. 반면 비슷한 사진을 아주 많이 학습한 합성곱 신경망은 「비 오는 날의 길거리」처럼 여러 물체가 함께 있을 때만 붙는 이름표까지 붙일 수 있습니다.

같은 사진을 두 방식이 어떻게 다르게 처리할지 짝과 이야기해 보고, 학습한 적 없는 장면(예: 실내에서 우산을 말리는 사진)이 들어오면 어떤 일이 생길지도 함께 예상해 봅시다.

컴퓨터 비전에 쓰이는 대표 이미지 데이터셋

  • MNIST — 0~9까지의 손글씨 사진 (학습용 60,000개 / 테스트용 10,000개)
  • CIFAR-10 — 열 가지 종류(클래스, 모델이 골라야 할 정답 후보)의 사물 사진 (학습용 50,000개 / 테스트용 10,000개)
  • ImageNet — 사진 수백만 장에 물체 이름을 붙여 둔 대규모 데이터셋

셋 다 누가 미리 정답을 달아 둔 데이터라는 점이 같습니다. 딥러닝이 특징을 스스로 찾는다고 해도, 정답표까지 스스로 만드는 것은 아닙니다. 데이터셋의 이름을 외울 필요는 없습니다.

딥러닝을 활용한 컴퓨터 비전 문제 해결 사례

의료 영상 분석

X-ray, MRI 같은 의료 영상을 분석해 폐렴·암 같은 질병을 일찍 찾아내도록 돕습니다.

객체 탐지(Object Detection)

사진에 무엇이 있는지에 더해 그것이 어디쯤 있는지까지 네모로 표시합니다. 자율주행차가 앞차나 보행자를 잡아내는 데 쓰입니다.

이미지 분할(Segmentation)

네모가 아니라 점 하나하나가 어느 물체에 속하는지를 구분합니다. 병변의 모양을 그대로 떠내야 하는 의료 영상 등에 쓰입니다.

광학 문자 인식(OCR)

사진 속 간판이나 손글씨에서 글자를 찾아 읽어 냅니다. 여기까지가 컴퓨터 비전입니다. 읽어 낸 글의 뜻을 다루는 일은 컴퓨터 비전 밖입니다.

생성 모델

텍스트나 스케치를 입력하면 이미지를 만들어냅니다. 스타일 변환, 그림 생성 등에 쓰입니다.

영상 분석

동영상 속 움직임과 상호 작용을 분석해 행동을 예측·추적합니다. 지능형 CCTV, 스포츠 분석 등에 쓰입니다.

스스로 확인

손글씨 숫자를 알아보는 모델을 만든다고 합시다. 사람이 「동그라미가 몇 개인가」 같은 규칙을 적어 주는 방식과 손글씨 사진 수만 장을 학습시키는 방식은, 아무렇게나 흘려 쓴 「4」를 만났을 때 각각 어떻게 될까요?

컴퓨터는 이미지를 숫자로 봅니다

컴퓨터는 사진 한 장을 무엇으로 바꾸어 이해할까?

이미지를 처리하기 위한 픽셀과 RGB

픽셀(Pixel)과 RGB

우리는 사진을 볼 때 전체 형태를 한눈에 받아들이지만, 컴퓨터에 들어가는 것은 그 형태가 아닙니다. 사진은 작은 점(픽셀)이 바둑판처럼 늘어선 것이고, 컴퓨터는 그 칸마다 적힌 숫자만 받습니다.

아래 숫자표를 눈을 가늘게 뜨고 보면 어두운 칸이 대각선을 이루는 것이 보입니다. 사람은 선 하나를 보지만, 컴퓨터가 가진 것은 작은 숫자가 대각선을 따라 늘어서 있다는 사실뿐입니다. 컴퓨터 비전은 이렇게 숫자가 놓인 모양에서 규칙을 찾아내는 일입니다.

흑백 사진이라면 칸마다 밝기를 나타내는 숫자가 하나씩 들어가고, 컬러 사진이라면 빨강(R)·초록(G)·파랑(B) 세 개가 들어갑니다. 아래에서 이어서 살펴봅시다.

이미지 수집 ➔ 픽셀 데이터(숫자) 분석 ➔ 객체 탐지 및 인식
255 255 250 255 255 255 240 40 20 255 250 30 20 235 255 45 20 240 255 255 255 250 255 255 255

컴퓨터가 받는 것은 이런 숫자표입니다.
0에 가까울수록 어둡고 255에 가까울수록 밝습니다.

RGB 값으로 색을 표현하는 방법

각 픽셀은 R(빨강), G(초록), B(파랑) 3개의 값으로 이루어지며, 각각 0~255 사이의 숫자로 표현됩니다. 이 세 숫자의 조합으로 1,600만 가지 이상의 색상을 만들 수 있습니다.

빨강 (R)

R: 255 / G: 0 / B: 0

초록 (G)

R: 0 / G: 255 / B: 0

파랑 (B)

R: 0 / G: 0 / B: 255

스스로 확인

가로 100, 세로 100 픽셀인 컬러 사진 한 장은 모두 몇 개의 숫자로 표현될까요? 같은 크기의 흑백 사진이라면 몇 개일까요?

합성곱과 풀링 — 특징을 뽑는 두 가지 손질

숫자표에서 어떻게 「모서리」나 「무늬」를 찾아낼까?

합성곱 신경망이 이미지를 다루는 방식

왜 기본 신경망 구조를 그대로 쓰지 않을까?

기본 인공신경망은 앞 층의 모든 값을 다음 층의 모든 뉴런에 이어 붙이는 구조입니다. 이 구조에 사진을 넣으려면 숫자표를 한 줄로 쭉 늘어놓아야 하는데, 그러면 두 가지 문제가 생깁니다.

① 이웃이라는 정보가 사라진다

모서리나 무늬는 바로 옆 칸과 비교해야 보입니다. 한 줄로 늘어놓는 순간 어느 칸이 어느 칸의 위·아래였는지가 없어집니다.

② 정할 값이 너무 많아진다

가로세로 200칸짜리 컬러 사진 한 장이면 숫자가 12만 개입니다. 이것을 전부 이어 붙이면 학습으로 정해야 할 가중치가 감당할 수 없이 불어납니다.

그래서 합성곱 신경망은 사진을 한 줄로 평탄화(flatten)하지 않고 격자 모양 그대로 두고, 작은 창을 옮겨 가며 이웃한 칸끼리만 계산합니다. 그 계산이 합성곱입니다.

합성곱(convolution) — 작은 창을 옮겨 가며 계산한다

커널(kernel)은 숫자 몇 개가 적힌 작은 숫자판입니다. 이 커널을 사진의 왼쪽 위 구석에 겹쳐 놓고, 겹친 칸끼리 곱해서 모두 더합니다. 그 결과 숫자 하나가 나옵니다. 그다음 커널을 한 칸 오른쪽으로 옮겨 같은 계산을 하고, 오른쪽 끝에 닿으면 한 줄 내려와 다시 왼쪽부터 같은 계산을 반복합니다.

이렇게 모은 숫자들을 다시 격자로 늘어놓은 것을 특징 지도(feature map)라고 합니다.

입력(사진의 숫자표) 커널 특징 지도 00900 00900 00900 00900 00900 −11−1 −11−1 −11−1 −2727−27 −2727−27 −2727−27 × = 붉은 창을 한 칸씩 옮기며 같은 커널로 반복합니다

그림을 읽는 법

입력에서 가운데 세로줄만 값이 큽니다(그림에서 짙게 칠한 칸). 커널은 가운데 열에 1, 양옆에 −1이 적혀 있어 「가운데만 값이 크고 양옆은 작은 자리」를 만나면 큰 값을 내놓습니다. 그래서 특징 지도에서도 가운데 열만 27로 크게 나왔습니다. 이 커널은 세로줄이 있는 자리를 찾아내는 창 노릇을 한 것입니다.

커널의 숫자를 다르게 두면 가로줄이나 비스듬한 줄을 찾는 창이 됩니다. 그리고 이 숫자들은 사람이 정해 주지 않고 학습하면서 정해집니다. 커널의 숫자가 곧 가중치(입력마다 곱해 중요도를 정하는 수)이고, 사진을 많이 볼수록 이 숫자가 고쳐집니다.

풀링(pooling) — 크게 줄여 요약한다

합성곱을 한 번 거쳐도 특징 지도의 숫자는 여전히 많습니다. 풀링은 특징 지도를 작은 구역으로 나눈 뒤 구역마다 대표값 하나만 남기는 손질입니다. 가장 흔한 방식은 가장 큰 값만 남기는 것입니다.

특징 지도 풀링 결과 2731340 512189 2241135 719628 → 구역마다 최댓값만 3140 2235 숫자가 16개에서 4개로 줄었습니다

얻는 것 ① 계산이 가벼워진다

다음 층으로 넘길 숫자가 크게 줄어드니, 층을 더 쌓아도 계산을 감당할 수 있습니다.

얻는 것 ② 위치가 조금 어긋나도 버틴다

구역 안에서 가장 큰 값만 남기므로, 찾던 무늬가 같은 구역 안에서 한 칸쯤 옮겨 가도 같은 대표값이 나옵니다. 사진마다 물체가 정확히 같은 자리에 있을 수는 없으니 꼭 필요한 성질입니다.

치르는 대가도 있습니다

줄이는 만큼 버려지는 정보가 생깁니다. 구역 안에서 최댓값을 뺀 나머지는 사라지므로, 정확한 위치나 미세한 경계가 중요한 문제(예: 병변의 모양을 떠내는 이미지 분할)에서는 풀링을 적게 쓰거나 다른 방법을 씁니다.

이 둘을 번갈아 쌓으면

합성곱 신경망은 합성곱 → 풀링을 여러 번 반복한 뒤, 마지막에 앞 층의 모든 값을 이어 붙이는 층을 붙여 이름표를 고릅니다. 앞쪽 층은 짧은 선이나 색의 경계처럼 단순한 무늬에 반응하고, 뒤쪽 층으로 갈수록 그 무늬들이 모인 더 큰 모양에 반응하게 됩니다.

한 가지 조심할 것

「앞쪽 층은 선, 뒤쪽 층은 얼굴」처럼 사람이 층마다 역할을 정해 준 것이 아닙니다. 각 층의 커널 숫자는 학습으로 정해지고, 그 결과 그런 경향이 나타나는 것입니다. 또 층을 무작정 늘린다고 좋아지지도 않습니다. 정할 값이 늘어 더 많은 데이터와 시간이 필요하고, 과적합(훈련 데이터에만 맞춰져 새 데이터에서 못 맞히는 상태)에 빠지기도 쉽습니다.

스스로 확인

가운데 가로줄에 1, 위아래 줄에 −1이 적힌 커널이 있습니다. 이 커널은 어떤 무늬를 만날 때 큰 값을 내놓을까요? 그리고 이 커널의 숫자를 학습이 정했다면, 처음부터 이런 모양이었을까요?

인공지능의 눈은 완벽할까?

인공지능은 사람과는 다른 곳에서 실수합니다.

헷갈리기 쉬운 점

「인공지능 카메라가 사람의 눈보다 훨씬 똑똑하고 완벽하다?」

아닙니다. 인공지능은 사진에 적힌 숫자의 패턴으로 판단하므로 사람과는 다른 곳에서 실수합니다. 카메라 한 대가 찍은 2차원 사진만으로는 거리를 가늠하기 어렵고, 학습에서 본 적 없는 장면에도 약합니다.

인간 운전자의 인식 한계

  • 사각지대 (자동차 뒤에 있는 사람을 보지 못함)
  • 악천후 시 노면이 얼마나 미끄러운지 눈으로 정확히 측정하기 어려움
  • 피로, 졸음, 스마트폰 사용 등 부주의로 인한 인식 실패

자율주행 AI의 인식 한계

  • 생김새가 비슷한 물체를 구분하기 힘들어함
  • 2D 이미지로 3차원 공간의 원근감을 정확히 측정하기 어려움
  • 학습할 때 보지 못한 상황(눈에 덮인 표지판, 처음 보는 모양의 차)에서 틀린 답을 자신 있게 내놓기도 함
  • 「적대적 공격」에 취약함 (스티커 하나로 표지판을 착각함)
스스로 확인

비 오는 밤, 도로 위에 커다란 비닐봉지가 떨어져 있습니다. 사람 운전자와 자율주행 인공지능은 이 장면에서 각각 어떻게 실수할 수 있을까요?

참고

인공지능을 속이는 「적대적 공격」

사람 눈에는 똑같은 사진으로 인공지능을 속일 수 있을까?

AI가 오류를 일으키는 방식

더 알아보기: 적대적 공격은 어떻게 인공지능을 속일까

적대적 공격(Adversarial Attack)이란?

이미지에 사람 눈에는 보이지 않거나 대수롭지 않아 보이는 조작(노이즈·작은 스티커 등)을 가해서 인공지능이 완전히 엉뚱한 것으로 잘못 인식하게 만드는 공격 방법입니다.

자율주행 자동차가 카메라로 「정지(STOP)」 표지판을 보았다고 가정해 봅시다. 공격자가 표지판에 특수한 무늬의 스티커 몇 개를 붙여놓으면, 사람 눈에는 여전히 「정지」로 보이지만 컴퓨터는 이를 「직진」이나 「속도 제한」 표지판으로 착각하고 멈추지 않아 큰 사고가 날 수 있습니다.

STOP
AI 인식: 정지 ✓

노이즈
STOP
AI 인식: 속도제한 ✗

사람 눈에는 똑같아 보여도, 픽셀의 숫자값을 읽는 AI는 속을 수 있습니다.

직접 실습해 보는 컴퓨터 비전

배운 원리를 내 웹캠으로 직접 확인해 볼까?

웹캠 영상에서 인공지능이 얼굴과 물체를 찾아 이름표를 붙이는 모습을 실시간으로 봅니다. 조명이나 얼굴 각도를 바꾸면 결과가 어떻게 흔들리는지도 살펴봅시다.

확인 퀴즈

배운 내용을 확인해 봅시다.

Q1 컴퓨터가 사진이나 영상에서 의미 있는 정보를 추출하고 인식하는 기술을 연구하는 분야를 무엇이라고 하나요?

Q2 다음 중 자율주행 AI의 시각 인식 한계에 대한 설명으로 틀린 것은 무엇일까요?

Q3 사람 눈에는 보이지 않거나 대수롭지 않아 보이는 조작을 이미지에 가하여, 인공지능이 정지 표지판을 직진 표지판으로 오해하도록 만드는 공격 기법을 무엇이라고 하나요?

Q4 합성곱 신경망에서 커널이 하는 일을 가장 알맞게 설명한 것은 무엇일까요?

Q5 합성곱 신경망에 대한 설명으로 옳지 않은 것은 무엇일까요?

핵심 정리

구별할 것

  • 합성곱은 무늬를 찾고, 풀링은 크기를 줄인다
  • 커널의 숫자는 사람이 적지 않고 학습이 정한다
  • 특징은 스스로 찾아도 정답표는 사람이 달아 둔 것이다
  • 이름표를 고르는 것과 장면의 뜻을 이해하는 것은 다르다

딥러닝 활용 사례

  • 의료 영상 분석 · 객체 탐지 · 이미지 분할
  • 광학 문자 인식(OCR) · 생성 모델
  • 영상 분석 (지능형 CCTV 등)

인공지능의 한계

  • 2차원 사진으로 깊이 측정하기 어려움
  • 비슷하게 생긴 물체 구분 어려움
  • 학습한 적 없는 장면에 약함
  • 적대적 공격에 취약
  • 풀링을 많이 넣으면 정확한 경계를 잃음