AI人工智能近年来被媒体宣传为科技行业的热门话题。
在这样的氛围下,作为创客的我们怎能错过这个展示好创意的好机会呢?接下来我将介绍如何获取并使用免费的AI实验田资源“Google Colaboratory”。
谷歌的免费GPU资源Colaboratory 大家都说玩AI首先要准备好非常昂贵的高端显卡和服务器才可以运行。
对于想要入门和练习的人来说,确实有点贵。
就像想要学开车的人一样,他们首先不知道如何去做。
购买法拉利首先应该去训练场学习到一定程度,然后考虑自己的预算和需求,再根据用途购买合适的跑车、房车、卡车、踏板车甚至二手车。
现在,每个害羞的人都很幸运。
Google 的实验项目 Colaboratory(以下简称 Colab)免费提供 NVIDIA K80 级别的 GPU 资源和虚拟机(Xeon 2.2GHz CPU*2)供大家使用,其中集成了 Linux。
(Ubuntu)环境、Python、Jupyter Notebook和TensorFlow等常用软件包,并允许大家安装执行所需的软件包(如Keras、OpenCV、PyTorch、MxNet、XGBoost等),可以免费使用只要您有 Google 云端硬盘帐户。
当然,谷歌合作实验室是不可避免的。
这个免费资源不是无限的。
目前提供的虚拟服务器仅提供至少50G存储空间和12GB内存(约2GB可用于训练),并且只能连续使用12小时。
(包括安装软件包、下载数据到虚拟机以及训练时间)。
如果超过时间,正在使用的内容将被清除。
有时,由于用户太多,导致无法连接或使用中途断开。
不适合训练太大的模型和数据集。
话虽如此,总体来说对于家里没有Linux+Python环境或者电脑(笔记本)CPU级别太低或者没有独立显卡的人以及想要学习人工智能的新手来说还是很方便的练习使用它的智力。
什么是图像二值分类?著名HBO连续剧《硅谷》第四季第四集中有一个有趣的场景。
中国人杨晶发明了一款名为“看食物”的APP,可以通过拍照识别食物类型。
演示过程中,热狗被拍照后首次被成功识别。
大家欢呼起来,开始想象,如果桌子上的所有食物都能被识别出来,这个应用程序肯定会大卖。
拍完披萨后,大家等待APP回答“披萨”,但APP回答“不是热狗”。
所有人都傻眼了。
“这个只能识别热狗吗?”杨敬答道:“是”,众人大失所望,匆匆散去。
然而,故事还没有结束!一家风险投资居然看中了这款APP,要求将其改造成检测色情图片中男孩的阴茎。
这就是“失去一些东西,得到一些新东西”的标准。
虽然上面的“不是热狗”部分只是一个虚构的情节,但现实中人们已经实际实现了它。
有兴趣的可以从Apple APP Store下载Not Hotdog。
从上面的故事,我们可以知道图像分类的重要性。
虽然图像的二元分类(是或否)范围较窄,但如果可以对大量图像(数千到数百万)进行标记进行分类,经过训练后,可以对图像进行准确的分类,这可能会产生一些独特的商机。
Not Hotdog APP截图使用Colab实现图像二值分类。
为了帮助大家快速上手,这里给出完整的代码,其中有详细的原理解释和注释。
只需按照以下步骤即可快速构建一个二值分类图像分类系统,当然还包括如何使用自定义数据集进行训练和推理。
代码主要包括以下四个主要步骤,更详细的内容如下所示。
1. 获取并构建训练数据(TrainingDataset),下载数据集,解压数据集,查看数据集,定制数据集并挂载 2. 构建小型深度学习模型(TrainingModel)卷积网络模型输入图像大小正则化模型架构和训练参数描述 模型配置和训练优化设置 数据预处理 3. 训练和验证模型准确性(ValidationAccuracy) 训练和验证模型评估模型准确性和损失 4. 应用深度学习训练结果进行推理(Inference) 推理的可视化表示了解相关示例的学习目标后,可以前往https://goo。
gl/SqigfE 下载 image_classification. ipynb 转到您的 Google Drive,双击并选择“Colaboratory”打开它,您就可以开始享受 Colab 提供的免费 G??PU 计算信息。
执行时按[Shift+Enter]单步执行并自动跳到下一行;如果您想一次运行本示例的所有代码,请按[Ctrl+F9]。
下面我简单介绍一下工作的主要步骤。
构建数据集为了练习“构建数据集”这个话题,我们首先要有一个数据集,但短时间内收集数千张图像并不容易。
幸运的是,知名人工智能竞赛平台Kaggle和Cats上有一个“Dogs”图像分类竞赛,提供了大量的猫和狗图像来测试“深度学习”算法(模型)的正确性。
为了方便大家测试Colab,谷歌将其缩减为用于训练的猫和狗的图像以及用于验证的猫和狗的图像,数据集样本大致如下图所示。
在本例的“狗和猫”数据中,图像中猫和狗的面积比例、类型、颜色、数量、位置、明暗、遮挡、背景复杂程度没有限制。
Kaggle、TensorFlow和Keras提供的集合样本卷积神经网络模型主要用于构建小型卷积神经网络(Convolution Neural Network,CNN),总共三个卷积层(包括ReLu和Max Pooling),每个卷积层使用3×3的滤波器进行卷积运算,三层分别提取16、32和64组滤波器。
然后,扩展为独立节点后,添加两层全连接层,分别为1个节点和1个节点。
最终的节点加上Sigmodid函数就是最终的输出结果,一共9个,,需要训练的参数。
输出结果值将在 0.0 和 1.0 之间。
当该值越接近1.0时,图片是狗的概率就越高。
相反,输出值越接近0.0,图片是猫的概率就越高。
这个模型虽然不大,但是可以应用于各种图像的二分类问题。
您可以尝试导入您准备的图像进行测试。
完整的模型架构如下图所示。
卷积神经网络架构训练与验证下图左侧为准确率,图右侧为损失率,横轴表示迭代次数,纵轴表示准确率(或损失)速度;蓝线代表训练集结果,绿线代表验证集结果。
从图中可以看出,蓝线的准确率在第10次时已经超过0.97(97%),丢失率已经接近0,但绿线的准确率并没有继续提高,而值接近0. 7 (70%),丢失率逐渐增大。
这意味着训练过程造成了过拟合,需要通过添加更多不同的模式和更大数量的数据集并重新训练来改进。
左:训练和验证准确性,右:训练和验证损失推理结果可用于使用先前训练的模型进行推理(或预测)。
首先提供图像,对图像数据(xx3、Float32)进行归一化,然后进行推理。
最后得到图像分类结果得分。
分数越接近1.0,它是狗的概率就越高,反之亦然。
越接近 0 .0 意味着它更有可能是一只猫。
我们可以设置几个额外的自定义阈值来区分分类结果,例如“这是一只狗”、“这可能是一只狗”、“这可能是一只猫”、“这是一只猫”等不同的结果描述。
为了让大家更好的理解深度学习模型是如何运行的,将每一层的运行结果输出到特征图上,然后一一展示。
如下图所示,上面是原始输入图像的归一化结果图像,第二个是实际导入到输入层的信息。
有 3 组(RGB 三通道),尺寸为 ×。
第一个卷积层总共生成16个特征图,conv2d_1的大小为 三个卷积层总共生成64个特征图。
conv2d_3的大小为34×34,max_pooling_3为17×17。
最终的全连接层(密集)是单个节点信息,不容易用图形表达,因此被忽略,不进行处理。
从每一层的特征图可以看出,随着图像尺寸的缩小,激活的像素越来越少,甚至根本没有输出(全黑),说明其特征已经被一些卷积(滤波器)突出显示了。
我们需要的图像分类(识别)能力也逐渐增强。
推理结果和结论的可视化。
Google Colaboratory,一个免费的云GPU资源,确实很方便初学者进行“深度学习”(双关语)。
不会因个人电脑(笔记本电脑)的设备级别不同而影响模型训练。
以及推论的有效性。
同时,代码可以很方便地分享给其他想要学习的人,这对于开源社区来说是一个很大的帮助。
希望不久的将来有更多的合作伙伴加入研究和分享,让更多的人工智能应用能够更快落地。
完整代码和说明请参考Github。