Python深度学习婴儿啼哭声分类识别,测试集准确率67.5%

        随着AI技术的发展,人工智能已在各行业中不断被应用。
        正常新生儿一天至少哭3小时,但不同的哭声代表不同涵义,一般家长可能听不出来。
        对婴儿来说,哭声是一种通讯的方式,一个非常有限的,但类似成年人进行交流的方式。它也是一种生物报警器,向外界传达着婴儿生理和心理的需求。基于啼哭声声波携带的信息,婴儿的身体状况才能被确定,疾病才能被检测出来。因此,有效辨识啼哭声,成功地将婴儿啼哭声“翻译”成“成人语言”,让我们能够读懂啼哭声的含义,有重大的实际意义。

       数据集一共6类

Python深度学习婴儿啼哭声分类识别,测试集准确率67.5%_第1张图片

每类随机抽取13个样本做为测试集总共73。

Python深度学习婴儿啼哭声分类识别,测试集准确率67.5%_第2张图片

安装环境

!pip install matplotlib
!pip install soundfile
!pip install librosa
 
!pip install torchlibrosa
!conda install pytorch torchvision torchaudio cudatoolkit=10.2 -c pytorch

!apt-get update
!apt-get install libsndfile1

环境可以直接使用配置好的免费云gpu

链接

我用的是pytorch1.6 gpu 2080ti

        把剩下数据集集按照85:15随机切割

 

#用audio预训练提取特征 ,转存hdf5
DATASET_DIR="audio"
WORKSPACE="panns_transfer" 
!python panns_transfer/utils/features.py pack_audio_files_to_hdf5 --dataset_dir=$DATASET_DIR --workspace=$WORKSPACE  
#训练并保存loss小于0.1 valacc>0.62
PRETRAINED_CHECKPOINT_PATH2="Cnn14_16k_mAP=0.438.pth"
CUDA_VISIBLE_DEVICES=0
!python panns_transfer/pytorch/main2.py train --dataset_dir=$DATASET_DIR --workspace=$WORKSPACE --holdout_fold=1 --model_type="Transfer_Cnn14" --pretrained_checkpoint_path=$PRETRAINED_CHECKPOINT_PATH --loss_type=clip_nll --augmentation='mixup' --learning_rate=1e-4 --batch_size=16 --resume_iteration=0 --stop_iteration=7000 --cuda

训练并保存loss小于0.1,acc大于0.62的权重。

Python深度学习婴儿啼哭声分类识别,测试集准确率67.5%_第3张图片

Python深度学习婴儿啼哭声分类识别,测试集准确率67.5%_第4张图片

得到最好的三个模型

Python深度学习婴儿啼哭声分类识别,测试集准确率67.5%_第5张图片

验证集acc最高为0.647

开始批量测试

import argparse
import librosa
import matplotlib.pyplot as plt
import torch

from utilities import create_folder, get_filename
from models import *
from pytorch_utils import move_data_to_device
import config

mel_bins = config.mel_bins
fmin = config.fmin
fmax = config.fmax
freeze_base=False
audiodir_path="audiotest/"
checkpoint_path="valacc_0.647_Valloss0.099_5155_iterations.pth"
model_type="Transfer_Cnn14"
#CUDA_VISIBLE_DEVICES=0
device = torch.device('cuda') if torch.cuda.is_available() else torch.device('cpu')
    
#classes_num = config.classes_num
classes_num = 6
labels = config.labels

with torch.no_grad():
        model.eval()
        batch_output_dict = model(waveform, None)
    clipwise_output = batch_output_dict['clipwise_output'].data.cpu().numpy()[0]
    """(classes_num,)"""
    sorted_indexes = np.argsort(clipwise_output)[::-1]
    #print(sorted_indexes)
    # Print audio tagging top probabilities
    label=labels[sorted_indexes[0]]
    if list88[pic].find(label, 0, len(list88[pic]))>= 0:
        true_num=true_num+1
        print("预测分类为"+label)
        print('预测正确')
    else:
        print("预测分类为"+label)
        print('预测错误')
    total_num=total_num+1
    print('----------------------------------')
print("Test-set classification accuracy: {0:.2%}".format(true_num/total_num))
      
    

测试结果

Python深度学习婴儿啼哭声分类识别,测试集准确率67.5%_第6张图片

Python深度学习婴儿啼哭声分类识别,测试集准确率67.5%_第7张图片

 

你可能感兴趣的:(深度学习,深度学习,tensorflow,啼哭声分类,啼哭声识别,Python)