【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.
作者:许哲豪
最新活动更多
-
11月28日立即报名>>> 2024工程师系列—工业电子技术在线会议
-
12月19日立即报名>> 【线下会议】OFweek 2024(第九届)物联网产业大会
-
即日-12.26火热报名中>> OFweek2024中国智造CIO在线峰会
-
即日-2025.8.1立即下载>> 《2024智能制造产业高端化、智能化、绿色化发展蓝皮书》
-
精彩回顾立即查看>> 2024 智能家居出海论坛
-
精彩回顾立即查看>> 【在线会议】多物理场仿真助跑新能源汽车
推荐专题
发表评论
请输入评论内容...
请输入评论/评论长度6~500个字
暂无评论
暂无评论