사전 컴퓨터 비전
영역

컴퓨터 비전

gabury1고친 사람 github-actions[bot]

컴퓨터 비전은 컴퓨터가 사진과 영상을 보고 그 안에 무엇이 찍혔는지 알아내게 하는 분야입니다. 사람 눈에는 한눈에 보이는 자동차도 컴퓨터에게는 숫자 덩어리일 뿐입니다. 이 분야는 그 숫자에서 뜻을 끌어내는 여러 문제를 함께 다룹니다. 그림을 만드는 그래픽스와는 방향이 반대입니다.

쉽고 빠른 이해

컴퓨터 비전은 사진을 보고 무엇이 찍혔는지 알아내는 기술을 만듭니다. 주차장 입구 사진기가 찍은 사진에서 번호판 글자를 읽어 내는 일이 그 예입니다.

이게 없으면 사진은 쌓이기만 하고 아무도 내용을 모릅니다. 사람이 한 장씩 눈으로 봐야 합니다.

어떻게 도나:

  1. 사진을 점마다 밝기를 적은 숫자 격자로 받습니다
  2. 숫자에서 테두리처럼 조명이 바뀌어도 덜 흔들리는 단서를 찾습니다
  3. 그 단서로 무엇이 어디 있는지 판단합니다. 요즘은 예시 사진을 많이 보고 배운 모델이 이 판단을 맡습니다

대가도 있습니다. 답은 늘 틀릴 수 있는 추측이라 받아들일 기준을 따로 정해야 합니다. 정답을 단 사진이 많이 필요하고 계산도 무겁습니다.

결과로 다듬은 사진만 필요하다면 컴퓨터 비전까지 갈 일이 아닙니다. 그건 이미지 처리의 몫입니다.

상세

이 절은 먼저 사진이 컴퓨터에 어떤 꼴로 들어오는지, 그 꼴 때문에 무엇이 어려운지 봅니다. 다음은 숫자에서 판단까지 가는 단계와 그 단계를 만드는 두 방식입니다. 끝으로 이 분야가 푸는 대표 문제와 이웃 분야, 백엔드 개발자가 이 분야를 만나는 때를 봅니다.

예로는 주차장 입구 사진기가 찍은 사진 한 장을 계속 씁니다. 사진에는 차단기 앞에 선 승용차 한 대가 찍혀 있습니다. 서비스는 이 사진에서 번호판 글자를 읽어 입차 기록을 남기려 합니다.

숫자 격자로 들어오는 사진

컴퓨터에 들어온 사진은 픽셀이라는 작은 점들이 가로세로로 늘어선 격자입니다. 점마다 밝기를 숫자 하나로 적습니다. 흑백 사진이면 흔히 0 이 검정입니다. 255 는 하양입니다.

컬러 사진은 점마다 숫자 셋을 적습니다. 빨강과 초록과 파랑이 얼마나 섞였는지입니다. 이렇게 세 값으로 색을 적는 방식을 RGB(Red Green Blue, 빨강·초록·파랑)라고 부릅니다.

주차장 사진 한 장은 이런 점이 수십만 개 모인 것입니다. 사람은 사진을 보자마자 승용차와 번호판을 알아봅니다. 컴퓨터가 받는 것은 숫자 수십만 개뿐입니다. 이 숫자에서 「승용차가 있다」와 「번호판 글자는 이것이다」를 끌어내는 것이 컴퓨터 비전의 일입니다.

이 일을 컴퓨터가 못 하면 사진은 쌓이기만 합니다. 입차 기록을 남기려면 사람이 사진을 한 장씩 보고 번호판을 옮겨 적어야 합니다. 차가 늘어날수록 사람도 그만큼 늘려야 합니다.

같은 물체가 다른 숫자로 찍히는 문제

같은 승용차를 두 번 찍어도 숫자는 같지 않습니다. 해가 지면 모든 점이 어두워집니다. 차가 한 걸음 앞으로 오면 번호판이 다른 점들로 옮겨 갑니다. 비스듬히 서면 네모난 번호판이 찌그러진 꼴로 찍힙니다.

반대로 다른 물체가 비슷한 숫자를 내기도 합니다. 하얀 차의 보닛과 흰 벽은 점 몇 개만 보면 구별이 안 됩니다. 사람이 보는 뜻과 컴퓨터가 받는 숫자 사이의 이 거리를 의미 간극이라고 부릅니다.

그래서 픽셀을 하나씩 맞춰 보는 규칙으로는 이 일을 못 합니다. 「이 점이 200 이면 번호판」 같은 규칙은 조명 하나만 바뀌어도 깨집니다. 컴퓨터 비전의 방법들은 모두 이 흔들림을 견디는 단서를 찾는 데서 출발합니다.

픽셀에서 판단까지 거치는 단계

컴퓨터 비전 시스템은 대개 네 단계를 차례로 거쳐 결과를 냅니다. 그림의 맨 아래 칸은 단계가 아니라 그 결과입니다. 첫 단계는 앞 소절에서 본 숫자 격자를 받는 일입니다.

flowchart TD
    A["사진 받기 · 숫자 격자"] --> B["전처리 · 크기와 밝기 맞추기"]
    B --> C["특징 추출 · 덜 흔들리는 단서 찾기"]
    C --> D["판단 · 무엇이 어디 있나"]
    D --> E["결과 · 번호판 글자"]

전처리는 사진을 다음 단계가 다루기 좋게 고르는 일입니다. 사진 크기를 정해진 값으로 줄입니다. 너무 어둡거나 밝은 사진은 밝기를 맞춥니다. 사진마다 들쭉날쭉한 조건을 미리 줄여 두면 뒤 단계가 덜 흔들립니다.

특징 추출 단계는 특징을 뽑습니다. 특징은 픽셀 숫자보다 조명과 위치에 덜 흔들리는 단서입니다. 번호판이라면 「글자처럼 생긴 모양이 네모 안에 줄지어 있다」가 그런 단서입니다.

판단 단계는 픽셀이 아니라 이 단서를 보고 답을 냅니다. 번호판 예에서는 번호판이 있는 네모를 먼저 찾습니다. 그다음 그 안의 글자를 읽어 문자열로 내놓습니다. 이 두 일을 잇는 방법은 아래 「이 분야가 푸는 대표 문제」 소절에서 봅니다.

테두리라는 단서

특징이 무엇인지는 숫자 격자 하나로 볼 수 있습니다. 아래는 흑백 사진의 한 귀퉁이를 잘라 낸 네 줄입니다. 칸 하나가 픽셀 하나입니다. 칸에 적힌 값은 밝기입니다.

 12   15  200  210
 10   14  205  208
 11   13  198  211
  9   16  202  207

왼쪽 두 열은 어둡고 오른쪽 두 열은 밝습니다. 둘째 열과 셋째 열 사이에서 밝기가 한꺼번에 크게 뛰어오릅니다. 사진에서 이런 곳은 물체의 테두리입니다. 번호판의 하얀 바탕과 검은 글자가 맞닿은 곳이 이렇게 찍힙니다.

밝기가 갑자기 바뀌는 곳을 에지라고 부릅니다. 그런 곳을 찾는 일이 에지 검출입니다. 해가 져서 모든 값이 절반으로 줄어도 둘째 열과 셋째 열 사이의 큰 차이는 남습니다. 밝기 값보다 이웃한 값끼리의 차이가 덜 흔들리기 때문에 단서가 됩니다.

사람이 정하던 특징과 데이터로 배우는 특징

특징을 누가 정하느냐로 이 분야의 방식이 둘로 갈립니다. 이 소절은 두 방식이 무엇을 맡기고 무엇을 치르는지 봅니다.

예전 방식은 사람이 특징을 설계했습니다. 에지, 모서리, 밝기가 바뀌는 방향 같은 단서를 계산하는 식을 연구자가 짰습니다. 판단 단계는 그 단서들을 받아 답을 골랐습니다. 사람이 떠올리지 못한 단서는 시스템도 쓰지 못했습니다.

오늘날 주류는 딥러닝입니다. 딥러닝은 사진을 넣으면 답을 내는 프로그램을 데이터로 학습시킵니다. 이렇게 학습시킨 프로그램을 모델이라고 합니다.

모델에게는 정답을 달아 둔 사진을 아주 많이 보여 줍니다. 그러면 모델이 판단 규칙과 함께 어떤 특징을 볼지도 스스로 익힙니다. 이렇게 정답과 함께 배우는 방식을 지도학습이라고 부릅니다.

학습에 쓸 정답은 사람이 답니다. 사진마다 「승용차」라고 적거나 번호판 둘레에 네모를 그려 넣습니다. 이 일을 레이블링이라고 부릅니다. 모델이 배울 수 있는 것은 이렇게 달아 둔 정답의 범위를 넘지 못합니다.

사진에 자주 쓰는 모델은 CNN(Convolutional Neural Network, 합성곱 신경망)입니다. 작은 창 하나를 사진 위로 밀어 가며 칸마다 같은 계산을 되풀이합니다. 앞 소절에서 이웃한 두 열의 차이를 본 계산이 그런 창 하나에 해당합니다.

이 방식이 사진에 맞는 이유는 가까운 점끼리 같은 물체에 속하는 일이 많아서입니다. 그래서 주변만 보는 작은 창이 사진 어디에서나 통합니다.

CNN 은 이 창 계산을 여러 겹 쌓습니다. 창으로 한 번 훑어 낸 숫자 격자를 다음 겹이 다시 창으로 훑는 식입니다. 앞쪽 겹은 에지 같은 단순한 단서를 찾습니다. 뒤쪽 겹은 그 단서들을 엮어 글자나 바퀴 같은 큰 모양을 알아봅니다.

배우는 방식에도 대가가 있습니다. 정답을 단 사진이 많이 필요합니다. 학습과 판단 모두 계산이 무거워 GPU(Graphics Processing Unit, 그래픽 처리 장치)를 씁니다. 모델이 왜 그 답을 냈는지 사람이 들여다보기도 어렵습니다.

이 분야가 푸는 대표 문제

컴퓨터 비전은 한 가지 문제가 아니라 여러 문제의 묶음입니다. 문제마다 사진 한 장에서 내놓는 답의 꼴이 다릅니다. 아래 표는 주차장 사진 한 장에 각 문제를 걸었을 때 나오는 답입니다.

문제 주차장 사진에서 내놓는 답
이미지 분류 사진 전체에 이름표 하나. 「승용차」
객체 검출 물체마다 이름표와 그 물체를 감싸는 네모 칸. 「승용차와 그 네모」 · 「번호판과 그 네모」
이미지 분할 픽셀마다 이름표. 어느 점이 차이고 어느 점이 바닥인지
광학 문자 인식 사진 속 글자를 문자열로. 번호판 글자
객체 추적 영상의 여러 장면에 걸쳐 같은 차를 이어 붙인 경로
3차원 복원 여러 장의 사진으로 되살린 차와 주변의 입체 모양

번호판을 읽는 서비스는 흔히 두 문제를 잇습니다. 객체 검출로 번호판 네모를 먼저 찾습니다. 그 네모만 잘라 광학 문자 인식에 넘깁니다. 사진 전체보다 좁은 곳만 읽으니 엉뚱한 간판 글자를 읽을 일이 줄어듭니다.

사진기가 찍는 과정을 옮긴 식

사진에서 거리나 크기를 재려면 사진기가 세상을 어떻게 찍는지 알아야 합니다. 그래서 컴퓨터 비전은 사진기가 찍는 과정을 식으로 옮겨 씁니다. 이 문서는 이 식을 「사진기 식」이라고 부릅니다. 이 분야에서는 주차장 입구의 실제 사진기뿐 아니라 그 사진기를 흉내 낸 이 식도 카메라라고 부릅니다.

가장 기본인 사진기 식은 핀홀 카메라입니다. 장면의 점에서 나온 빛이 바늘구멍 하나를 지나 뒤쪽 면에 맺힌다고 봅니다. 이렇게 보면 3차원 공간의 점 하나가 사진 위 어느 점으로 떨어지는지 식으로 셈할 수 있습니다.

이 식에는 사진기마다 다른 값을 넣어야 합니다. 식에 넣는 이런 값을 파라미터라고 합니다. 값은 사진기 바깥의 사정과 안의 사정, 두 묶음으로 나뉩니다.

외부 파라미터는 바깥의 사정입니다. 사진기가 어디에 섰고 어느 쪽을 향하는지입니다. 차단기 옆 기둥에 단 사진기를 다른 기둥으로 옮겨 달면 이 값이 바뀝니다.

내부 파라미터는 안의 사정입니다. 사진기의 렌즈가 정하는 값으로, 같은 거리의 물체가 사진에 얼마나 크게 찍히는지를 정합니다. 사진기를 옮겨 달아도 이 값은 그대로입니다.

실제 렌즈는 곧은 선을 조금 휘게 찍습니다. 그래서 이 휨을 적는 렌즈 왜곡 값도 따로 둡니다.

이 값들을 찍힌 사진으로 알아내는 일을 카메라 캘리브레이션이라고 부릅니다. 번호판은 크기가 정해져 있습니다. 사진기 값을 알면 사진 속 번호판이 몇 픽셀로 찍혔는지에서 차가 얼마나 떨어져 있는지 거꾸로 셈할 수 있습니다.

그래픽스 · 이미지 처리와 갈리는 방향

이웃한 두 분야와는 무엇을 받고 무엇을 내놓는지로 갈립니다. 셋을 한 표에 놓습니다.

분야 받는 것 내놓는 것
그래픽스 장면의 모양과 사진기 값 그려 낸 그림
이미지 처리 사진 다듬은 사진
컴퓨터 비전 사진 사진 속 내용에 대한 답

그래픽스와 컴퓨터 비전은 같은 사진기 식을 씁니다. 그래픽스는 장면과 사진기 값을 정해 두고 그림을 만듭니다. 컴퓨터 비전은 찍힌 사진에서 그 장면과 사진기 값을 거꾸로 알아냅니다.

이미지 처리는 흐린 사진을 또렷하게 하거나 잡음을 지우는 일입니다. 결과가 여전히 사진입니다. 컴퓨터 비전의 전처리 단계가 이 기법을 가져다 씁니다. 결과가 사진이면 이미지 처리입니다. 사진 속 내용에 대한 답이면 컴퓨터 비전입니다.

백엔드 개발자가 이 분야를 만나는 때

모델을 직접 설계하는 일은 드뭅니다. 대개는 이미 학습된 모델을 서버에서 돌립니다. 사진을 보내면 결과를 돌려주는 외부 API(Application Programming Interface, 응용 프로그램 인터페이스)를 부르기도 합니다. 학습된 모델에 새 사진을 넣어 답을 받는 일을 추론이라고 부릅니다.

이때 개발자가 정할 것이 셋 있습니다.

  1. 답을 믿을 기준. 모델은 답마다 얼마나 확신하는지를 점수로 함께 냅니다. 몇 점을 넘는 답만 받아들일지는 서비스가 정합니다
  2. 기준에 못 미친 답. 흔한 처리는 그 사진을 사람이 확인하는 대기열로 보내는 것입니다
  3. 무거운 계산을 두는 곳. 추론은 보통의 요청 처리보다 오래 걸리고 GPU 를 씁니다. 사진을 받는 요청과 추론 사이에 큐를 두면 요청이 추론을 기다리지 않고 바로 끝납니다

기준을 높이면 잘못 읽은 번호판은 줄지만 놓치는 차가 늘어납니다. 기준을 낮추면 반대가 됩니다. 이 맞바꿈은 정밀도와 재현율로 잽니다.

받아들인 답 가운데 맞은 답의 비율이 정밀도입니다. 잘못 읽은 번호판이 적을수록 높습니다. 실제로 지나간 차 가운데 잡아낸 차의 비율이 재현율입니다. 놓친 차가 적을수록 높습니다.

사진에는 사람의 얼굴과 번호판처럼 누구인지 알아볼 수 있는 정보가 담깁니다. 이런 정보를 개인정보라고 부릅니다. 그래서 사진을 얼마나 오래 두고 누가 볼 수 있는지도 함께 정합니다.

관련 항목

컴퓨터 비전이 푸는 대표 문제

이미지 분류 · 객체 검출 · 이미지 분할 · 의미론적 분할 · 인스턴스 분할 · 광학 문자 인식 · 얼굴 인식 · 객체 추적 · 자세 추정 · 깊이 추정 · 3차원 복원 · 이상 탐지

컴퓨터 비전이 사진에서 뽑는 단서

특징 · 에지 · 에지 검출 · 코너 검출 · 특징점 · SIFT · HOG · 히스토그램 · 광학 흐름

컴퓨터 비전 모델을 만드는 학습 방법

머신러닝 · 딥러닝 · 신경망 · 합성곱 신경망 · 합성곱 · 비전 트랜스포머 · 지도학습 · 비지도학습 · 전이 학습 · 데이터 증강 · 레이블링

컴퓨터 비전이 쓰는 사진기 식

카메라 · 핀홀 카메라 · 외부 파라미터 · 내부 파라미터 · 렌즈 왜곡 · 카메라 캘리브레이션 · 원근 투영 · 스테레오 비전

컴퓨터 비전의 입력을 이루는 데이터

픽셀 · 이미지 · RGB · 색 공간 · 해상도 · 비디오 · 프레임률

컴퓨터 비전 모델의 판단을 재는 지표

정밀도와 재현율 · 혼동 행렬 · IoU · mAP · 신뢰도 점수

컴퓨터 비전 모델을 서비스로 굴리는 수단

추론 · 모델 서빙 · GPU · 배치 처리 · 큐 · 비동기 · 엣지 컴퓨팅 · 지연

컴퓨터 비전을 구현한 라이브러리

OpenCV · PyTorch · TensorFlow · scikit-image

컴퓨터 비전을 채택한 응용 분야

자율 주행 · 의료 영상 · 증강 현실 · 로봇 공학 · 머신 비전 · 번호판 인식 · 영상 감시

컴퓨터 비전과 입력이나 출력이 겹치는 이웃 분야

그래픽스 · 이미지 처리 · 패턴 인식 · 신호 처리 · 자연어 처리

컴퓨터 비전 서비스에 걸리는 개인정보 규칙

개인정보 · 익명화 · 가명 처리 · 데이터 보존 기간

컴퓨터 비전이 속하는 상위 분야

인공지능 · 컴퓨터 과학 · 인지 과학

다른 이름: computer vision