컴공지식/컴퓨터비전
CNN이란?
개강한 공대생
2024. 10. 24. 20:23
CNN은 이미지 인식이나 패턴 분석에 주로 쓰이는 딥러닝 알고리즘이다.
복잡한 이미지를 보고 컴퓨터가 물체가 뭔지 알아맞히게 해주는 거다.
CNN 구조:
- Input (입력)
- 이미지가 CNN으로 들어가면서 분석을 시작
- Convolution + ReLU (합성곱 + ReLU 활성화 함수)
- Convolution(합성곱): 필터를 이용해 이미지의 특징(엣지, 패턴)을 추출
- ReLU는 음수 값을 0으로 만들어서 비선형성을 추가. 계산을 더 단순하게 만드는 역할이다.
- Pooling (풀링)
- Max Pooling 같은 기법으로 이미지의 크기를 줄인다.
중요한 정보만 남기고, 덜 중요한 건 버리는 거다.
- Max Pooling 같은 기법으로 이미지의 크기를 줄인다.
- Flatten (펼치기)
- 3D로 된 이미지 데이터를 1차원 벡터로 변환
이렇게 해야 Fully Connected Layer에 넣어서 학습할 수 있다.
- 3D로 된 이미지 데이터를 1차원 벡터로 변환
- Fully Connected Layer (완전 연결층)
- 여기서는 모든 노드가 서로 연결된다. 이 층에서 CNN이 "이건 자동차야!" 같은 결론을 내리는 거다.
- Softmax (소프트맥스)
- 마지막으로 Softmax 함수가 각 클래스에 해당하는 확률을 계산한다.
예를 들어 "자동차일 확률 90%, 자전거일 확률 5%" 같은 식으로 말이다.
- 마지막으로 Softmax 함수가 각 클래스에 해당하는 확률을 계산한다.
아래 이미지는 Convolution을 시각화한거다.
ReLU가 사용되는 이유는
- Gradient Vanishing 문제 해결
- 기존에 쓰이던 시그모이드(sigmoid) 같은 함수는 학습할 때 기울기(gradient)가 거의 사라져버리는 문제가 있었다.
- ReLU는 기울기를 0이나 양수로만 만들어서 빠르게 학습할 수 있게 한다.
- 빠른 계산 속도
- 음수를 0으로 날리고, 양수는 그대로 두니까 연산이 단순하다. 딱 빠르고 효율적인 함수이다.
이 과정을 거치면 신경망이 이미지의 복잡한 패턴을 잘 잡아낼 수 있게 된다.
쉽게 말해, 중요한 정보는 남기고 쓸모없는 건 날리는 거다.
이거는 Pooling을 나타내는데, 가장 큰값을 중요한 값이라고 생각하고 그것만을 추출해내는 것이다.