인공지능

Computer Vision Task & CNN (11)

원담 2025. 5. 23. 14:33
728x90

Computer Vision Task란?

컴퓨터 비전은 컴퓨터가 이미지를 보고 이해하게 만드는 기술입니다. 대표적인 작업들은 다음과 같다.

  1. Image Classification (단일 객체 분류)
    • 이미지에 어떤 객체가 있는지 맞히는 작업 (예: 이 사진은 고양이다!)
  2. Localization (단일 객체 위치 지정)
    • 객체가 어디에 있는지를 찾아 네모 박스로 표시 (예: 고양이가 어디 있는지 네모로 표시)
  3. Object Detection (다중 객체 탐지)
    • 여러 개의 객체를 동시에 찾아서 분류하고 위치도 함께 표시 (예: 고양이와 강아지를 동시에 찾아냄)
  4. Automated Colorization
    • 흑백 사진을 자동으로 컬러로 바꿔주는 작업
  5. Image Captioning(CNN + LLM)
    • 이미지를 보고 “고양이가 공을 가지고 논다”처럼 설명을 자동으로 붙여주는 기술
  6. Image to Text Translation(CNN + LLM)
    • 이미지 안의 글씨를 텍스트로 바꾸거나, 이미지 의미를 번역하는 작업

Basic Neural Network (기초 신경망)

  • 이미지를 28×28 크기의 흑백 픽셀로 표현하면 총 784개의 숫자(=784차원 벡터)가 됩니다.
  • 이 벡터를 입력층에 넣고, 여러 개의 은닉층을 지나 출력층에서 결과를 예측합니다.
  • 예: 손글씨 숫자 이미지 → [0~9 중 어떤 숫자인지] 맞히는 문제

왜 CNN이 필요한가?

2D 이미지(가로세로 구조)를 1D 벡터(일렬로)로 펼쳐버리면 이미지의 공간 구조(형태나 위치)가 사라져버립니다.
예를 들어, 하트 모양이 있어도 픽셀만 나열하면 그게 하트인지 알 수 없다. 그래서 CNN(합성곱신경망)은 이런 공간적 구조를 유지하면서 학습할 수 있게 해줍니다.

CNN의 구성 (Convolutional Neural Network)

CNN은 이미지 처리에 특히 뛰어난 성능을 보이는 딥러닝 모델 구조이다. 이미지, 음성, 영상 등 고차원 데이터에서 특징을 뽑아내기 위해 설계된 인공신경망이다. CNN은 다음처럼 층(layer)으로 구성됩니다.

Input → Conv → Pool → Conv → Pool → FC → Softmax
  1. Input: 원래 이미지 입력 (예: 컬러 이미지라면 3채널)
  2. Feature Detection
    • Convolution: 특징 추출 (예: 눈, 코, 입 같은 모양을 찾음)
    • ReLU: 음수는 0으로 바꿔주는 비선형 함수
    • Pooling: 중요한 정보만 압축(필터를 거친 여러 특징 중 가장 중요한 특징 하나를 선택하여 feature 수를 줄인다 Sub-sampling + 학습해야 할 매개변수가 없고, 채널 수가 변하지 않음)
  3. Flatten: 2D 이미지를 1D로 변환
  4. Fully Connected Layer: 전통적인 신경망처럼 연결(이전 레이어의 모든 처리 결과를 하나로 연결한다)
  5. Softmax + Loss: 예측 결과를 확률로 만들고, 실제 정답과 비교해 학습

FC Layer(classifier)

이미지에서 특징을 뽑아내기 위해 필터(커널)를 겹쳐가며 연산합니다.

  • 필터를 이미지 위에 조금씩 이동시키며(슬라이딩) 곱하고 더함
  • 이 결과를 모아 만든 것이 Feature Map(특징 맵)

이 과정이 이미지의 윤곽, 색 대비, 질감 등을 학습하게 합니다. 이 구조 덕분에 CNN은 이미지 인식, 자율주행, 얼굴 인식 등 많은 분야에서 탁월한 성능을 발휘하고 있다. 

그런데! CNN에서는 이 커널을 사람이 정하지 않는다.

❗ 커널 값(안의 숫자들)은 학습을 통해 자동으로 결정된다.

CNN도 다른 인공신경망처럼 이렇게 학습한다.

  1. 처음에는 커널 안의 숫자를 아무렇게나 랜덤으로 준다.
  2. 이 커널을 이미지에 적용해서 결과(예측값)를 냅니다.
  3. 실제 정답과 비교해서 오차(error)를 계산합니다.
  4. 오차를 줄이기 위해 커널 안의 숫자들을 조금씩 수정한다.(👉 이게 역전파 + 경사하강법)

이 과정을 수천~수만 번 반복하면서 커널은 점점 더 유용한 특징을 잘 뽑는 숫자 조합으로 바뀌게 된다.

사람은 이런 설계 요소(하이퍼파라미터)는 직접 정한다.

  • 커널 크기 (3x3? 5x5?)
  • 커널 개수 (몇 개 필터를 쓸 것인가?)
  • 스트라이드, 패딩, 풀링 유무 등등
  • 풀링 레이어의 갯수, FC layer 갯수, FC layer를 구성하는 노드의 갯수
  • 학습을 위한 batch size,epochs, learning rate, momentum 등등

➡ 하지만 커널 안의 숫자 (= 필터가 학습할 ‘무늬’ 정보)는 컴퓨터가 학습을 통해 자동으로 정합니다.

CNN이 학습하는 Feature Map

CNN은 단순한 선부터 시작해서 점점 복잡한 패턴을 학습합니다. 이런 특성 추출 과정을 거쳐 이미지를 이해하고 분류하는 능력을 갖추게 됩니다.

  • Low-Level Feature: 선, 모서리
  • Mid-Level Feature: 텍스처, 윤곽
  • High-Level Feature: 사람 얼굴, 고양이 귀 등 복합 특징

CNN을 설계하고 튜닝할 때, 입출력 크기, 가중치 수, 메모리 사용량, 연산량을 감안해야 효율적인 모델이 된다

1. Feature Map Size

커널이 이미지를 지나가며 만든 새로운 이미지의 크기가 어떻게 달라질까?
CNN을 설계할 땐 다음 레이어로 넘어갈 때 이미지 크기가 얼마나 줄어드는지 미리 감을 잡아야 한다!

  • CNN에서 필터(커널)를 이미지에 적용하면, 원래 이미지보다 작거나 같은 새로운 이미지(= feature map)가 나온다.
  • 그 크기가 어떻게 결정되는지는 필터 크기, 얼마나 많이 건너뛰며 움직이는지(stride), 그리고 주변에 테두리를 추가했는지(padding)에 따라 달라진다.

2. Stride 값을 크게 하면?

필터가 한 칸씩이 아니라 여러 칸씩 건너뛰면 무슨 일이 벌어질까?

  • 계산량은 줄어든다. 빨리 처리할 수 있지만 출력 feature map의 크기가 작아지고, 더 많은 정보를 잃게 된다.
  • 즉, 속도는 빨라지지만 정보 손실 가능성이 커진다

3. Padding을 주는 이유는?

왜 이미지 주변에 0을 둘러서 크기를 억지로 유지할까?
원본 정보가 너무 많이 줄어들지 않게 하려면 padding이 중요하다!

  • 필터가 지나가면서 이미지 크기가 줄어드는 걸 막기 위한 보호막 역할이다. 결과적으로 더 많은 위치에서 정보를 추출할 수 있게 해준다.

4. 가중치(Weights)는 얼마나 필요한가?

이 레이어에서는 학습해야 할 값이 얼마나 많을까?
모델이 복잡해질수록 학습해야 할 값이 많아져서 학습 시간과 메모리가 늘어난다.

  • CNN은 필터 내부의 숫자들을 학습하면서 이미지의 특징을 뽑아낸다.
  • 필터 크기와 채널 수, 필터 개수가 늘어나면 가중치 수도 늘어난다.

5. 메모리 사용량은 어느 정도일까?

이미지 하나 처리할 때 메모리를 얼마나 써야 할까?
모델을 설계할 때, 실제 사용할 하드웨어의 메모리 용량도 반드시 고려해야 한다

  • CNN은 각 레이어에서 feature map을 만들어내는데, 이게 곧 메모리를 잡아먹는 덩어리이다.
  • 입력 이미지의 크기, 채널 수, 필터 개수에 따라 추론 시간 동안 필요한 메모리 양이 크게 달라진다.

6. 계산 복잡도는 얼마나 될까?

"이 레이어에서 얼마나 많은 연산이 발생할까?"

  • 학습과 추론에서 연산량이 많으면 시간이 오래 걸린다.
  • 특히 이미지가 크고 필터가 많으면 연산량이 기하급수적으로 커져서 속도를 고려한 최적화도 매우 중요하다.

유명한 CNN 모델들

1. VGGNet

핵심 구조

  • Conv Layer 13개 + FC Layer 3개
  • 총 가중치 수 약 1.38억 개 (138M)
  • 약 500MB의 저장 공간 필요

설계 철학 1: 3×3 필터만 써도 충분하다

이전 모델(AlexNet)은 처음에 11×11 필터를 사용했지만, VGGNet은 단순히 3×3 필터를 여러 번 겹쳐서 사용해도 충분히 복잡한 특징을 추출할 수 있음을 보여줬습니다 ==> 3×3을 2번 쓰면 receptive field가 5×5와 동일하지만, 가중치 수는 훨씬 적습니다.

설계 철학 2: 작은 커널을 여러 번 쓰면 좋은 점

항목 5×5 필터 1회 3×3 필터 2회
총 가중치 수 75 36
활성화 함수 (ReLU) 1회 2회
Receptive Field 5 5
이점 요약:
  • 가중치 수가 줄어듬 → 메모리 사용량 감소
  • 더 많은 비선형성 (ReLU 2회) → 더 복잡한 표현 가능
  • 계층적으로 특징 추출 → 정보 보존 + 표현력 증가

 Receptive Field란?

  • 커널이 이미지에서 바라보는 '영역의 크기'
  • Convolution을 거칠수록 RF는 점점 커집니다.
  • 많은 Convolution을 쌓는 것이, 큰 필터 하나를 쓰는 것보다 더 효율적입니다.

결론

  1. 단순한 구조로도 깊은 네트워크 가능하다는 것 증명
  2. 작은 필터 반복으로 계산량, 메모리 최적화
  3. ReLU를 여러 번 통과하며 비선형성 향상

이후 나온 ResNet, DenseNet, MobileNet 같은 구조들은 대부분 VGG 구조를 기반으로 더 개선한 형태입니다.

2. GoogLeNet (Inception V1)

개요

  • 2014년 ILSVRC 1위 모델 (2위는 VGGNet)
  • 논문 제목: Going Deeper with Convolutions
  • 22층 깊이의 신경망 + Inception 모듈 사용

 Inception 구조의 핵심 아이디어

  • Inception 모듈 = 다양한 크기의 필터(1x1, 3x3, 5x5)를 병렬로 적용 → 다양한 특징을 한 번에 추출
  • 결과를 concat(병합)해서 다음 layer에 전달 (병렬 분기 → 병합 구조)
  • Bottleneck 구조
    • 1x1 Convolution 사용: 채널 수를 줄여주는 역할 (Dimensionality Reduction.
    • 장점
      • 연산량 감소
      • 더 많은 계층을 쌓을 수 있음
      • ReLU를 더 많이 거쳐 비선형성 증가 (복잡한 패턴 학습 가능)

연산량 (Conv Ops) 비교

  • 그냥 Inception: 854M 연산
  • Bottleneck 구조: 358M 연산
    → 성능은 유지하면서도 연산량을 크게 줄임

학습 보조기 (Auxiliary Classifiers)

  • 중간에 있는 작은 분류기
  • 학습 시에는 역전파 신호가 깊이 전달되도록 돕는 역할 (Gradient Vanishing 방지)
  • 추론 시에는 사용하지 않음

최종 정리 (Summary)

  • Inception = 다양한 필터 + Bottleneck 구조
  • 장점:
    • 가중치 수 감소 (파라미터 수 절약)
    • 비선형성 증가 (복잡한 특징 더 잘 학습)
    • 블록/모듈화된 새로운 구조 사용 → 깊고 효율적인 모델 설계 가능

3. ResNet 구조의 핵심 아이디어

Skip Connection (스킵 연결)

  • 일반적인 신경망은 한 층씩 순차적으로 전달되지만,
  • ResNet은 입력 x를 출력에 직접 더하는 연결을 추가함
    H(x) = F(x) + x
    → 즉, "원래 정보 + 처리된 정보"를 함께 보냄

왜 필요한가?

  • 신경망이 깊어지면 생기는 문제: Gradient Vanishing (기울기 소실) → 학습이 안 됨
  • 스킵 연결은 이 문제를 막아줌 → 깊어도 학습 가능

효과

  • 152층 같은 초깊은 네트워크도 학습 가능
  • ImageNet 대회 1위 (2015년 LSVRC)

ResNet 추가 특징

  • Batch Normalization 적용: 학습 안정성↑
  • GAP(Global Average Pooling) 사용: FC Layer 대신 평균값 GAP(Global Average Pooling) 으로 출력 → 파라미터↓, 과적합↓
모델 
구조 특징
VGG 3x3 커널 반복 사용 (단순하고 깊음)
Inception 다양한 커널을 병렬로 사용 (1x1, 3x3, 5x5), 병목 구조
ResNet Skip Connection 도입 (딥러닝 한계 극복)

Transfer Learning (전이 학습)

개념

  • 이미 학습된 좋은 모델(VGG, ResNet 등)을 가져와서 내 문제에 맞게 "조금만 추가 학습"하는 방식(새로운 모델을 만든다)
  • 학습을 빠르게 하며 예측 성능을 더 높인다
  • 이미 훈련이 된 모델이 있고, 특히 해당 모델과 유사한 문제를 해결할떄 효과적이다

 장점

  • 적은 데이터로도 빠르고 효과적인 학습
  • 특히 기존 모델과 유사한 문제일수록 효과적 
구분 Transfer Learning Fine-tuning
기존 가중치 대부분 고정 (freeze) 일부 업데이트 (unfreeze)
학습 대상 주로 출력층 (FC layer)만 학습 중간층 이상 전체 또는 일부 재학습
데이터 양 적을 때 유리 많을 때 유리
문제 유사도 기존 문제와 유사할 때 기존 문제와 다를 때
학습 시간 빠름 더 김

예시

상황  전이학습 사용  파인튜닝 사용
의류 쇼핑몰 이미지에서 "티셔츠 vs 후드티" 분류 출력층만 학습 굳이 전체를 바꿀 필요 없음
X-ray 이미지에서 "폐암 vs 정상" 탐지 단순 출력층만 바꾸면 부족 상위 레이어 재학습 필요
음식 이미지에서 "한식 vs 양식" 구분 빠르게 가능 가능하지만 무겁고 느림
일반 사진에서 "예술 스타일 분류" 기존 특징 부족할 수 있음 Fine-tuning이 더 좋음

좋은 성능의 인공지능 신경망이란?

다음 4가지 측면에서 성능을 평가한다.

  1. 일반화 능력 (Generalization): 훈련 데이터에만 잘 맞는 게 아니라 새로운 데이터에도 잘 작동해야 함
  2. 정확도 (Accuracy): 예측이 얼마나 정답과 잘 맞는지를 평가
  3. 리소스 효율 (Memory & Computation): 메모리 사용량, 연산량이 적을수록 좋음
  4. 학습 속도: 빠르게 수렴하는 학습 과정이 효율적

Overfitting(과적합)을 막기 위한 방법


방법 설명
데이터 증가 Image Augmentation: 회전, 자르기 등 변형으로 학습 데이터 양 늘리기
조기 종료 (Early Stopping) 검증 정확도가 떨어지기 시작하면 학습을 중단
Regularization (정규화) L1, L2, Dropout 등으로 과도한 학습 억제
앙상블(Ensemble) 여러 모델의 예측을 평균냄으로써 안정성 증가

Regularization 기법들

  • Dropout: 학습 중 무작위로 일부 뉴런을 꺼서 과적합 방지
  • L1, L2 Regularization: 가중치 크기에 패널티를 부여하여 너무 복잡한 모델 방지
  • Batch Normalization
    • 배치 단위로 입력을 정규화하여 학습 안정화 및 속도 향상
      • 한번에 입력으로 들어오는 배치 단위로 데이터 분포의 평균이 0, 분산이 1이 되도록 정규화 진행

Feature map 사이즈 줄이기 (연산량·메모리 절감)

방법 설명
Pooling 대표값 추출하여 이미지 크기 감소 (Max Pooling 등)
Stride 필터를 일정 간격으로 이동시켜 크기 축소 효과

Convolution은 이미지 전용이 아니다

이미지뿐 아니라 신호 처리, 텍스트, 시계열 데이터 등 연속된 정보에도 적용 가능

Conv1D: 이미지 외의 데이터 처리(한줄의 데이터를 훑는 필터)

  • 텍스트 분류 (Text Classification)
    • 각 단어를 벡터로 임베딩하고, Conv1D로 문장 내 패턴 추출
    • 예: “once upon a time” → 문법/의미적 패턴 탐지
  • 시계열 데이터 처리
    • 시간 흐름에 따라 순차적으로 발생하는 데이터를 다룸
    • 예: 주식 가격 예측, 센서 데이터 분석 등

Dilated Convolution(띄엄 띄엄 보는 필터)

  • 중간을 건너뛰면서 멀리 있는 정보까지 한 번에 받아들임
  • 예: 시간 간격이 긴 이벤트들을 한 번에 감지할 때 유리

Transposed Convolution (해상도 올리기

  • 업샘플링 기법: 작은 feature map을 다시 크게 복원
  • 예: 이미지 복원, segmentation 등에서 활용
  • 아래에서 위로 퍼뜨리는 듯한 연산
용도적용
 예시사용  기법
문장 구조 이해 스팸 이메일 분류 Conv1D (Text CNN)
심박수 예측 스마트워치 심전도 데이터 Conv1D (시계열 CNN)
멀리 떨어진 원인 추적 교통량 예측, 감정 분석 Dilated Convolution
이미지 복원 손상된 이미지 재구성 Transposed Conv
728x90

'인공지능' 카테고리의 다른 글

NLP(Natural Language Processing) (13)  (2) 2025.05.26
Embedding(12)  (1) 2025.05.24
머신러닝 회귀 알고리즘(10)  (1) 2025.05.22
머신러닝 분류 알고리즘(9)  (2) 2025.05.22
머신러닝 군집 알고리즘 (8)  (1) 2025.05.22