欢迎大家关注我们的网站和系列教程:http://www.tensorflownews.com/,学习更多的机器学习、深度学习的知识!
译者|小韩
AI 真的是一个重大的游戏改变者。 AI的应用是巨大的,并且它在医疗领域的应用范围也是广阔的。 先进的AI工具可以帮助医生和实验室技术人员更准确地诊断疾病,例如尼日利亚的一名医生可以使用这种工具从血液样本中识别出一种他根本不知道的疾病,这有助于他更好地诊断这种疾病并且更快的治疗,这是AI民主化的一个优势,因为AI模型和工具可以在全世界范围内使用,使得尼日利亚的医生可以使用麻省理工学院或世界上任何其他伟大的大学的研究学者正在使用的工具和技术。
机器学习的主要问题
机器学习当然是当今AI发展的主要因素。 但AI民主化意味着可以建立一个基础设施,它允许任何人在世界各地使用相同的技术建立强大的工具。可能阻止人们人构建AI的两个主要问题就是计算能力和没有可用于训练的数据集。 但这些问题正在以有趣的方式解决,它们如下:
- Kaggle (Home of datasets) : 没有可用的数据集是主要问题之一,但是Kaggle是人们创建数据集并托管以使其他人使用的最佳场所,人们使用这些工具构建了令人有趣的东西。
- Google co-lab : Google co-lab 是机器学习的主要驱动力,允许任何拥有谷歌帐户的人使用GPU。 如果没有这些GPU,任何人都无法训练需要大量计算的ML模型。
血细胞数据集
数据集就像数据科学家的金矿一样,如果数据集可以用于特定问题,它可以减少工程团队所需的大量工作,因为不需要浪费精力来收集和存储数据。 几个月前我想到开发这个系统,Kaggle帮我获得了很多数据集。 这是我在Kaggle上找到的数据集,感谢 Paul Mooney 提供的这个数据集。
Dataset Structure : 该数据集包含了 12,500 张增强的血细胞图片,该数据集包含下列4种不同的类型:
每一个分类都包含了3000张图片。下面是每种图片的样本:
我将每张图片的大小都缩减为 (80x80x3) 以便可以更好的训练。
Kaggle 要求在下载数据集之前登录,但我们使用colab,在我们本地机器上不需要下载数据集,而是将代码上传到google colab实例。
使用 Google co-lab
简单来说,Google co-lab提供了一个基于云的python notebook,其虚拟实例与GPU运行时相关联,Google co-lab的GPU运行时由NVIDIA k-80驱动,这是一款功能强大,价格昂贵的GPU。但是co-lab允许我们免费使用GPU而无需支付费用。 实例的最长时间为12小时,12小时后实例将被销毁,新的实例将被创建,因此我们只能运行那些持续时间不超过12小时的计算。 让我们看看我们如何使用colab来训练我们的神经网络。
Kaggle 身份验证:
Kaggle 命令行界面允许您下载数据集并将代码提交给竞赛。 注册kaggle后,您可以下载包含所有凭据的kaggle.json文件,kaggle 命令行界面使用这些凭据进行授权。
- 使用命令
!mkdir .kaggle
创建一个新单元和一个名为.kaggle的隐藏文件夹。 - 使用pip安装Kaggle CLI :在新单元中-
!pip install kaggle
- 下载数据集:
!kaggle datasets download -d paulthimothymooney/blood-cells
- 确保当前的文件夹包含下载的数据集
!ls dataset2-master/images
- 可以看到三个文件夹:TEST, TEST_SIMPLE and TRAIN
- TRAIN 文件夹包含了训练图片,将会使用这个文件夹来进行训练。
预处理
我们需要将图像加载为numpy数组并将其提供给我们正在训练的神经网络。 我们将使用Keras构建神经网络,Keras提供了一个内置的ImageDataGenerator,它可以处理大多数的预处理任务。
我们导入了开发模型所需的一些对象:
from keras.models import Sequential
from keras.layers import Dense, Conv2D, Dropout, MaxPool2D, Flatten
from keras.preprocessing import image
keras.preprocessing
提供处理各种类型数据集所需的方法和对象。 从图像模块我们创建一个具有所有必需配置的ImageDataGenerator。
generator = image.ImageDataGenerator(
rescale = 1./255,
featurewise_center=False, # set input mean to 0 over the dataset
samplewise_center=False, # set each sample mean to 0
featurewise_std_normalization=False, # divide inputs by std of the dataset
samplewise_std_normalization=False, # divide each input by its std
zca_whitening=False, # apply ZCA whitening
rotation_range=10, # randomly rotate images in the range (degrees, 0 to 180)
width_shift_range=0.1, # randomly shift images horizontally (fraction of total width)
height_shift_range=0.1, # randomly shift images vertically (fraction of total height)
horizontal_flip=True, # randomly flip images
vertical_flip=False)
如上一节所述,训练数据存在于`dataset2-master/images/TRAIN 目录中,我们给 ImageDataGenerator 提供这条路径,以便我们所有的配置和扩充都应用于训练图像。
dataset = generator.flow_from_directory(
shuffle = True,
batch_size = 32,
target_size