Project/Invisible Scarecrow

Invisible Scarecrow Project(투명한 허수아비 프로젝트) 2일차

crapy 2024. 7. 11. 22:11
더보기

1일차에 구상했던 설계("소리를 듣고 비둘기를 감지" → "특정 소리로 퇴치")에서 비둘기 날갯짓 소리를 감지하기 위한 과정이다. 인공지능을 활용해서 인식하려고 한다. 설계 내용과 구현 방식을 아래에 적어 두었다.

 

 

1. Data Mining & Preprocessing

 


- Data Mining

실외에 설치될 마이크를 통해 입력되는 소리는 비둘기 소리와 그 외의 소리만 들어온다고 가정했다.
비둘기 날갯짓 소리와 일상 소음(바람소리, 빗소리, 차소리)을 수집한다.

적절한 audio file을 구하기는 생각보다 힘들었다.
단순히 새가 날갯짓 하는 소리는 찾기 쉬웠지만, 종마다 소리가 달랐다.
비둘기의 소리도, 한 두 마리의 소리를 가까이서 얻은 데이터는 극히 드물었다.
그 중에, 착지하는 비둘기 날갯짓 소리를 원했기에, 적절한 데이터를 구하기는 힘들었다.

https://pixabay.com/sound-effects/search
내가 오디오 데이터를 수집한 사이트다. 로그인 없이 바로 다운받을 수 있다는 점이 매력적이다.


- Data Labeling
하나의 폴더 아래 두 개의 폴더로 구분해서 dataset을 배치했다.
wing-flapping audio file: ../Invisible Scarecrow Project/Pigeon
noise audio file: ../Invisible Scarecrow Project/Noise
이렇게 설정하면, 코딩할 때 작업을 한 번 더 해야하지만, 굳이 레이블을 달지 않아도 되니까 수월하게 넘어갈 수 있다.
(미룬다는 이야기)

 


- Data Preprocessing
audion data를 일정한 sampling rate로 변환하고, 필요한 경우 노이즈 제거 등의 Cleansing을 한다.

 


- Feature Extraction
audio signal에서 feature를 추출하기 위해 MFCC(Mel-Frequency Cepstral Coefficients) 음성 특징 추출 방법을 사용했다.
MFCC는 signal을 vector로 변환한다. vector로 변환할 수 있다는 것은 머신 러닝 모델이 그 데이터를 학습에 사용할 수 있다는 것을 의미한다.

 

 

2. Model training 

 


추출된 특징을 사용하여 머신 러닝 모델을 학습시키자. 
CNN이나 RNN(딥러닝 모델들)을 사용하여 오디오 분류 모델을 만들 수 있지만 너무 복잡하며, 이 문제에는 비효율적이라고 판단했다. (내가 잘 다루지 못하는 것도 있다, 특히 RNN은 여기에 쓰기에 과하다)


따라서, RandomForest 머신 러닝 모델을 사용하려고 한다. 만약 정확도가 너무 낮다고 판단하면, 다른 모델을 사용할 계획이다.

 

 


3. Implement Detection System

 


학습된 모델을 통해
예측(소리가 어느 범주에 속하는지 classification): 추출된 특징을 학습된 모델에 입력하여 비둘기 날갯짓 소리를 감지한다. python으로 구현할 생각이고, 구체적인 구현과 테스트 결과는 3일차에 이어서 진행하겠다.