인공지능/Computer Vision 6

풀링(Pooling) ft. Max & Average Pooling

합성곱 신경망에서 합성곱 연산과 활성화 함수 ReLU로 이루어진 합성곱층 다음에는 보통 풀링층이 존재한다. 풀링층은 각 특징맵에서 독립적으로 작동한다. 풀링은 특징 맵의 높이와 너비를 줄임으로써 특징 맵의 해상도를 낮추지만 분류에 필요한 맵의 특징은 유지시키는데 이를 다운 샘플링(Down-sampling)이라고 한다. 풀링층을 사용하는 이유 : 표현의 공간 크기를 점진적으로 줄여 네트워크의 매개변수 및 계산량을 줄이고 과적합을 제어할 수 있다. 최대 풀링(Max Pooling) 풀링에서 사용하는 일반적인 방법은 최대값을 추출하는 위와 같은 맥스 풀링이다. 필터와 겹치는 영역안에서 최대값만을 추출한다. 위의 예시는 2 x 2 의 필터로 4 x 4 의 크기를 가진 입력이미지에 스트라이드 = 2를 적용했을 때..

합성곱 신경망(Convolution Neural Network)

지난번에 다수의 필터를 사용한 합성곱 연산의 예시를 보았다. 사실 각 필터마다 나온 결과 특성맵이 쌓이기 전 각 특성맵들은 Relu 함수를 거친 다음에 합쳐진다. 즉 하나의 합성곱층은 합성곱의 연산으로만 이루어진 것이 아니라 Relu 함수인 활성화함수 이렇게 두가지로 이루어져있다. 합성곱 신경망의 한 계층(합성곱층)을 위의 예시로 구성해보자. 1). 입력 데이터를 필터와 합성곱 연산한다. (결과: 4 x 4) 2). 그 각각의 결과에 편향(+ b[실수])을 더해준다. 편향 ‘b’는 하나의 실수지만 파이썬의 브로드캐스팅을 통해서 4 x 4 행렬에 맞게 16 개의 요소에 동일한 수를 더해주어 행렬과의 계산이 가능하게 해준다. 4). 편향을 더 해준 그 값에 비선형성(활성화함수로 ReLU 사용)을 적용해준다...

RGB 이미지의 합성곱 연산

지금까지는 위의 예시처럼 채널을 고려하지 않고 합성곱 연산을 했었는데, 실제 합성곱 연산의 입력이미지는 다수의 채널을 가지고 있거나 또는 이전 연산의 결과로 나온 특성 맵일 수도 있다. 그레이 스케일의 이미지의 경우 채널이 1개지만 RGB 이미지는 적,녹,청의 3개의 채널을 가지니 RGB 이미지를 예로 다수의 채널을 가진 입력 이미지의 합성곱 연산을 살펴보자. 입력이미지가 다수의 채널을 가진다면 필터 또한 같은 채널의 개수를 가져야 한다. “입력이미지의 채널 수 = 필터의 채널 수” 저 세 개의 행렬을 쌓은 것 같은 3 x 3 x 3 필터를 단순화시켜서 삼차원의 정육면체로 나타내볼 수 있다. 이때 합성곱 연산은 이전이랑 같은 방법이다. 이 정육면체의 필터를 입력 이미지의 가장자리부터 시작해 계산하면서 쭉..

패딩(Padding)

패딩 (Padding) 합성곱 연산에도 단점이 존재한다. 1). 위의 예시를 봐서도 알겠지만 합성곱 연산을 할 때마다 이미지가 축소된다. 이 작업을 여러 번 반복한다면 특성 맵은 초기 입력보다 매우 작아질 것이다. (1 x 1 크기만큼 축소될지도?) 윤곽선을 검출하거나 어떤 특성들을 찾아내려고 할 때마다 저렇게 이미지가 축소되는 걸 원하지는 않을 것이다. 2). 모서리 부분에 놓인 픽셀들의 정보들은 거의 날려버리게 된다. 입력 이미지의 모서리 부분에 있는 픽셀(파란 네모로 표기한)들을 보면 딱 한 번씩만 필터와 맵핑되니 결과 이미지인 특성 맵에 단 한번만 사용되는 것이다. 그만큼 다른 픽셀들과 비교했을 때, 결과 이미지에 덜 사용하게 되니 이 픽셀들의 정보들을 거진 사용하지 않게 되는 것이다. 이 두 문..

합성곱 연산(Convolution operation)

다충 퍼셉트론으로 이미지 인식 문제를 처리해야 한다고 가정해보자. 위의 고양이 이미지의 크기를 1000 x 1000이라 해보자. 추가로 칼라이미지라 채널을 3개를 가지니 해당 이미지의 차원은 1000 x 1000 x 3 으로 총 3백만 개의 픽셀값으로 이루어진 것이다. 따라서 신경망에서 입력층은 총 3백만개의 입력특징을 갖게 된다. 만일 이 신경망에서 첫 은닉층에서 1000개의 은닉노드가 있다면 첫번째 은닉층로 가는 매개변수의 수는 3,000,000 x 1000 = 삼십억개가 된다. 이렇게 변수가 크면 큰 만큼의 충분한 데이터를 얻어서 과적합을 방지하기가 어려워진다. 또한 메모리의 요구사항이 몇 십억개의 변수를 학습하기에는 적합하지 않을 수도 있다. 하지만 합성곱 연산을 통해 이미지의 크기에 대해 고민할..

픽셀(Pixel)과 채널(Channel)

합성곱 신경망을 통해 이미지가 어떻게 처리되는지 알아보기 전에 이미지가 컴퓨터에 어떻게 저장되는지 부터 알아보자. 8이라는 숫자가 써진 흑백이미지다. (그레이 스케일 이미지라고도 불린다.) 해당 이미지를 더 확대하고 자세히 살펴보면 이미지가 작은 사각형들로 이루어져 있는게 보인다. 이 각각의 작은 사각형들을 픽셀(Pixel)이라고 한다. 보통 이미지를 (높이 x 너비)라는 차원을 가진다 라고 하는데 이는 이미지의 크기를 의미한다. 이미지의 크기는 단순히 높이와 너비에 놓인 픽셀의 수로 위의 예시의 경우 높이에는 총 24개의 픽셀이, 너비에는 총 16개의 픽셀이 사용되어 24 x 16의 크기를 가진다. 가운데 사진을 보자. 각 픽셀은 저렇게 숫자 값으로 표시되며 이런 숫자들을 픽셀 값이라고 한다. 픽셀 값..