일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 삼성역량테스트
- 영상처리
- DP문제
- 코테
- BFS
- MCU 딥러닝
- tinyml
- 자료구조
- 포스코 ai 교육
- 다이나믹프로그래밍
- 삼성코테
- 포스코 AI교육
- DP
- sort
- 포스코 교육
- 초소형머신러닝
- 임베디드 딥러닝
- dfs문제
- tflite
- 삼성역테
- 딥러닝
- 컴퓨팅사고
- TensorFlow Lite
- bfs문제
- 그리디
- dfs
- 코딩테스트
- 코테 문제
- 삼성코딩테스트
- 알고리즘
- Today
- Total
코딩뚠뚠
[머신러닝 공부] Tiny ML -12 / 음성인식 모델훈련하기 -3 본문
Chapter12. 음성인식(호출어 감지) 모델 훈련하기
"
내 데이터셋으로 훈련해보자
"
목차 :
- 새로운 모델 훈련 -> 이전장
- 프로젝트에서 모델 사용 -> 이전장
- 모델 작동 방식 -> 이전장
- 내 데이터로 훈련하기
참고 repo
내 데이터셋으로 훈련하기 :
훈련시킬 수 있는 데이터셋이 있다면 train.py 를 실행할 때 --data_dir 인수를 사용해 훈련할 수 있다.
해당 디렉토리에는 명령어 하나 당 하나의 하위 폴더를 만들고 WAV 파일들을 위치시키면 된다.
추가로 실행 환경에 예상되는 소음을 녹음한 WAV 파일을 background 하위 폴더에 추가시킨다.
python tensorflow/examples/speech_commands/train.py \
--model_architecture=tiny_conv \
--window_stride=20 \
--preprocess=micro \
--wanted_words="apple,mango" \
--silence_percentage=15 \
--unknown_percentage=15 \
--quantize=1 \
사실 위 내용은 코드에 따라 언제나 바뀔 수 있는 내용이여서 크게 중요하지 않다.
내 데이터셋으로 훈련할 때 가장 어려운건 충분한 양질의 데이터를 수집하는것이다.
충분한 양질의 데이터를 수집하기 어렵고, 모았더라도 이전의 데이터를 활용해 정확도를 높이기 위해서 이미지 모델 분야에서는 전이학습(transfer learning) 방법을 사용한다.
하지만 음성모델에 대한 전이학습은 아직 사용될 정도는 아니고 연구중인 분야라고 한다.
내 오디오를 녹음하기 :
오픈소스 Recording 앱을 사용해 수집하는 편이 편하다고 한다.
데이터 증식 :
= Data Augmentation
데이터를 수집할 때 충분한, 양질의 데이터가 중요하다고 했는데 여기서 "충분한" 을 보충시킬 수 있는 방법이다.
이 기법은 훈련 전 녹음된 데이터에 Augmentation 을 적용한다.
이미지 변환에서의 Augmentation은 이미지의 주로 색, 각도 등을 변경하는데 음성에서는 어떤 변형을 할까?
음성 Augmentation은 볼륨변경, 배경소음합성, 파일시작 및 끝부분 다듬는 방법의 변형을 한다.
아래는 커맨드의 예시이다.
python tensorflow/examples/speech_commands/train.py \
--model_architecture=tiny_conv \
--window_stride=20 \
--preprocess=micro \
--wanted_words="yes,no" \
--silence_percentage=25 \
--unknown_percentage=25 \
--quantize=1 \
--background_volume=0.2 \
--background_frequency=0.7 \
--time_shift_ms=200
모델 아키텍처 :
앞서 훈련한 모델의 크기는 18KB에 불과했다.
MCU에 이식하기 위해 정확도를 조금 희생했기 때문이다.
이 프로젝트에서 높은 정확도를 얻기 위해서는 새로운 모델을 만든 후 모델 아키텍처를 인수를 변경해 실행하면 된다.
- 물론 속도가 느려질 수 있다.
모델생성함수 작성 후 --model_architecture 인수 사용해 실행
아래의 함수는 model.py 내의 함수이다.
def create_model(fingerprint_input, model_settings, model_architecture,
is_training, runtime_settings=None):
...
if model_architecture == 'single_fc':
return create_single_fc_model(fingerprint_input, model_settings, is_training)
...
elif model_architecture == 'tiny_conv':
return create_tiny_conv_model(fingerprint_input, model_settings, is_training)
새로운 모델의 이름을 'tiny_conv_good_model' 과 같이 지어주고
그에 대한 실행 결과를 return에 써준다.
return으로 실행되는 모델도 작성해줘야 될 것이다.
아래는 create_tiny_conv_model 함수의 일부이다.
def create_tiny_conv_model(fingerprint_input, model_settings, is_training):
if is_training:
dropout_prob = tf.compat.v1.placeholder(tf.float32, name='dropout_prob')
...
final_fc = (
tf.matmul(flattened_first_dropout, final_fc_weights) + final_fc_bias)
if is_training:
return final_fc, dropout_prob
else:
return final_fc
직접 저장소에 들어가 코드를 보면 stride등의 filter 설정까지 이미 작성되어 있는 볼 수 있고, 이를 변경해가면서 모델을 그나마? 간편하게 만들 수 있다.
저장소 링크
'공부 > ML&DL' 카테고리의 다른 글
[머신러닝 공부] Tiny ML -14 / 인체감지 어플리케이션-2 (2) | 2022.02.26 |
---|---|
[머신러닝 공부] Tiny ML -13 / 인체감지 어플리케이션-1 (0) | 2022.02.17 |
[머신러닝 공부] Tiny ML -11 / 음성인식 모델훈련하기 -2 (0) | 2022.02.07 |
[머신러닝 공부] Tiny ML -10 / 음성인식 모델훈련하기 -1 (0) | 2022.02.02 |
[머신러닝 공부] Tiny ML -9 / 음성인식 어플리케이션-2 (0) | 2022.01.31 |