[AI] CNN
in AI on Ai, Cnn
AI CNN
입력 tensor의 공간정보를 무시하는 Flatten Later
- fnn(feedforward neural network)로 학습할떄는 입력데이터가 1차원의 벡터로 변환
- 그래서 이미지의 가로세로 공간적인 정보를 무시하고 무조건 납작하게 하는 Flatten 레이어를 사용
- 28X28의 흑백이미지는 flatten layer를 통과하면 784길이의 벡터가 된다
CNN(Convolutional Neural Network)
- 이미지 처리에 특환된 신경망
- Flatten layer를 사용하지 않고 이미지의 정보 그대로 활용
- 데이터 처리는 fnn에서와 마찬가지로 가중합을 한 뒤 비선형 함수(relu)활용
- 2가지 처리영역이 존재
- feature extraction 영역
- convolution과 pooling라는 2가지 연산을 통해 수행
- 이미지 형태로 그대로 네트워크가 받아 들임
- 그 위를 어떤 작은 네모 필터가 돌아다니면서 정보를 추출하여 다음으로 넘기고 추출된 정보(feature)중 핵심적인 것만을 남기고 불필요한 정보는 버리는 샘플링 작업이 있음
- 추출 및 샘플링 이 두 과정을 여러번 반복하다 보면 이미지에서 주요한 특징만 남음
- task 수행 영역
- 추출된 정보를 다시 1차원으로 누르고 Dense레이어 원하는 대로 연결 다음 softmax로 원하는 수만큼 분류를 한다든지 하는 역할을 수행
- feature extraction 영역
–
Convolution
- 이미지로부터 feature를 추출하는 연산
- conv필터가 입력 image를 상화좌우로 훑으며 주요한 특징이 있는지 찾아내는 과정
- conv 필터가 여러개 설정하면 그만큼 이미지로부터 다양한 특징을 추출 가능
- convolved feature라고 부름
- 이미지를 pixel단위 훑을때 겹쳐지는 pixel과 가중치를 곱해서 그 가중합의 결과를 다음을 ㅗ넘김
convolution연산이 이미지로부터 특징을 추출하는 역할
- 입력 tesnor와 convolution필터가 가중합을 한 뒤 , relu와 같은 activation function을 취해주면 됩니다
Color image
- 컬러이미지는 3차원 텐서이므로 conv를 적용하기 위해 conv 필터 또한 3차원으로 생겨야함
- FNN에서 Dense layer에 노드를 여러 개 두어 서로 다른 가중합 및 feature 추출을 진행하듯이, CNN에서도 서로 다른 필터를 여러 개 두어 입력 이미지로부터 여러 feautre를 추출 가능
conv필터를 많이 두면 둘수록 더 다양한 feature를 꺼낼 수 있음
–
Pooling
- conv필터가 연산이 끝난 뒤, 결과로부터 정보를 추리하는 Pooling 연산이 이어짐
- pooling 진행하면 가로세로 차원크기가 축소되는 subsampling 효과
- pooling연산은
feature map(pooling 대상영역)을 역시 상하좌우를 훑으며 핵심적인 정보만을 영역별로 샘플링
- 주로 영역 내 가장 큰 값만을 나머지 값을 버리는 maxpooling 방식을 적용(강력한 특징만 남김)
- conv 연산이 추출한 feature 정보를 단순화하면서 차원을 줄이지만 공간위치정보는 그대로 유지한다는 특징
–
Summary
Feature Learning
- 이미지로부터 convolution연산을 통해 특징을 학습
- Activation function을 거쳐 non-linearity 적용
- Pooling으로 공간정보를 유지하면서도 차원을 축소
Task수행
- conv와 pooling으로 도출된 고차원의 feature를 분류를 하기 위해 납잡하게 1차원으로 펼침
- Class수만큼 분류되도록 Dense로 연결
- Class수만큼 probability로 표현