관리 메뉴

클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지

인간의 시각을 흉내 내는 컴퓨터 비전 4 - 컴퓨터 비전 만들기 및 읽을거리와 볼거리 본문

인공지능/컴퓨터 비전

인간의 시각을 흉내 내는 컴퓨터 비전 4 - 컴퓨터 비전 만들기 및 읽을거리와 볼거리

huenuri 2024. 11. 4. 14:21

새벽에 공부하다 말았던 컴퓨터 비전 학습을 점심식사 전까지 해볼 생각이다. 오늘 새벽에 다른 때보다 천천히 공부를 하며 오히려 마음이 정말 흐뭇하고 기뻤다. 그리고 어떤 것을 배울 때 충분히 생각하고 고민하며 즐길 수 있는 시간이 갖추어질 때 나의 생각과 사고가 더 넓어진다는 걸 배울 수 있었다. 

그런 의미로 AI와 컴퓨터 비전 관련 영화나 영상이 있으면 찾아보며 오늘은 1장만 공부하는 걸 목표로 삼기로 했다. 이 책은 실습하고 시청해 볼 영상들도 많이 제공하고 있다.


 

 

 

 

컴퓨터 비전 만들기

인간은 뛰어난 시각을 가지고 있기 때문에 컴퓨터 비전을 만드는 일이 쉬울 거라고 착각하기 쉽다. 하지만 앞에서 살펴보았듯이 결코 그렇지 않다. 컴퓨터 비전의 궁극적인 목적은 인간처럼 일반적인 상황에서 잘 작동하는 시각지능이지만, 현실적인 목표는 제한된 환경에서 특정한 과업을 높은 성능으로 달성하는 것이다.

따라서 컴퓨터 비전이 풀어야 할 문제는 여러 세부 문제로 구분되어 있다. 

 

 

컴퓨터 비전이 풀어야 할 문제

컴퓨터 비전을 활용하는 상황은 다양하다. 예를 들어 스마트폰 카메라로 나뭇잎을 찍어 나무 품종을 알아내는 과업에서는 분류 문제로 풀면된다. 사진에서 특정 물체를 오려내는 과업에서는 검출 또는 분할 문제를 풀어야 한다. 광장에 설치된 CCTV 카메라를 통해 범죄 현장을 알아내는 과업에서는 사람의 이동 궤적을 알아내야 하며, 이를 위해 사람의 손과 발의 동작을 분석해야 하므로 추적과 행동 분석 문제를 풀어야 한다.

 

아래 그림은 컴퓨터 비전이 풀어야 할 세부 문제로서 분류, 검출, 분할, 추적, 행동 분석을 설명한다. 상황에 따라 다양하게 변형된 문제가 있다. 예를 들어 사과를 따는 로봇을 만드는 과업에서는 사과라는 한 가지 물체만 검출하면 되는데, 위치가 조금만 틀어져도 로봇 손이 놓칠 수 있기 때문에 정확한 위치가 무엇보다 중요하다. 로켓을 추적하는 미사일에 장착할 컴퓨터 비전을 만든다면, 추적 대상이 로켓이라는 물체 하나뿐이고 로켓은 강체이기 때문에 3차원 물체 모델을 이용해 추적 정확률을 최대로 높일 수 있다.

 

인공지능에서 다른 지능 요소와 협업은 매우 중요하다. 활발히 연구되는 주제는 자연어 처리(NLP)와의 협업이다. 영상 설명하기 문제는 상당한 수준을 달성했다. 이 문제에서 컴퓨터 비전은 영상을 분석하는 일을 맡고 자연어 처리는 분석 결과를 가지고 문장을 생성하는 일을 담당한다. 하지만 아직 지식 표현, 추론, 계획의 지능 요소와 협업은 현재 소강상태이다. 이 협업은 컴퓨터 비전을 넘어 인공지능의 아주 중요한 미래 연구 주제다.

 

컴퓨터 비전과 로봇이 협업하는 연구가 활발히 진행되고 있다. 컴퓨터 비전이 눈을 담당하고 로봇이 손을 담당하므로 눈-손 협업이라고 부른다. 손이 작업을 하는 도중에 상황이 수시로 변하는 경우라면 컴퓨터 비전이 상황을 추척 관찰해 로봇에게 계속 알리는 일이 중요하다. 이처럼 로봇을 위해 컴퓨터 비전이 실시간으로 상황을 주시하는 일비주얼 서보잉이라 한다.


 

 

 

 

컴퓨터 비전 알고리즘과 프로그래밍

대략 2010년을 기준으로 그 이전에는 사람이 설계한 알고리즘을 주로 사용했고, 이후로는 층을 깊게 쌓은 신경망을 학습하는 딥러닝 방법을 주로 사용한다. 이 책은 4~6장에서 고전 알고리즘을 다루고 8장부터 딥러닝을 중점적으로 다룬다. 두 접근 방법은 상호 보완적이라 둘을 모두 이해해야 컴퓨터 비전 문제를 제대로 풀 수 있다.

컴퓨터 비전 시스템을 개발할 때는 주로, C, C++, 자바, 파이썬 언어를 사용한다. 여기서는 파이썬을 사용한다. 파이썬 프로그래밍을 할 때 여러 라이브러리를 사용하는데, OpenCV와 텐서플로가 중요한 두 축을 형성한다. OpenCV는 컴퓨터 비전 전문 라이브러리고 텐서플로는 딥러닝 라이브러리다.

 

영상은 2차원 또는 3차원 구조의 배열인데 파이썬은 풍부한 배열 연산을 제공하기 때문에 컴퓨터 비전 프로구래밍에 유리한 측면이 있다. x와 y, z가 길이가 n인 1차원 배열이라 했을 때, x와 y를 요소별로 더해 z에 저장하기 위한 C 언어와 파이썬 언어의 코딩은 다음과 같다.

 

C에서는 반복문을 사용해 각 요소를 더하는 방식으로 코딩한다. 파이썬에서는 x와 y를 그냥 더해 z에 저장하면 된다. 파이썬은 x와 y가 n개 요소를 가진 배열이라는 사실에 따라 내부에서 반복문으로 변환해 실행한다. 프로그래머 입장에서는 세부 동작을 몰라도 되기 때문에 무척 편리하고 오류를 범할 가능성이 낮다. 대신 변수가 어떤 구조의 배열인지 정확히 이해하는 일이 무척 중요하다.

 

C++와 파이썬의 역할 분담도 중요하다. 컴퓨터 비전 알고리즘을 구현할 때는 주로 C++를 사용한다. C++로 작성한 프로그램이 빠르기 때문이다. 이렇게 구현한 C++ 함수와 클래스는 파이썬 언어가 호출할 수 있도록 파이썬 라이브러리로 변환되어 공개된다. 다시 말해 C++은 알고리즘 구현 언어로, 파이썬은 인터페이스 언어로 사용된다.


 

 

 

 

읽을거리와 볼거리

컴퓨터 비전에 관련된 다양한 읽을거리와 볼거리 중 대표적인 몇 가지를 소개한다.

 

컴퓨터 비전과 딥러닝, 파이썬 프로그래밍 기초에 대한 학습은 모두 영어로 된 원문을 소개하고 있어 솔직히 지금은 별로 도움이 안 될 것 같아 생략한다. 저자는 한국인이면서 왜 영어로 된 것들만 소개하나 모르겠다. 적어도 하나쯤은 한국어로 된 것들을 소개했으면 좋았을 텐데 말이다.

 

 

테드 강연

 

1. 컴퓨터는 어떻게 사진을 이해하는가?

ImageNet 데이터셋을 구축하는데 지대한 공헌을 한 스탠퍼드 대학교의 페이페이 교수가 컴퓨터 비전의 기회와 한계를 쉽게 설명한다.

 

동영상 강의 링크

 

How we're teaching computers to understand pictures

When a very young child looks at a picture, she can identify simple elements: "cat," "book," "chair." Now, computers are getting smart enough to do that too. What's next? In a thrilling talk, computer vision expert Fei-Fei Li describes the state of the art

www.ted.com

 

 

 

2. 컴퓨터는 어떻게 순식간에 물체를 인식할까?

물체를 빠르게 검출하는 YOLO를 개발한 레드몽이 강연 현장에서 물체 검출 프로그램을 시연한다. 

 

동영상 강의 링크

 

How computers learn to recognize objects instantly

Ten years ago, researchers thought that getting a computer to tell the difference between a cat and a dog would be almost impossible. Today, computer vision systems do it with greater than 99 percent accuracy. How? Joseph Redmon works on the YOLO (You Only

www.ted.com

 

 

3. 구글 자율주행차

초창기 자율주행 연구의 선구자인 스런 교수의 2011년 비디오로, 2004년에 열린 그랜드 철린지에 대한 이야기를 들려준다. 

 

동영상 강의 링크

 

Google's driverless car

Sebastian Thrun helped build Google's amazing driverless car, powered by a very personal quest to save lives and reduce traffic accidents. Jawdropping video shows the DARPA Challenge-winning car motoring through busy city traffic with no one behind the whe

www.ted.com

 

그 외에도 이 사이트에 들어가면 좋은 강의들이 많아서 다음에 시간 날 때 한번 둘러보면서 시청해 볼 생각이다. 


 

 

 

그 외

 

The age of AI(다큐멘터리 영화)

로버트 다우니 주니어가 2019년에 공개한 과학 다큐멘터리다. 인공지능이 인간의 삶에 끼치는 영향을 구체적인 사례로 조명한다. 8편의 비디오로 구성된 시즌 1이 유튜브에 공개되어 있어 무료로 감상할 수 있다. 그중에서도 제8편은 컴퓨터 비전 기술을 사용해 코끼리 밀렵꾼을 찾아내 획기적으로 밀렵을 줄이는 이야기와 위성사진을 분석해 기아와 전쟁을 줄이는 이야기를 들려준다.

찾아보니 시즌 2는 아직 만들어지지 않았다. 이것만 봐도 충분히 많은 것들을 배울 수 있을 것 같다.

 

The age of AI 시즌 1 시청하기

 

The Age of A.I.

Robert Downey Jr. hosts a brand new YouTube Originals series - The Age of A.I. Discover the most innovative and leading technologies that will change the wor...

www.youtube.com


 

 

 

학습을 마치고

이렇게 해서 이 책에 있는 1장의 모든 내용을 학습해 보았다. 컴퓨터 비전 학습은 딥러닝이나 머신러닝을 공부할 때처럼 너무 빠르게 넘어가지 않고 책에서 제시한 모든 내용은 대부분 따라서 해볼 생각이다.

오늘은 테드 강연도 듣고 AI 다큐멘터리나 영화를 시청하며 시간을 보낼 것이다.