ML 실습: 이미지 분류

컨볼루셔널 신경망 소개

컨볼루셔널 신경망(CNN)을 사용하여 이미지 콘텐츠에서 상위 수준 및 상위 수준 표현을 점진적으로 추출할 수 있다는 사실을 발견하여 이미지 분류용 모델을 빌드했습니다. CNN은 질감이나 모양과 같은 특성을 도출하기 위해 데이터를 사전 처리하는 대신 이미지의 원시 픽셀 데이터만 입력으로 받아들여서 이러한 특성을 추출하는 방법을 익힙니다. 그런 다음 최종적으로 그 객체가 어떤 객체를 구성하는지 추론합니다.

먼저 CNN은 입력 특성 맵을 수신합니다. 입력 특성 맵은 처음 두 치수의 크기가 픽셀로 표시된 이미지의 길이와 너비에 해당합니다. 세 번째 차원의 크기는 3입니다(색상 이미지의 3개 채널(빨간색, 초록색, 파란색)에 해당). CNN은 각각 3개의 작업을 실행하는 모듈 스택으로 구성됩니다.

1. 컨볼루션

컨볼루션은 입력 특성 맵의 타일을 추출한 다음 이 패턴에 필터를 적용하여 새로운 특성을 계산하고, 출력 특성 맵, 합성 특성(입력 특성 맵과 크기 및 깊이가 다를 수 있음)을 생성합니다. 컨볼루션은 두 개의 매개변수로 정의됩니다.

  • 추출되는 타일의 크기(일반적으로 3x3 또는 5x5픽셀)
  • 출력 특성 맵의 깊이: 적용되는 필터 수에 해당합니다.

컨볼루션 중에 필터 (타일 크기와 같은 크기)는 한 번에 한 픽셀씩 입력 특성 맵의 가로와 세로를 효과적으로 슬라이드하면서 해당하는 각 타일을 추출합니다 (그림 3 참고).

4x4 특성 맵에 대한 3x3 컨볼루션그림 3. 깊이 1의 5x5 입력 특성 맵에 대해 깊이 1의 3x3 컨볼루션이 수행되었습니다. 5x5 특성 맵에서 타일을 추출할 수 있는 9x3 위치가 9개 있으므로 이 컨볼루션은 3x3 출력 특성 맵을 생성합니다.

CNN은 각 필터-타일 쌍에 대해 필터 매트릭스와 타일 행렬의 요소별 곱셈을 수행한 다음, 결과 행렬의 모든 요소를 더하여 단일 값을 얻습니다. 그런 다음 모든 필터-타일 쌍의 각 결과 값은 합성된 특성 행렬에 출력됩니다 (그림 4a 및 4b 참고).

5x5 특성 맵과 3x3 컨볼루션그림 4a. 왼쪽: 5x5 입력 특성 맵 (깊이 1) 오른쪽: 3x3 컨볼루션 (깊이 1)

그림 4b. 왼쪽: 5x5 입력 특성 맵에서 3x3 컨볼루션이 실행됩니다. 오른쪽: 컨볼루션 결과 도출된 특성입니다. 출력 특성 맵의 값을 클릭하면 계산 방법이 표시됩니다.

학습 중 CNN은 입력 특성 맵에서 질감, 가장자리, 모양 등 유의미한 특성을 추출할 수 있는 필터 행렬의 최적값을 학습합니다. 입력에 적용되는 필터 (출력 특성 맵 깊이)의 수가 증가하면 CNN에서 추출할 수 있는 특성의 수도 증가합니다. 단, 필터를 사용할 경우 CNN에서 사용하는 대부분의 리소스가 필터에 포함되기 때문에 학습 시간이 늘어날수록 학습 시간이 늘어납니다. 또한 네트워크에 추가된 각 필터는 이전 필터에 비해 적은 값을 제공하므로 엔지니어는 정확한 이미지 분류에 필요한 특성을 추출하는 데 필요한 최소 개수의 필터만 사용하는 네트워크를 구성하는 것을 목표로 합니다.

2. ReLU

CNN은 모델에 비선형성을 도입하기 위해 각 컨볼루션 작업에 따라 ReLU(Rectified Linear Unit) 변환을 적용합니다. ReLU 함수인 \(F(x)=max(0,x)\)은 x > 0의 모든 값에 대해 x를 반환하고 x ≤ 0인 모든 값에는 0을 반환합니다.

3. 풀링

ReLU는 풀링 단계가 끝난 후 CNN이 컨볼루션된 특성을 다운샘플링하여 (처리 시간을 절약함) 특성 맵의 차원 수를 줄이는 동시에 가장 중요한 특성 정보는 유지합니다. 이 프로세스에 사용되는 일반적인 알고리즘을 최대 풀링이라고 합니다.

최대 풀링은 컨볼루션과 유사한 방식으로 작동합니다. 특성 맵을 슬라이드하여 지정된 크기의 타일을 추출합니다. 각 타일에서 최댓값은 새로운 특성 맵에 출력되고 다른 모든 값은 삭제됩니다. 최대 풀링 작업은 두 가지 매개변수를 사용합니다.

  • 최대 풀링 필터 크기 (일반적으로 2x2픽셀)
  • 스트라이드: 추출된 타일을 분리하는 거리(픽셀)입니다. 필터가 특성 맵에 픽셀 단위로 슬라이드되는 컨볼루션과 달리 최대 풀링에서 스트라이드는 각 타일이 추출되는 위치를 결정합니다. 2x2 필터의 경우 스트라이드가 2이면 최대 풀링 연산이 특성 맵에서 겹치지 않는 모든 2x2 타일을 추출합니다(그림 5 참고).

2x2 필터와 스트라이드 2를 사용하는 4x4 특성 맵에 대한 최대 풀링 애니메이션

그림 5. 왼쪽: 4x4 특성 맵을 대상으로 2x2 필터와 스트라이드 2를 사용하는 최대 풀링이 실행됩니다. 오른쪽: 최대 풀링 작업의 출력입니다. 결과 특성 맵은 이제 2x2이며 각 타일의 최댓값만 유지됩니다.

완전 연결 레이어

컨볼루셔널 신경망의 끝에는 1개 이상의 완전히 연결된 레이어가 있습니다 (첫 번째 레이어의 두 노드가 두 번째 레이어의 모든 노드에 연결된 경우). 컨볼루션에서 추출한 특성을 기반으로 분류를 수행하는 역할을 합니다. 일반적으로 완전히 연결된 레이어에는 소프트맥스 활성화 함수가 포함되어 있으며, 이 함수는 모델이 예측하려고 하는 각 분류 라벨에 대한 확률 값을 0에서 1 사이로 출력합니다.

그림 6는 컨볼루셔널 신경망의 엔드 투 엔드 구조를 보여줍니다.

입력, 컨볼루션 모듈 2개, 분류용 완전 연결형 레이어 2개를 보여주는 컨볼루셔널 신경망의 엔드 투 엔드 다이어그램

그림 6. 여기에 표시된 CNN에는 특성 추출을 위한 컨볼루션 모듈 2개 (컨볼루션 + ReLU + 풀링)와 분류용 완전 연결 레이어 2개가 포함되어 있습니다. 다른 CNN에는 컨볼루셔널 모듈이 더 많거나 적을 수 있고, 완전히 연결된 레이어가 더 많거나 적을 수 있습니다. 엔지니어들은 종종 모델에 가장 적합한 결과를 생성하는 구성을 알아내기 위해 실험합니다.