- 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차원 데이터로 만들어 사용한다.


by 곽동현 이스텔리앙 2015.04.22 23:14
| 1 2 3 4 5 |