티스토리 뷰

728x90
반응형

목차

     

    서론

     

    딥러닝(Deep Learning)은 데이터에서 패턴을 학습하는 신경망 모델이며,

     

    특히 이미지, 영상, 음성과 같은 복잡한 데이터를 분석하는 데 강력한 성능을 발휘한다.


    이 중에서도 CNN(Convolutional Neural Network, 합성곱 신경망)은 이미지 분석에 특화된 딥러닝 모델로,


    이미지 인식(Image Classification), 객체 탐지(Object Detection), 영상 분할(Segmentation) 등 

     

    다양한 컴퓨터 비전(Computer Vision) 문제를 해결하는 데 필수적인 기술이다.

    CNN이 등장하기 전, 기본적인 신경망 모델인 다층 퍼셉트론(MLP, Multi-Layer Perceptron)도

     

    이미지 데이터를 처리하는 데 사용되었다.


    하지만 MLP는 입력 이미지의 모든 픽셀을 완전 연결층(Fully Connected Layer)에 직접 연결하기 때문에,

     

    픽셀 간의 지역적 관계(Local Dependency)를 잘 반영하지 못했고,

     

    이미지 크기가 커질수록 모델의 파라미터 수가 급격히 증가하여 학습이 어려워지는 한계가 있었다.

    이러한 문제를 해결하기 위해 CNN이 개발되었다.


    CNN의 핵심 개념은 다음 네 가지 단계로 나뉜다.

     

    합성곱 연산(Convolution)

     

    • 이미지에서 중요한 특징(Feature)을 자동으로 추출하는 과정이다.
    • 작은 크기의 필터(Filter)를 사용하여 이미지의 윤곽선, 패턴, 색상 변화 등을 감지한다.
    • 특정 부분의 정보를 강조하고, 불필요한 정보는 제거하여 보다 중요한 특징만 남긴다.

    참고로 지난 글에서 공부하고 지나온 백본(Backbone)이 바로 이 합성곱 연산을 수행한다.

     

    비전 인공지능에서 백본(Backbone)이란?

     

    비전 인공지능에서 백본(Backbone)이란?

    목차 이번엔 백본(Backbone)이다. 공부하면서 좀 더 알아야 할 것 같은 개념을 나를 위해 정리하는 글이기 때문에 너무 쉬울 수도 있다. 일단 백본이 뭔지 다시는 검색하지 않기 위해 정리한다. 

    gnidinger.tistory.com

    활성화 함수(Activation Function)

     

    • 비선형성(Non-linearity)을 추가하여 신경망이 복잡한 패턴을 학습할 수 있도록 도와준다.
    • CNN에서는 주로 ReLU(Rectified Linear Unit) 활성화 함수를 사용하며,
      음수를 0으로 변환하여 기울기 소실 문제(Vanishing Gradient Problem)를 완화한다.

    풀링(Pooling)

     

    • 합성곱 연산을 통해 생성된 특징 맵(Feature Map)의 크기를 줄여 연산량을 줄이고, 공간 정보를 요약하는 과정이다.
    • 대표적인 방법으로 최댓값 풀링(Max Pooling)과 평균 풀링(Average Pooling)이 있다.
    • 풀링을 적용하면 특징의 이동 불변성(Translation Invariance)이 강화되어, 
      물체가 이미지 내에서 이동해도 같은 특징을 유지할 수 있다.

    이동 불변성(Translation Invariance)?

     

    이동 불변성(Translation Invariance)이란,

     

    입력 이미지에서 물체의 위치가 조금 이동하더라도 같은 특징을 유지하는 성질을 의미한다.

     

    즉, 객체가 이미지 내에서 왼쪽으로 조금 이동하거나, 위로 올라가거나, 회전하더라도 여전히 같은 객체로 인식되는 것이다.

     

    이동 불변성은 모델의 일반화능력에 필수적이라 할 수 있는데, 풀링이 바로 이 이동 불변성을 강화한다.

     

    자세한 계산은 아래에서 다시 다루기로 하자.

     

    완전 연결층(Fully Connected Layer, FC Layer)

     

    • 합성곱 계층(Convolutional Layer)과 풀링 계층(Pooling Layer)을 거친 후,
      최종적으로 이미지의 전체적인 특징을 종합하여 특정 클래스(Class)로 분류하는 단계이다.
    • CNN의 마지막 출력은 소프트맥스(Softmax) 함수를 거쳐 확률 값으로 변환되며,
      이를 통해 이미지가 어떤 카테고리에 속하는지 예측한다.

     

    CNN은 위의 네 가지 핵심 단계가 계층적으로 연결된 구조를 가지고 있다.

     

    즉, 초기 층은 단순한 특징(윤곽선, 색상 변화)만 감지하지만, 층이 깊어질수록 점점 더 복잡한 형태와 객체의 의미를 인식하게 된다.

     

    이러한 계층적 특징 학습(Hierarchical Feature Learning) 구조 덕분에 CNN은 기존의 신경망 모델보다 훨씬 강력한 성능을 발휘한다.

    CNN의 기본 원리를 정확히 이해하는 것은 딥러닝을 활용한 이미지 분석 및 컴퓨터 비전 분야의 기초를 다지는 첫걸음이다.

     

    이제, CNN의 각 연산이 수학적으로 어떻게 이루어지는지 조금만 더 깊이 파고들어 보자.

     

    합성곱 연산(Convolution)

     

    합성곱의 개념

     

    합성곱(Convolution)은 입력 이미지에서 특정 패턴을 찾는 연산이다.

     

    이를 위해 필터(Filter) 또는 커널(Kernel)이라는 작은 행렬을 사용하여 이미지를 스캔하며 특징을 추출한다.

    입력 이미지 $I$와 필터 $K$를 사용하여 합성곱 연산을 정의하면 아래와 같으며,

     

    여기서

    • $I(i, j)$: 입력 이미지의 픽셀 값
    • $K(m, n)$: 필터(커널)의 값
    • $S(i, j)$: 출력 값(=특징 맵, Feature Map)
    • $M, N$: 필터의 크기(예: $3 \times 3$)

    즉, 필터를 이미지의 각 부분에 적용하여 원소별 곱을 구하고, 그 합을 출력 값으로 저장하는 과정이다.

     

    합성곱 연산 예제

     

    예제: $3 \times 3$ 필터를 $5 \times 5$ 이미지에 적용하기

     

    같은 방식으로 스트라이드(Stride) 값에 따라 이동하면서 합성곱을 수행하면 특징 맵(Feature Map)이 생성된다.

     

    스트라이드(Stride)와 패딩(Padding)

     

    스트라이드(Stride)

     

    • 스트라이드는 필터를 움직이는 간격이다.
    • 예를 들어, 스트라이드가 1이면 한 칸씩 이동, 2면 두 칸씩 이동한다.
    • 스트라이드가 커지면 출력 크기가 작아지고, 작으면 더 많은 연산이 필요하다.

    패딩(Padding)

     

    • 패딩은 입력 이미지의 테두리에 0을 추가하여 크기를 유지하는 기법이다.
    • 패딩이 없으면 합성곱 연산 후 출력 크기가 줄어든다.
    • "SAME" 패딩: 출력 크기를 입력 크기와 동일하게 유지
    • "VALID" 패딩: 패딩 없이 연산하여 출력 크기가 줄어듦

    활성화 함수(Activation Function)

     

    CNN에서 합성곱 연산 후에는 비선형성(Non-Linearity)을 추가하기 위해 활성화 함수를 사용한다.

     

    ReLU(Rectified Linear Unit)

    활성화 함수(Activation Functions) 이해하기

     

    활성화 함수(Activation Functions) 이해하기

    목차 딥러닝의 역사와 발전: 머신러닝에서 딥러닝까지의 여정 인공 신경망의 기본 구조와 중요성 활성화 함수(Activation Functions) 이해하기 손실 함수(Loss Functions)의 역할과 중요성 딥러닝에서의

    gnidinger.tistory.com

    풀링(Pooling)

     

    풀링(Pooling)은 특징 맵(Feature Map)의 크기를 줄이면서도 중요한 정보를 유지하는 과정이다.

     

    이 과정은 CNN의 계산량을 줄이고, 과적합을 방지하는 데 중요한 역할을 한다.

    앞서 말했듯, CNN에서는 필터(커널)를 이용한 합성곱(Convolution)을 통해 특징을 추출한다.

     

    하지만 합성곱을 여러 번 거치면 출력 크기가 커지고, 계산량도 증가하게 된다.

     

    이때 풀링 연산을 사용하면 이미지의 해상도를 낮추면서도 핵심 정보는 유지할 수 있다.

     

    풀링의 주요 목적은 다음과 같다:

    • 공간적 크기 축소 → 신경망의 연산량 감소
    • 불필요한 정보 제거 → 노이즈 감소
    • 특징 유지 → 중요한 정보는 남기면서 데이터 압축
    • 이동 불변성(Translation Invariance) 향상

     

    특히 이동 불변성(Translation Invariance)이 중요한 개념이다.

     

    CNN은 입력 이미지의 물체가 조금 이동해도 같은 결과를 내야 한다.

     

    풀링을 사용하면 작은 변형에도 동일한 특징을 유지할 수 있도록 도와준다.

     

    맥스 풀링(Max Pooling)

     

    맥스 풀링(Max Pooling)은 일정 영역 내에서 가장 큰 값을 선택하는 방식이다.

     

    이 방법은 가장 강한 특징(Edge, Texture 등)을 강조하는 효과가 있다.

     

    맥스 풀링 동작 방식

     

    1. 입력 특징 맵을 일정한 크기의 작은 영역(보통 2×2 또는 3×3)으로 나눈다.
    2. 각 영역에서 가장 큰 값을 선택하여 새로운 특징 맵을 만든다.
    3. 풀링 연산을 적용한 후 출력 맵의 크기는 원본보다 작아진다.

    예제: 2×2 맥스 풀링 적용

     

    맥스 풀링의 장점

     

    • 가장 뚜렷한 특징(Edge, Texture 등)을 강조할 수 있다.
    • 작은 이동이나 변형에도 강한 이동 불변성(Translation Invariance)을 갖는다.
    • 연산량이 줄어들어 CNN 학습 속도가 빨라진다.

    맥스 풀링의 단점

     

    • 중요한 정보가 가장 큰 값만 반영되므로, 작은 변화나 패턴이 무시될 수 있다.
    • 강한 엣지 정보는 유지되지만, 부드러운 영역에서는 정보 손실이 발생할 수도 있다.

    평균 풀링(Average Pooling)

     

    평균 풀링(Average Pooling)은 영역 내 픽셀들의 평균값을 계산하여 다운샘플링하는 방식이다.


    맥스 풀링과 달리 특정 값(Edge 등)만 강조하는 것이 아니라 전반적인 패턴을 부드럽게 유지하는 특징이 있다.

     

    평균 풀링 동작 방식

     

    1. 입력 특징 맵을 일정한 크기의 작은 영역으로 나눈다.
    2. 각 영역의 모든 값을 평균 내어 새로운 특징 맵을 생성 한다.
    3. 출력 크기는 원본보다 작아지지만, 원본의 패턴을 부드럽게 유지한다.

    예제: 2×2 평균 풀링 적용

     

     

    평균 풀링의 장점

     

    • 부드러운 특징을 유지할 수 있어 텍스처 분석 같은 경우에 유용하다.
    • 맥스 풀링처럼 특정 값만 강조하는 것이 아니라 전반적인 정보 손실이 적다.

    평균 풀링의 단점

     

    • 가장 중요한 특징(Edge 등)을 놓칠 수도 있다.
    • 패턴이 뚜렷하지 않게 되면서, 세부적인 차이를 구별하는 능력이 감소할 수 있다.

    풀링과 이동 불변성(Translation Invariance)

     

    위에서도 잠깐 나왔지만, 풀링의 가장 중요한 기능 중 하나는 이동 불변성(Translation Invariance)을 제공하는 것이다.

     

    즉, 이미지 내 객체가 조금 이동해도 여전히 같은 특징을 유지할 수 있도록 한다.

     

    이동 불변성(Translation Invariance)?

     

    • 사람이 이미지를 볼 때, 같은 물체가 약간의 위치 변화가 있어도 인식할 수 있는 능력이다.
    • 예를 들어, 강아지가 이미지 중앙에 있을 때나, 왼쪽으로 조금 이동했을 때나 여전히 강아지로 인식해야 한다.
    • 하지만 일반적인 완전 연결 신경망(MLP)에서는 픽셀 하나만 움직여도 출력이 크게 바뀔 수 있다.

    풀링이 이동 불변성을 향상하는 이유

     

    1. 크기를 축소하면서 위치 정보의 민감도를 낮춘다.
      → 작은 이동에 대해 네트워크가 덜 민감해진다.
    2. 특징을 대표하는 값(최댓값 또는 평균값)만 유지한다.
      → 동일한 물체라도 약간의 이동이 있어도 동일한 값이 유지된다.
    3. 과적합을 줄이고 일반화 성능을 높인다.
      → 같은 객체가 여러 위치에서 나와도 같은 특징이 유지되므로 더 강한 분류 성능을 갖는다.

    풀링의 선택 기준

     

    풀링 방식 장점 단점 사용 예시
    맥스 풀링 가장 강한 특징을 유지 작은 변화가 무시될 수 있음 일반적인 CNN, 엣지 검출
    평균 풀링 정보의 흐름을 유지 중요한 특징이 희석될 수 있음 텍스처 분석, 부드러운 패턴 탐색

     

    완전 연결층(Fully Connected Layer, FC)

     

    합성곱과 풀링을 거친 후, 마지막으로 완전 연결층(Fully Connected Layer, FC Layer)에서

     

    최종적으로 분류(Classification)를 수행한다.

     

    이 단계에서는 CNN이 추출한 고차원 특징 벡터(Feature Vector)를 활용하여 특정 클래스로 예측을 수행하게 된다.

     

    완전 연결층의 역할

     

    CNN의 합성곱 층(Convolutional Layer)과 풀링 층(Pooling Layer)은 이미지에서 유용한 특징을 추출하는 과정이다.

     

    하지만, 단순히 특징을 뽑는 것만으로는 우리가 원하는 "고양이", "강아지", "자동차" 같은 클래스(Class)로 분류할 수 없다.

     

    이를 위해 CNN의 마지막 단계에서 완전 연결층(Fully Connected Layer, FC Layer)을 사용하여 예측을 수행한다.

     

    완전 연결층의 주요 특징

     

    • 입력 뉴런(Neuron)과 출력 뉴런이 모두 연결된 구조를 갖는다.
    • CNN의 최종 출력(특징 벡터)을 받아, 이를 활용하여 클래스 확률을 예측한다.
    • 출력층에서 소프트맥스(Softmax) 함수를 사용하여 확률 값을 정규화한다.

    완전 연결층의 동작 과정

     

    완전 연결층에서 수행하는 핵심 연산은 행렬 곱(Matrix Multiplication)과 활성화 함수 적용이다.

     

    CNN의 마지막 합성곱 계층을 거치고 나면 특징 맵(Feature Map)이 3차원 텐서(Tensor) 형태로 남아 있다.

     

    이제 이를 1차원 벡터로 변환(Flattening) 한 후, 완전 연결층으로 입력한다.

     

    단계별 과정

     

    • Flattening(평탄화)

      • 합성곱 연산과 풀링을 거친 후, 특징 맵을 1차원 벡터로 변환한다
      • 예를 들어, 마지막 특징 맵이 7×7×512 크기라면, 이를 (7×7×512) = 25088 크기의 벡터로 펼친다.
    • 가중치(Weight)와 바이어스(Bias) 적용

      • 완전 연결층은 기본적으로 일반적인 신경망(MLP, 다층 퍼셉트론)과 동일하다.
      • 입력 벡터 $$X$$에 대해 가중치 행렬 $$W$$를 곱한 뒤 바이어스 $$b$$를 더해, 활성화 함수 적용:

    • 활성화 함수 적용

      • 완전 연결층에서는 일반적으로 ReLU 또는 소프트맥스(Softmax) 활성화 함수를 사용한다.
      • 은닉층(hidden layer)에서는 ReLU(Rectified Linear Unit) 활성화 함수를 적용하여 비선형성을 추가한다.
      • 출력층(output layer)에서는 소프트맥스(Softmax) 함수를 사용하여 확률 분포로 변환한다.

    CNN에서 활성화 함수가 여러번 적용되는 이유

     

    CNN에서 활성화 함수가 여러번 적용되는 이유

    목차CNN에서는 합성곱 계층(Convolutional Layer)에서 활성화 함수(예: ReLU)를 적용한 후, 완전 연결층(Fully Connected Layer)에서도 활성화 함수를 한 번 더 적용한다. 이유는 완전 연결층이 수행

    gnidinger.tistory.com

     

    소프트맥스(Softmax) 함수의 역할

     

    완전 연결층의 마지막 출력층에서는 소프트맥스 함수(Softmax Function)를 적용하여


    각 클래스(예: 고양이, 개, 자동차 등) 별 확률 값을 구하고, 가장 높은 확률을 가진 클래스를 최종 예측값으로 선택한다.

     

    수식은 다음과 같으며,

     

    여기서:

    • $z_i$: $i$번째 클래스의 로짓(logits, 신경망의 최종 출력값)
    • $e^{z_i}$: 지수함수를 적용하여 양수로 변환
    • $\sum_{j}e^{z_i}$: 전체 클래스의 지수 값의 합
    • 출력값$P(y_i)$는 0~1 사이의 확률 값이며, 모든 클래스의 합은 1이 된다.

    이 된다. 계속해서 그래프로 나타내면 다음과 같다.

    활성화 함수와는 다르다! 활성화 함수와는! 소프트맥스(Softmax)함수

     

    활성화 함수와는 다르다! 활성화 함수와는! 소프트맥스(Softmax)함수

    목차차근차근 배운 것이 아니라 빠르게 결론에 도달하려다 깨달은 것은 지식에 구멍이 너무도 많다는 것이다. 오늘은 CNN에 대해 공부 중 그런 생각이 들었다. 왜 ReLU는 중간층에서 사용되고 So

    gnidinger.tistory.com

     

    소프트맥스 예제



    만약 모델이 4개의 클래스를 예측한다고 가정해 보자.


    특징 벡터(로짓 값)가 아래와 같이 주어질 때,

    이를 소프트맥스 함수에 적용하면,

     

     

    완전 연결층을 사용하는 이유

     

    CNN에서 합성곱 계층은 특징을 추출하는 역할을 한다.


    하지만 최종적으로 "이 특징이 무엇을 의미하는가?"를 결정하는 것이 완전 연결층의 역할이다.

     

    완전 연결층이 필요한 이유

     

    • 특징 맵(Feature Map)에서 추출한 정보를 학습 가능한 가중치를 통해 최종적으로 분류할 수 있도록 한다.
    • 신경망이 비선형성을 학습하여 보다 복잡한 패턴을 이해할 수 있도록 돕는다.
    • Softmax를 통해 최종 클래스 확률을 출력하고, 이를 통해 CNN이 이미지 인식을 수행할 수 있도록 한다.

     

    완전 연결층의 장점과 단점

     

    장점

     

    • 비선형 변환을 추가하여 더욱 강력한 표현 능력 제공
    • 최종적으로 클래스 분류를 수행할 수 있도록 함
    • Softmax를 통해 확률 기반의 예측 가능

    단점

     

    • 파라미터 수가 많아지면 과적합(Overfitting) 위험이 커짐
    • 고해상도 이미지에서는 Flattening 후 연산량이 매우 커짐
      → 이를 해결하기 위해 Global Average Pooling(GAP) 기법을 사용하기도 한다.

    Global Average Pooling(GAP)?

     

    CNN 모델에서 FC Layer는 강력한 분류 성능을 제공하지만, 파라미터 수가 많아지는 단점이 있다.


    이를 해결하기 위해 GAP(Global Average Pooling)을 대체로 사용할 수도 있다.

     

    기법 특징
    완전 연결층 (FC Layer) Flatten 후 가중치를 학습하여 최종 분류
    Global Average Pooling (GAP) 특징 맵을 평균 내어 FC 없이 분류 수행

     

    요약: 완전 연결층

     

    1. Flattening을 통해 CNN 특징 맵을 1D 벡터로 변환한다.
    2. 완전 연결층에서 행렬 연산을 통해 가중치와 바이어스를 적용한다.
    3. 활성화 함수(ReLU, Softmax)를 적용하여 비선형성을 추가한다.
    4. Softmax를 통해 최종 클래스 확률을 계산한다.
    5. 가장 높은 확률을 가진 클래스를 최종 예측값으로 결정한다.

     

    CNN에서 완전 연결층은 최종 결정을 내리는 중요한 부분이다.

     

    따라서 모델의 성능을 높이기 위해 FC Layer의 구조를 잘 설계하는 것이 필수적이다.

     

    CNN의 전체 흐름 정리 및 수학적 요약

     

    입력 → 합성곱 → 활성화 함수 → 풀링 → 완전 연결층 → 출력

     

    1. 입력 이미지: 픽셀 행렬을 CNN에 전달
    2. 합성곱 계층(Convolution Layer): 필터를 사용하여 특징 추출
    3. 활성화 함수(Activation Function): 비선형성을 추가하여 표현력 증가
    4. 풀링 계층(Pooling Layer): 공간 크기를 줄여 연산량 감소 및 중요한 정보 유지
    5. 완전 연결층(Fully Connected Layer, FC): 특징을 학습하여 최종 분류 수행
    6. 출력(Softmax Layer): 각 클래스의 확률 값을 예측하여 최종 결과 도출

    이렇게 해서 CNN의 개념과 그 수학적 연산에 대해 살펴보았다.

     

    정리하자면 CNN은 합성곱 연산을 통해 이미지에서 중요한 특징을 추출하고, 

     

    이를 계층적으로 조합하여 점점 더 복잡한 패턴을 학습하는 구조다.

     

    풀링을 통해 불필요한 정보를 줄이면서도 중요한 특징을 유지하고, 완전 연결층에서 최종적으로 분류를 수행한다.

     

    이 과정에서 CNN은 지역적 특성을 효과적으로 학습하고, 

     

    이동 불변성(Translation Invariance)을 갖추며, 깊은 네트워크를 통해 고수준의 표현 학습이 가능하다.

     

    이러한 특성 덕분에 CNN은 이미지 인식, 객체 탐지, 영상 분할 등 다양한 비전 AI 분야에서 강력한 성능을 발휘한다.

     

    물론 실제 개발에선 수식이 어떻게 되는지는 크게 중요하지 않을 수도 있지만,

     

    알고 쓰는 것과 모르고 쓰는 것의 결론은 너무도 크게 차이가 날 것이라 생각한다.

     

    오랜만에 길게 글을 썼는데.. 내 공부에 도움이 되면 좋겠다.

     

    끝!

    반응형
    댓글
    공지사항
    최근에 올라온 글
    최근에 달린 댓글
    Total
    Today
    Yesterday
    링크
    «   2025/03   »
    1
    2 3 4 5 6 7 8
    9 10 11 12 13 14 15
    16 17 18 19 20 21 22
    23 24 25 26 27 28 29
    30 31
    글 보관함