합성곱 신경망(Convolutional Neural Network, CNN)은 주로 이미지나 영상 데이터를 처리하는 데 사용되는 딥러닝 모델이다. CNN은 사람의 시각 시스템을 모방하여 이미지나 영상에서 중요한 특성을 자동으로 학습하고 추출하는 역할을 한다.
CNN의 각 레이어는 점점 더 복잡한 특징을 학습하여, 최종적으로 이미지를 정확하게 분류하거나 객체를 인식할 수 있게한다. 고양이 이미지를 학습하는 것을 예시로 들어보자.
1. 입력 이미지 (고양이 이미지)
고양이 이미지를 CNN 모델에 입력한다. 이 이미지의 크기는 224×224 픽셀이라 가정하자. 이 이미지는 각 픽셀에 대해 색상 값(예: RGB)이 포함된 2D 배열로 표현된다.
입력: 고양이의 사진
2. 합성곱 층 (Convolutional Layer)
입력 이미지가 첫 번째 합성곱 층에 들어가면, 이 층은 필터(또는 커널)를 사용하여 이미지에서 특징을 추출한다. 예를 들어, 합성곱 층에서는 다음과 같은 특징을 추출한다:
엣지(Edge): 고양이의 귀나 얼굴 모양의 엣지
텍스처(Texture): 고양이의 털 같은 특징을 감지.
합성곱 연산은 곱셈과 덧셈을 통해 이미지를 필터와 비교하여 특징 맵(feature map)을 생성한다.
MAC 계산기는 이 연산을 처리한다.각 필터는 이미지의 작은 영역을 처리하고, 그 결과를 누적하여 특징을 정의한다.
3. 활성화 함수 (ReLU Layer)
합성곱 연산으로 나온 특징 맵은 활성화 함수를 거친다. ReLU층을 예로 들면, ReLU는 음수 값을 0으로 변환하고, 양수 값은 그대로 유지하는 역할로, 중요한 특징을 더 강조하는 과정이다.
ReLU의 역할:
고양이 이미지에서 양수 값(특징의 강도)은 그대로 두고, 음수 값은 0으로 만들어 불필요한 정보(음수)를 제거한다. 이로써 비선형성을 추가하여 신경망이 더 복잡한 관계를 학습할 수 있게 만든다.
4. 풀링 층 (Pooling Layer)
ReLU를 거친 특징 맵은 풀링 층으로 전달된다. 풀링 층은 주로 최대 풀링을 사용하여 특징 맵의 크기를 줄이고, 주요 특징만 남긴다.
예시: 고양이의 얼굴 부분에서 추출된 특징이 최대 풀링을 통해 가장 중요한 특징만 남겨지고, 나머지는 제거된다.
풀링을 통해 이미지 크기가 줄어들어 계산이 효율적이고, 중요한 정보만 보존된다.
5. 다음 합성곱 층 & ReLU & 풀링
2 ~ 4 과정을 여러 번 반복한다. 이를 통해 점점 더 복잡한 특징을 추출한다. 예를 들어:
첫 번째 합성곱 층에서는 엣지나 기본적인 형태를 감지하고,
두 번째 합성곱 층에서는 귀와 눈의 위치나 고양이 얼굴의 특징을 감지하며,
세 번째 합성곱 층에서는 고양이의 전체적인 얼굴 모양이나 모양을 나타내는 고급 특징을 추출한다.
각 층마다 ReLU와 풀링을 통해 특징을 변환하고, 압축하여 중요한 정보만 남긴다.
6. 전결합 층 (Fully Connected Layer)
합성곱 연산과 풀링 과정을 거쳐, 최종적으로 나온 특징 맵은 전결합 층(fully connected layer)으로 전달된다. 전결합 층은 신경망의 출력층을 연결하는 층으로, 이제는 추출된 특징을 바탕으로 고양이인지 아닌지를 분류하는 작업을 한다.
예시: 고양이의 귀, 얼굴, 털 등 모든 특징을 수치적으로 결합하여, 그 이미지가 고양이인지 아닌지 판단하는 최종 결정이 이루어진다.
7. 출력 (Classification)
전결합 층의 출력은 고양이 이미지가 고양이인지, 아니면 다른 물체(예: 강아지, 자동차 등)인지에 대한 확률을 제공한다.
예시: 고양이일 확률이 90%, 아니면 다른 물체일 확률이 10%인 식으로, 고양이일 확률이 가장 높은 쪽을 선택하게 된다.
CNN을 통해 고양이 이미지 처리 과정 요약
입력 이미지 (고양이 사진)
합성곱 층: 필터를 사용하여 엣지, 패턴, 텍스처 등 주요 특징을 추출
ReLU: 출력 값에 비선형 변환을 적용해 신경망이 더 복잡한 관계를 학습할 수 있게 만듬
풀링 층: 특징 맵의 크기를 줄이고, 주요 특징만 보존
반복: 여러 합성곱 층, ReLU, 풀링을 거쳐 점점 더 복잡한 특징을 추출
전결합 층: 추출된 특징을 수치적으로 결합하여 고양이인지 아닌지를 분류
출력: 고양이일 확률을 계산하고, 고양이인지 아닌지 판단
CONVOLUTION
컨볼루션(Convolution)은 이미지 처리와 딥러닝, 특히 자율주행 시스템에서 사용되는 합성곱 신경망(CNN)에서 중요한 연산이다. 이 연산은 입력 데이터에 필터(또는 커널)를 적용하여 특성(feature)을 추출하는 과정이다.
MAC
MAC (Multiply-Accumulate) 계산기는 합성곱 신경망(CNN)에서 CONVOLUTION 역할을 하는 하드웨어 유닛이다. 이를 위해 MAC 유닛은 곱셈과 덧셈을 반복적으로 수행하는 연산을 하게 된다.
MAC 유닛은 주로 곱셈(Multiply)과 누적(Accumulate) 연산을 순차적으로 수행한다. 예를 들어, CNN에서는 입력 데이터와 필터의 각 요소를 곱하고 그 결과를 모두 더하는 연산을 반복적으로 처리해야 한다. 이때 곱셈과 덧셈이 핵심적인 역할을 하고, 이를 효율적으로 처리할 수 있는 것이 MAC 계산기이다.
곱셈기(Multiplier): CNN에서 입력 이미지의 픽셀 값과 필터의 가중치를 곱할 때 사용된다.
덧셈기(Adder): CNN에서는 각 필터의 결과를 누적하여 하나의 출력 값으로 만든다.
레지스터(Register): 레지스터는 계산된 값을 일시적으로 저장하는 메모리 역할을 한다. MAC 유닛에서 계산된 값을 누적하여 Output을 내보냄과 동시에 Feedback을 가능하게 한다.
이번 프로젝트에서는 고성능 MAC을 설계하기 위한 여러 모듈을 조합 해보고, Delay와 Area 차이를 비교한다.