新冠患者及无症状患者的识别---CoughNet

新冠患者及无症状患者的识别—CoughNet
1.数据预处理
原式数据来自KAGGLE和COSWARA公开的数据集,其中在训练模型时使用1934张图片,将数据集按照6:2:2划分为训练集,验证集,测试集.相关文献表明,无症状也属于新冠患者,所以通过对新冠患者数据集进行训练,获得比较好的模型后,使用该模型对新冠患者识别,观察其在测试集上的准确率.
我们对原式数据进行数据预处理: 归一化,取中心化等操作,下面以negative_0_308为例进行分析
原数据和预处理后数据2.特征工程
由于我们使用的是监督学习,数据的标签对于我们最终提高准确率有非常大的作用,原式数据已经提供了标签.在我们进行下一步数据增强前,要确保数据归类的准确性.
由于开源数据集提供的数据集不多,为了提高模型的泛化能力,必须对图像的特征作出很好的提取工作,同时增加数据集的数量也是增加模型准确率的必不可少的工具.下面对图片进行数据增强(Data Augmentation)如下图所示:
数据增强所做的工作

选取的数据依然是negative_0_308,我们对图像作翻转,亮度增强,对比度增强,颜色增强等操作,有效的扩大了数据集的容量.
3.卷积神经网络模型的搭建
我们尝试利用深度学习中的卷积神经网络(Convolutional Neural Networks)来搭建模型.使用PPT绘制卷积神经网络模型示意图如下:
coughnet结构图

其中Con2D是Keras自带的卷积层,这里我们第一层采用32198198.卷积层使用的激活函数为relu函数.每一个卷积层后面会加上一个池化层,最后的FULLY-CONNECTED是全连接层,CLASSIFIER是分类器,用于输出该患者的类别(阳性或者阴性).
该模型的LeNet style的示意图如下
模型的LeNet style示意图

4.训练过程
通过之前的预处理,我们对卷积神经网络的参数不断的作出调整。最终得到比较合适的参数。例如,图片的输入大小调整为200*200像素,epochs调整为100次,batchsize调整为32。使用的损失函数为二进制交叉熵损失函数。同时代码中使用的优化方法为adam(adaptive moment estimation)算法.它是一种自适应的优化算法. Adam相当于RMSProp加上momentum,它将两类方法的优势结合起来.其中momentum使用的是一阶梯度,而RMSProp使用的二阶梯度,Adam将这两者结合起来。其中RMSProp为root mean square prop算法,它只取最近过去的一小段时间内的梯度信息作为依据.而momentum是一种与随机梯度下降(SGD)结合起来使用的算法. 它可以加速收敛,减小振荡,同时缓解SGD陷入鞍点问题,但是它也有自身的缺陷,它的振荡现象还是比较常见的,所以此处采用adam算法.

98/100 [============================>.]

  • ETA: 2s - loss: 0.0546 - accuracy: 0.9790
    99/100 [============================>.]
  • ETA: 1s - loss: 0.0547 - accuracy: 0.9785
    100/100 [==============================]
  • 148s 1s/step - loss: 0.0545 - accuracy: 0.9787 - val_loss: 0.0059 - val_accuracy: 0.9906
    Found 1934 images belonging to 2 classes.
    Test_acc 0.9881250262260437
    最终发现在新冠患者测试集和验证集上所得到的准确率非常高.
    接下来我们使用该模型对新冠无症状患者进行检测,首先我们要将音频数据转化为声谱图数据,所需的工具为声音转换器AUDACITY.我们可以将一段声音录入该转换器,所得到的效果如下图所示。下图为对某一位新冠无症状患者声音转化为声谱图的过程:

将声音转化为声谱图

最后我们采集了50张无症状患者的图片,将其加入一些阴性图片中作为测试集进行测试。下图为部分采集后的图像样例
无症状患者采集声谱图

我们将这些图片利用训练好的模型进行测试,最终获得70%的准确率.
5.效果分析
该模型能非常好的识别新冠患者,下图为随着epoch的增加,训练集和验证集上准确率的变化
训练集和验证集准确率的变化类似的我们可以得到训练集和验证集中loss的变化
在这里插入图片描述
在识别新冠患者这个问题上,我们模型CoughNet的识别率在验证集和测试集上都可以达到99%的准确率,loss也是降的非常低.
为了测试我们的模型在识别无症状患者的能力,我们将从COSWARA获得的无症状患者的咳嗽使用AUDACITY进行转化,我们将患者的咳嗽声转化为声波图,进而放入神经网络模型去识别,经测试,我们的识别率大致在70%.

6.模型评价
CoughNet模型
模型优点:此处涉及两个优点:传统的对于患者识别集中在对CT影像的深度学习上或者是基于患者的语音(包括咳嗽,呼气声等)进行基于语音识别的机器学习。而我设计的模型把患者的咳嗽转化为声谱图,并进一步对声谱图进行主要特征的提取,这样大大提高了准确率,并且大大减小了训练的时间与空间成本,对于150(epochs)*100(steps)的训练,在GPU(使用Google Colab)上训练的时间大约是20min,在CPU上训练的时间大约是6h. 同时在我们的识别新冠患者和新冠无症状患者的的过程中获得了比较高的准确率,和比较低的loss,这说明我们的模型是具有比较高的泛化性以及比较可靠的准确性.
模型缺点:在识别无症状患者,使用的模型针对性不够强,因为使用的模型在预测患者和非患者的情况下是非常好的,但是因为严重缺乏无症状患者的数据,所以会导致识别无症状患者的准确率下降不少.

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值