티스토리 뷰

딥러닝

CNN은 어떻게 특징을 뽑아내나?

hyuna_engineer 2025. 1. 16. 15:50

하이레벨적으로 아직도 헷갈리는 것 같아서 정리해보았다.

 

즉, Convolution Filter들이 단계별로 복잡한 특징을 뽑아내고, 마지막에 그 특징들을 조합해 ' 컵'. '사람' 과 같은 클래스를 알아맞히는 방법이 어떻게 진행되는거지?

 

일단 CNN 큰 흐름

  1. Input : 이미지를 픽셀 단위로 입력 받음.
  2. Feature Extraction : 여러 단계의 Convolution과 Pooling을 거치면서, 이미지 안의 'Features'들 예를 들어, edges, textures, shapes 들을 뽑아냄.
  3. Classification : 마지막에 Fully Connected Layer(FC Layer)나 Global Average Pooling 등을 통해 "이 이미지의 최종 feature vector가 어떤 class에 가까운지" 판단하는 걸 확률 형태로 결과 뽑아냄.

2. 에서 "어떤" 특징을 뽑아내는가?

  • 초반 layer : edge, corner 등 아주 단순한 형태 feature 발견. ex. "Horizontal filter"은 이미지에 수평선이 이에 대한 반응값이 커지고, 없으면 작게.
  • 중간 layer : 초반 layer에서 발견한 단순한 특징을 조합해 조금 더 복잡한 패턴 인식. ex. "둥근 선들이 모여 있는 패턴"을 감지, 혹은 "특정 texture을 가진 영역" 찾아내기.
  • 후반 layer : 더 상위 개념(ex. 컵 손잡이, 사람 눈,코,입 위치 등)을 포착. 이런 특징들이 합쳐져서 "이건 사람 얼굴", "컵이군" 이런 걸 판단하게 해주는 feature 뽑아냄.

3. 그래서 어떻게 아는건가?

CNN의 마지막에는 이렇게 convolution layer들이 이미지에서 추출한 유용한 특징 vector 바탕으로 컵에 해당하는 특징이 더 많은가? 사람에 해당하는 특징이 더 많은가 판단.

이때, FC Layer이나 global average pooling 뒤에 softmax 함수를 붙여서 여러 클래스 중 어디에 해당하는지 확률 분포를 통해 판단하게 해준다. 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/04   »
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
글 보관함