brunch

매거진 CNN 101

You can make anything
by writing

C.S.Lewis

by TUGU Jan 12. 2019

컴퓨터 비전과 딥러닝

Convolutiona Neural Network

컴퓨터 비전 이미지 분야의 딥러닝


오늘날 딥러닝의 발전 영역에 있어서 가장 두각을 나타내는 분야 중의 하나는 단연코 컴퓨터 비전 분야 딥러닝이라고 할 수 있다. 컴퓨터 비전 분야에서의 딥러닝의 예시를 아래 간단히 한번 보도록 하자.

컴퓨터 비전 분야의 딥러닝 예시

                         

우선 딥러닝을 배우면서 가장 먼저 접하게 되는 Image Classification(고양이냐 아니냐 그것이 문제로다) 이 있겠고, 자동차 자율 주행 쪽에 쓰이는 Object Detection이 있을 것이다. 그리고 오른쪽에 보는 것처럼 사람 얼굴 사진과 피카소 그림을 합성하여 피카소 화풍의 사람 이미지를 합성해 내는 딥러닝 적용 분야도 있다.


여하튼 정지 상태의 이미지이건, 동영상이건 간에 기본적으로 딥러닝이 학습하는 단위는 이미지이다(동영상도 결국 연속된 이미지이기 때문에). 그런데 위의 예시에서는 고양이 이미지의 픽셀 사이즈를 64*64로 예시를 들었다. 그리고 대부분 이미지 인식 분야의 딥러닝을 초반에 공부하게 되면 이렇게 작은 사이즈의 이미지를 예로 들어서 공부를 하게 된다. 이해하기 편하므로.


그런데 실상 우리가 컴퓨터로 접하는 이미지가 과연 이렇게 작은 사이즈의 이미지인가? 그렇지 않다. 대다수의 컴퓨터 이미지는 고해상도를 자랑한다. 여러분이 가진 스마트폰으로 대충 사진을 찍어도 수 메가 바이트를 훌쩍 뛰어넘는 고해상도의 이미지가 생성이 되며, 인터넷에서 찾아볼 수 있는 그럴싸한 이미지들은 수십 메가 바이트도 수두룩하다. 그리고 제조업 불량 검사에서 사용되는 머신 비전 이미지의 경우 수백 메가 단위의 이미지가 생성되는 경우가 아주 많다.



용량이 무지막지하게 큰 이미지는 어떻게 학습시키지?


그러면 우리가 이제껏 알고 있었던 Fully Connected Neural Network를 사용하여 이러한 고용량 이미지를 학습한다고 하면 어떻게 될까? 

우선 64x64 이미지를 학습하는 경우, Color 이미지이므로 R, G, B 3 채널 이미지이므로 총 인풋 픽셀 수는 64 x 64 x 3 = 12,288개로 볼 수 있다. 사실 이 정도 사이즈의 데이터는 Fully Connected  방식으로 학습을 시킬 수 있는 정도이므로 크게 문제 될 것이 없다.

하지만 그 아래 이미지, 1000 x 1000 x3 이미지를 보면 인풋 픽셀수는 무려 .......... 3백만 개나 된다. 예를 들어 첫 번째 레이어의 노드 수가 1000개라고 하면 첫 번째 레이어에 연결된 Weight W[1]은 무러 (1000,3million)의 행렬이 되며, 결국 1000 x 3million = 3 billion(무려 30억,,,WTF!!!! ) 개의 파라미터를 학습해야 되는 셈이다. 이렇게 많은 파라미터를 학습시키려면 엄청난 컴퓨팅 리소스가 소모가 되며, 도저히 써먹을래야 써먹을 수 없는 알고리즘이 될 것이다.


이를 해결하기 위해서 이제부터 우리가 본격적으로 공부해볼 Convolutional Neural Network 가 필요한 것이다. 


자료 출처 : https://www.coursera.org/learn/convolutional-neural-networks/lecture/Ob1nR/computer-vision





브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari