迁移学习:共享AI智慧的途径
2020-11-10高焕堂
高焕堂
0引言
迁移学习(Transfer Learning)就像俗称的“拿来主义”,善用别人已经训练好模型的参数(智慧),引入到自己的模型里,可以迅速建立1个AI的应用情境。本文以ResNet50为例,说明如何复用(Reuse)已经训练好的ResNet50的智慧(模型和参数),帮您瞬间探索任何一张图像的特征(Feature),然后帮您识别出图片里的人或物的种类,如水牛、斑马、猫头鹰或汽车等。
1认识迁移学习:以ResNel50为例
AI的智慧是来自机器的自我学习,通称为机器学习。它经常需要借助大量的数据来训练。例如,ResNet50就使用100多万张图像而训练出来的。在训练的过程中,它去探索每张图像中的特称,并且学习归纳和分类。目前的ResNet50可以准确地识别出1000种人或物,如日常生活中常遇到的狗、猫、食物、汽车和各种家居物品等。例如,您可以随意从百度图片上截取一张224x224大小的图片,如图1。
当您把这图片提交给Re sNet50,它会瞬间探索并进行分类,然后告诉您:我预测这是大熊猫(Giantpanda)。
2介绍ResNel50模型的结构
目前最常见的AI图像识别模型是:卷积网路(cNN)模型。这ResNet50就是基于CNN的模型,如图2。
其中,CNN模型包含两部分:卷积层(convolutionLayers)与全连接层(Full-Connected Layers)。前者我特别称之为丫鬟部分;而后者则称之为格格部分,如图3。
Conv部分比较复杂,共约有40个层;而FC部分约有10个层。所以称之为ResNet50模型。
3复用ResNel50智慧的方法
典型的复用(Reuse)步骤如下。
它告诉您了:我预测99%的可能性是大熊猫(Giantpanda)。
5仅复用丫鬟,训练自己的格格
5.1说明
由于ResNet50是典型的CNN模型,包含卷积层与FC层。在上一节里,使用Excel画面来操作ResNet50,并复用了全部(卷积层与FC层)的权重,就不必重新训练,而直接用来辨别图像里的东西。在本节里,就来介绍另一种用法:只复用它的卷积层(丫鬟)部分,而不复用FC层(格格)部分的权重。也就是,要自己来训练FC层(格格)部分。
在CNN模型(女DResNet50)里,丫鬟部分负责探索像的特征,然后把这些特征值交给格格,让格格(依据特征值)来分辨出种类。例如,丫鬟看到一张图片里的动物特征是:身体黑白条纹、4只脚,然后格格就依据这特征而判断这很可能是一匹斑马。
虽然ResNet50里的格格已经有智慧来进行图像分类(classification)了,而且可以辨识1000种日常生活中的人或物。然而,在一些较狭窄的应用场域里,只需要(更准确)辨识较少的种类时,就需要训练自己的格格。
刚才提到了,有些场合需要重新训练格格来分类,但是丫鬟具有的探索像特征的智慧,却可以复用之。亦即,能借助于ResNet50的丫鬟(即卷积部分)的智慧,帮忙探索我的图片,来协助训练新的格格。一旦新格格训练好了之后,ResNet50原有的丫鬟就能和新格格协同合作,来更精确地区分特定的数据(图片)集了。由于不必重新训练丫鬟部分,就能节约许多训练(丫鬟的)时间。
5.2准备数据,来训练新格格
兹拿一个较狭小的应用场域,只需要格格来分辨3个种类:斑马、猫头鹰和蘑菇。于是,笔者在/oopc/v data/train/文件夹里,准备了150张图片(皆为224x224),包括50张斑马、50张猫头鹰、以及50张蘑菇的图片。将它们分别放在这3个小文件夹里:
亦即,在/v_data/train/里共有150张图片,分为3种类(Classes)。接下来,就拿3类的图像来训练自己的.格格。于是,继续使用jjtl8模板,执行jjtl8PY呈现出<工作表2”的画面,并按下
大约经过5分钟,就可训练完毕了。接着点選“工作表3”,并按下“Show”按钮,就显示出一张图片,如下图。
接着,按下“Prediet”,就把这张图片提交给ResNet50去识别。此时,就先由(ResNet50原有的)丫鬟先去探索这张图片的特征,然后把特征值转交给新格格去分类。最后由格格输出结果如图7。
6结语
本文是以ResNet50为例,说明如何借助ResNet50已经训练好的智慧去识别形形色色的图像。此外,还可以复用ResNet50里的丫鬟智慧,搭配自己的图片集,来训练自己的新格格,更新了ResNet50的智慧。
随着AI的应用领域愈来愈多,除7ResNet50之外,您还可以通过本文所介绍的“迁移学习”途径来共享更多的AI模型和智慧。