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

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

       数据集一共6类

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

安装环境

!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的权重。

得到最好的三个模型

验证集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))
      
    

测试结果

 

  • 10
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 23
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tf_q568897492

你的鼓励是我最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值