订阅
纠错
加入自媒体

【Maker玩AI】使用Google Colaboratory免费资源学AI

建构数据集

为了练习「建构数据集」这个题目,我们首先必须要有数据集,但实在不容易在短时间内收集到数千张的影像,好在知名人工智能比赛平台Kaggle上有一个「Dogs and Cats」的影像分类比赛,它提供了大量的猫狗影像,以供测试「深度学习」算法(模型)的正确性。

Google为方便大家测试Colab,再将其减量到训练用影像猫狗各1000张,验证用影像猫狗各500张,其数据集样本大致上如下图所示。影像没并没有特定尺寸,猫狗在影像中占的面积比例、种类、色彩、数量、位置、明暗、遮蔽、背景复杂度也都没有限制。

Kaggle提供的「Dogs and Cats」数据集样本

卷积神经网络模型

这个范例中,主要利用TensorFlow及Keras建构出一个小型的卷积神经网络(Convolution Neural Network, CNN),共有三层卷积层(包含ReLu及Max Pooling),每个卷积层皆用3×3的滤波器进行卷积动作,三层分别提取16, 32及64组滤波器。接着展开成独立节点后,再加入二层全连结层,分别为512及1个节点,而最后得到的那一个节点加上Sigmodid函数即为最终输出的结果,合计共有9,494,561个参数待训练。

输出的结果值会介于0.0 ~ 1.0,当值越接近1.0时图片为狗的机率越高,反之输出值越接近0.0时图片判定是猫的机率越高。虽然这个模型虽然不大,但可适用各种图像的二元分类问题,大家可试着导入自己准备的图像进行测试。完整模型架构可参考下图。

卷积神经网络架构

训练及验证

下方图左为正确率,图右为损失率,横轴代表迭代次数,纵轴代表正确(或损失)率;蓝线代表训练集结果,而绿线代表验证集结果。从图中可看出蓝线在第十次正确率就已超过0.97(97%),而损失率已趋近0,但绿色的线正确率却没有继续变高,数值约接近0.7(70%),损失率反而逐渐增高。这表示训练过程已造成过拟合(over fitting)的状况,需要加入更多不同样态及更多数量的数据集再重新训练才能改善。

左:训练及验证准确性,右:训练及验证损失

推论结果

接着就可利用前面训练好的模型(model)来加以推论(或称为预测)。首先提供一张图片,并将图像数据正规化(150x150x3, Float32),接着进行推论,最后会得到图像分类结果分数,而分数越接近1.0则表示是狗的机率越高,反之越接近0.0则越可能是猫。我们可以另设几个自定义门坎值来区隔分类结果,比方说「这是狗」、「这可能是狗」、「这可能是猫」、「这是猫」等不同结果描述。

为了让大家更了解深度学习模型运作方式,将各层运作结果输出到特征图中,再逐一秀出。如下图,最上面为原始输入影像正规化后的结果图,再来才是真正导入输入层的信息,尺寸为150×150共有3组(RGB三通道)。

第一卷积层共产生16个特征图,conv2d_1尺寸为148×148,max_pooling2d_1尺寸为74×74;第二卷积层共产生32个特征图,conv2d_2尺寸为72×72,max_pooling_2为36×36;第三卷积层共产生64个特征图,conv2d_3尺寸为34×34,max_pooling_3为17×17;最后的全连结层(dense)则为单一节点信息,不易以图形方式表示,故忽略不处理。

从各层特征图中可看出,随着影像尺寸缩小其被激活的像素越来越少,甚至完全不输出(全黑),表示其特征已被某些卷积(滤波器)给凸显出来。对于我们所需的图像分类(辨识)能力也逐渐增强了。

推论结果可视化

结论

Google Colaboratory这项免费的云端GPU资源实在很方便刚入门的伙伴进行「深度学习」(一语双关),它不会因为个人计算机(笔电)的配备等级不同,而影响模型训练及推论的效能。同时,可轻易的分享代码给其它想学的人,对开源社群更是一大助力。希望不久的将来有更多伙伴能一起加入研究及分享,让更多人工智能的应用能加速落地。

完整代码及说明,请参阅Github.

作者:许哲豪

<上一页  1  2  
声明: 本文由入驻维科号的作者撰写,观点仅代表作者本人,不代表OFweek立场。如有侵权或其他问题,请联系举报。

发表评论

0条评论,0人参与

请输入评论内容...

请输入评论/评论长度6~500个字

您提交的评论过于频繁,请输入验证码继续

暂无评论

暂无评论

    人工智能 猎头职位 更多
    扫码关注公众号
    OFweek人工智能网
    获取更多精彩内容
    文章纠错
    x
    *文字标题:
    *纠错内容:
    联系邮箱:
    *验 证 码:

    粤公网安备 44030502002758号