窝牛号

使用tensorflow 与keras 进行新冠肺炎的检测

新冠肺炎X-RAY 图片

2019年的新冠肺炎,牵动了亿万家庭的心,特别是最近美国超过100万的感染人数的i情况下,新冠肺炎的检测与救助工作仍然是当前十分重要的任务,我们也希望这次瘟疫早点过去,希望人类能够早一点恢复到正常的生活。

本期文章,我们通过神经网络来进行新冠(COVID-19)的训练与检测。

神经网络的模型训练

模型数据图片

首先我们收集了部分新冠的图片来进行神经网络的模型训练,搜集2类新冠的图片,一类是正常的图片,一类是呈阳性的图片,本期使用tensorflow 的keras模型来进行神经网络的模型训练以及检测。

建立CNN卷积神经网络来进行图片的训练

此部分需要建立神经网络对图片进行分类,一类是新冠阳性,一类是新冠阴性。首先导入需要使用到的库

from tensorflow.keras.preprocessing.image import ImageDataGenerator from tensorflow.keras.applications import VGG16 from tensorflow.keras.layers import AveragePooling2D,Dropout, Flatten,Dense,Input from tensorflow.keras.models import Model from tensorflow.keras.optimizers import Adam from tensorflow.keras.utils import to_categorical from sklearn.preprocessing import LabelBinarizer from sklearn.model_selection import train_test_split from sklearn.metrics import classification_report, confusion_matrix import numpy as np import cv2 import os

从以上导入的库,可以看出,我们的神经网络基于Sk-learn模型来建立,利用VGG16模型进行CNN卷积神经网络

INIT_LR = 1e-3 EPOCHS = 25 BS = 8 imagePaths =[] data = [] labels = [] for root, dirs, files in os.walk(&34;): for file in files: imagePaths.append(os.path.join(root, file))

INIT_LR:学习效率

EPOCHS:每步需要学习的数量

BS:学习的总步数

imagePaths:获取dataset 下面的所有图片的路径

初始化一个data 数组来保存图片 数据,一个labels 数组来保存图片的分类类型(阳性 或者 阴性)

for imagePath in imagePaths: label = imagePath.split(os.path.sep)[-2] image = cv2.imread(imagePath) image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) image = cv2.resize(image, (224, 224)) data.append(image) labels.append(label)

通过一个for循环来遍历所有图片的路径

label 来获取每个图片的标签

cv2.imread是CV2中独有的来读取图片的代码格式,但是cv2默认的颜色空间是BGR,所以使用cv2.COLOR_BGR2RGB来把cv2的默认颜色空间BGR转换到RGB空间

resize图片到224*224 上,此步骤的目的是在保存图片特征的基础上,尽量减少图片的数据,以便神经网络进行计算

最后使用append把图片 的数据与标签分别存入事前初始化的data 与 labels数组中。

data = np.array(data) / 255.0 labels = np.array(labels) lb = LabelBinarizer() labels = lb.fit_transform(labels) labels = to_categorical(labels) 34;nearest&34;imagenet&34;flatten&34;relu&34;softmax&34;categorical_crossentropy&34;accuracy&39;&39; 语法结构:model.compile(loss=&39;, optimizer=optimizer, metrics=[&39;]) 目标函数,也叫损失函数,是网络中的性能函数,它是一个模型必备的两个参数之一。 目标函数由mse、mae、mape、msle、squared_hinge、hinge、binary_crossentropy、 categorical_crossentrop、sparse_categorical_crossentrop等 mse:均方根误差 categorical_crossentropy:亦称作多类的对数损失 使用该目标函数时,需要将标签转化为形如(nb_samples, nb_classes)的二值序列 sparse_categorical_crossentrop:如上,但接受稀疏标签 使用该函数时仍然需要你的标签与输出值的维度相同,你可能需要在标签数据上增加一个维度:np.expand_dims(y,-1) &39;&34;123.model")

由于本期的训练数据较少,模型的准确性还待继续完善,如何使用预训练模型进行新冠的检测,我们不再分享,其中涉及的代码,小伙伴们可以参考往期的文章来进行图片的检测方面的学习

人工智能Keras图像分类器(CNN卷积神经网络的图片识别篇)

对opencv感兴趣的小伙伴们可以买本属于自己的书籍进行参考学习

当然,网络上很多作者写的专栏也不错,大家也可以进行学习

本期文章,只是从技术角度来对新冠肺炎做一个简单的检测,由于我们对新冠的了解还很少,本期涉及的技术并不能完全使用在医学检测判断上,希望后期人类能够早日战胜疫情,重新恢复正常的生活。

本站所发布的文字与图片素材为非商业目的改编或整理,版权归原作者所有,如侵权或涉及违法,请联系我们删除

窝牛号 wwww.93ysy.com   沪ICP备2021036305号-1