본문 바로가기
AI/DeepLearning

[DL] CNN(합성곱신경망) 맛보기

by TSpoons 2025. 2. 12.

CNN(Convolution Neural Network)

- 이미지 처리에 특화된 딥러닝 아키텍처

- 이미지의 공간적 특성을 효과적으로 학습

 

합성곱신경망 구조

 

입력이미지 -> 합성곱층 -> 풀링층 -> 완전연결계층-> 출력층

 

 

 

합성곱층(Convolution Layer)

Kernel을 기준으로 입력 데이터를 컨볼루션 연산을 진행하여 특징을 뽑는다.

이때, 다음과 같은 옵션을 추가할 수 있는데

 

채널(Channel)

- 흑백(GrayScale) : 1

- 칼라(RGB) : 3

 

커널(kernel) (==필터)

- 이미지에서 특징을 추출하는 작은 행렬

 

스트라이드(Stride)

- 커널이 이동하는 간격

 

패딩(Padding)
- 경계 부분의 정보 손실을 방지하기 위해 0을 추가

 

풀링층(Pooling Layer)

 

- 특징 맵을 축소하여 계산량을 줄이고, 중요한 특징만 유지한다.

- 노이즈와 같은 약간의 변화에도 덜 민감하게 설정

  • 최대 풀링(Max Pooling): 영역 내 최댓값을 선택
  • 평균 풀링(Average Pooling): 영역 내 평균값을 선택

 

드롭아웃층(Dropout Layer)

 

- 과적합을 방지하기 위해 일부 뉴런을 무작위로 제거

플래튼층 (Flatten Layer)

- CNN의 출력을 1차원 벡터로 변환하여 완전 연결층(Dense Layer)에 전달한다.

 

완전연결층(Fully Connected Layer)

 

특징을 클래스와 연결하여 학습하는 역할

 

출력층(Output Layer)

 

마지막에 로그함수인 sigmoid or softmax를 이용하여 결론을 짓는다.

 

 

예시

# CNN 모델 정의
model = keras.Sequential([
    layers.Conv2D(32, (3,3), activation='relu', input_shape=(300, 300, 3)), 
    # kernel_size:(3,3), channel : 3
    layers.MaxPooling2D(2,2),
    layers.Conv2D(64, (3,3), activation='relu'),
    layers.MaxPooling2D(2,2),
    layers.Conv2D(128, (3,3), activation='relu'),
    layers.MaxPooling2D(2,2),
    layers.Flatten(),
    layers.Dense(512, activation='relu'),
    layers.Dense(1, activation='sigmoid')
])

 

 

 

참고

https://medium.com/@byanalytixlabs/convolutional-neural-networks-definition-architecture-types-applications-and-more-106ca69d9ae6

 

Convolutional Neural Networks — Definition, Architecture, Types, Applications, and more

In the evolution of computer science, we’ve shifted from manually crafted programs to machine learning-driven solutions. The recent…

medium.com

 

 

 

장점과 단점(with ChatGPT)

✅ 장점

  • 최소 3개 이상의 층을 사용하므로 높은 정확도를 보장함
  • 수동 특징 추출(feature extraction)이 불필요하여 자동화된 학습이 가능
  • 기존 네트워크를 재학습(retraining) 하여 새로운 인식 작업 수행 가능
  • 이미지, 영상, 오디오 신호에서 패턴을 감지할 수 있음
  • 적절한 정규화 기법을 적용하면 잡음(noise)에 강하고 과적합(overfitting)이 적음

❌ 한계

  • 패턴 인식 도구이므로 의미나 문맥(context)을 이해하는 데 한계가 있음
    • 예: 소셜 미디어 콘텐츠 검열에서 거짓 긍정(false positive) 발생
  • 문맥을 벗어난 이미지나 처음 보는 객체에서 오류 발생 가능
    • 예: 자동차 뒤에 자전거가 부착된 경우, 마차를 본 경우 혼란스러워함
  • 대량의 잘 레이블링된(training data) 데이터 필요, 데이터 확보가 어려움
  • 적대적 공격(adversarial attack)에 취약
    • 인간이 인식하지 못하는 작은 변화(노이즈)도 네트워크에 큰 영향을 줄 수 있음
    • 특히 자율주행 자동차 같은 응용 분야에서는 치명적인 문제 발생 가능
  • 계산 비용이 높고 많은 컴퓨터 메모리 필요
  • 딥러닝의 특성상 해석이 어려움

'AI > DeepLearning' 카테고리의 다른 글

[DL] RNN(순환신경망) 맛보기  (0) 2025.02.18
[DL] 딥러닝 훓어보기  (0) 2025.02.10