在这篇文章中,将探讨如何使用Python的TensorFlow库在Jupyter Notebook上训练一个神经网络,以诊断胸部X光图像中的COVID-19。将使用ResNet50模型,并利用迁移学习的方法来提高模型的诊断能力。本项目需要的工具和库包括:
假设已经熟悉使用Python进行深度学习以及使用Jupyter Notebook。如果是Python的新手,可以从这个教程开始。如果还不熟悉Jupyter Notebook,可以从此开始。
在之前的文章中,训练并测试了一个经过迁移学习的ResNet50模型,该模型能够将胸部X光图像分类为COVID-19和正常图像。在本文中,将比较获得的结果与已发布的其他模型的结果,并分析其在新数据集上的性能。
正如之前文章中提到的,网络在分类测试图像时表现出了强大的性能,其准确率达到了95%。表1显示了网络的准确率与其他相关竞争解决方案的比较。可以看到,微调的ResNet50在诊断COVID-19方面优于几个网络。这表明了模型的强大泛化能力。
参考 | 预训练模型 | 数据集 | 测试准确率 |
---|---|---|---|
Panwar (2020) | VGG16 | COVID-19和其他 | 88.1% |
Albahli (2020) | ResNet152 | COVID-19和其他胸部疾病 | 87% |
Ozturk (2020) | DarkCovidNet | COVID-19、肺炎和正常 | 87% |
ResNet50 | COVID-19和正常 | 95% |
为了进一步验证所提出的基于迁移学习的COVID-19诊断系统的可行性,在一组新图像上对其进行了测试,这些图像收集自另一个公共数据集。在全新的数据集上测试网络可能是具有挑战性的,因为图像的类型和质量可能与网络训练时使用的第一个数据集中的图像不同。通常在与训练集相同的数据集中选取一小部分图像来测试网络性能。然而,在本项目中,尝试测量网络在新数据集上的新图像上测试时的鲁棒性。新数据集包含COVID-19和无发现图像,但只选择了300张COVID-19图像并将其传递给模型。首先,使用ImageDataGenerator从新数据集中加载测试图像。
test_generator2 = train_datagen.flow_from_directory(
'C:\\Users\\abdul\\Desktop\\ContentLab\\test2',
target_size=(224, 224),
color_mode='rgb',
batch_size=3,
class_mode='Binary',
shuffle=True
)
加载新测试图像后,将它们传递给模型以计算准确率:
Testresults2 = model.evaluate(test_generator2)
print("test2 loss, test2 acc:", Testresults2)