본문 바로가기
Research/Deep Learning & Application

CNN, Spectrogram 을 CNN으로 학습

by IMCOMKING 2015. 4. 22.

CNN(Convolutional Neural Network)

model.add(Convolution2D(96, 1, 11, 11, subsample=(4, 4))) 
number_of_filter / stack_size / row / column size_of_filter / convolution_size(subsample)

즉 96개의 피쳐를 추출하는, 11*11*3 사이즈의 filter를 만들것임. 이 filter는 (4,4)간격을 가지며 convolution함

stack이란 : 일반 이미지는 (R,G,B)형태의 3차원 vector로 데이터가 구성되어 있음. 따라서 stack_size가 3이어야만 돌아감. 즉 r평면, g평면, b평면이 3층으로 쌓여 있는 3차원 매트릭스임.

그래서 이 filter하나에는 11*11*3 짜리 weight의 연결이 있음. 즉 11*11*3 짜리 크기의 블럭이 컨벌루션을 하는 것임.




- Spectrogram 학습

MFCC를 쓰지 않고, 소리 정보를 아래와 같은 spectrogram(시간-주파수분포 그래프)로 변환하여 CNN의 영상처리 기법을 적용해 학습을 할 수 있다.

이 경우 시간적인 정보가 x축으로 자연스럽게 담겨 있게 되며, 이미지 한장당 일정시간(예를 들어 5초)으로 고정하여 스펙트로그램을 생성하고, 그에 해당하는 label을 학습하는 식으로 처리된다.



스펙트로그램을 만드는 것은 wav의 파동값을 FFT변환하여 주파수 도메인으로 변환한 뒤 그 값을 히스토그램 형식으로 저장한다. 즉 x축은 시간, y축은 주파수, z축의 높이(여기서는 색상으로 표현됨)는 주파수의 크기(분포)의 3차원 데이터로 만들어 사용한다.


'Research > Deep Learning & Application' 카테고리의 다른 글

Word2Vec, Bag-Of-Words, 최신 word embedding  (2) 2015.08.03
RNN의 Vanishing Gradient와 Exploding Gradient  (0) 2015.07.08
TDNN, RNN, LSTM, ESN  (0) 2015.04.15
RNN 학습 알고리즘, BPTT  (2) 2014.07.08
Perceptron, TLU  (0) 2014.06.17

댓글