迁移学习:共享AI智慧的途径

  作者:高焕堂 时间:2020-03-03来源:电子产品世界

高焕堂  (台湾VR产业联盟主席,厦门VR/AR协会荣誉会长兼顾问)

0  引言 

迁移学习(Transfer Learning)就像俗称的“拿来主义”,善用别人已经训练好模型的参数(智慧),引入到 自己的模型里,可以迅速建立1个AI的应用情境。本文 以ResNet50为例,说明如何复用(Reuse)已经训练好的 ResNet50的智慧(模型和参数),帮您瞬间探索任何一张 图像的特征(Feature),然后帮您识别出图片里的人或物 的种类,如水牛、斑马、猫头鹰或汽车等。

1  认识迁移学习:以ResNet50为例 

AI的智慧是来自机器的自我学习,通称为机器 学习。它经常需要借助大量的数据来训练。例如, ResNet50就使用100多万张图像而训练出来的。在训练 的过程中,它去探索每张图像中的特称,并且学习归纳 和分类。目前的ResNet50可以准确地识别出1000种人 或物,如日常生活中常遇到的狗、猫、食物、汽车和各 种家居物品等。例如,您可以随意从百度图片上截取一 张224x224大小的图片,如图1。

微信截图_20200306112121.png

当您把这图片提交给ResNet50,它会瞬间探 索并进行分类,然后告诉您:我预测这是大熊猫(Giant panda)。

2  介绍ResNet50模型的结构 

目前最常见的AI图像识别模型是:卷积网路(CNN) 模型。这ResNet50就是基于CNN的模型,如图2。

微信截图_20200306112148.png

其中,CNN模型包含两部分:卷积层(Convolution Layers)与全连接层(Full-Connected Layers)。前者我特 别称之为丫鬟部分;而后者则称之为格格部分[1-2],如图3。

微信截图_20200306112207.png

Conv部分比较复杂,共约有40个层;而FC部分约 有10个层。所以称之为ResNet50模型。

3  复用ResNet50智慧的方法 

典型的复用(Reuse)步骤如下。

1)撰写Python程式来建立一个ResNet50模型。 您可以从网路下载此Python程式的源码来做修改。网址为:

https://github.com/fchollet/deep-learning-models/ releases/ 

如图4的绿色框部分:

微信截图_20200306112229.png

2)从网络下载已经训练好的模型参数(智慧)。 例如,图4里的红色框部分。包含2个档案(下文详细 说明)。 

3)把所下载的模型参数档案内容载入您刚才建立 的ResNet50模型里。 

经由这3个步骤,就把别人已经训练(学习)好的模型 参数,顺利地迁移(Transfer)到您自己建立的模型里了。

4   新潮方法:使用Excel把ResNet50模型包装起来 

4.1 准备执行环境(不需要编程) 

使用Excel来包装Python程式,可以让许多不熟悉编 程者,来轻易地使用AI的各种应用情境。只要您的电 脑上安装有Excel和Python的相关套件(如TensorFlow、 Keras等)就能够执行基于Excel+Python的AI模板 (Template)了。至于这项执行环境的安装指南,可以参 阅笔者的博客:https://www.cnblogs.com/SmartADT/。 

安装好了执行环境,就可以从上述网页里下载两个 模板:jjt18.zip,依据说明文件复制到您的环境里,然 后就可以执行了。 4.2 开始执行jjt18模板 

首先,把这张图像放在图5里。

微信截图_20200306112245.png

准备把c:/oopc/im001pd.pg图像提交给ResNet50去探 索和分类。接着,请您开启Python程式:jjt18.py。画面 上就出现了预先写好的Python程式:

微信截图_20200306112306.png

然后执行这个程式,就呈现出Excel画面:

1583465140925483.png

请按下“Predict”按钮,这Excel背后的ResNet50就 展开瞬间探索这张像并进行分类,然后输出如下:

1583465157660442.png

它告诉您了:我预测99%的可能性是大熊猫(Giant panda)。

5  仅复用丫鬟,训练自己的格格 

5.1 说明 由于ResNet50是典型的CNN模型,包含卷积层与 FC层。在上一节里,使用Excel画面来操作ResNet50, 并复用了全部(卷积层与FC层)的权重,就不必重新训 练,而直接用来辨别图像里的东西。在本节里,就来介 绍另一种用法:只复用它的卷积层(丫鬟)部分,而不复 用FC层(格格)部分的权重。也就是,要自己来训练FC层 (格格)部分。 

在CNN 模型(如ResNet50)里,丫鬟部分负责探索像 的特征,然后把这些特征值交给格格,让格格(依据特 征值)来分辨出种类。例如,丫鬟看到一张图片里的动 物特征是:身体黑白条纹、4只脚,然后格格就依据这 特征而判断这很可能是一匹斑马。 

虽然ResNet50里的格格已经有智慧来进行图像分类 (Classification)了,而且可以辨识1000种日常生活中的 人或物。然而,在一些较狭窄的应用场域里,只需要 (更准确)辨识较少的种类时,就需要训练自己的格格。 

刚才提到了,有些场合需要重新训练格格来分类, 但是丫鬟具有的探索像特征的智慧,却可以复用之。亦即,能借助于ResNet50的丫鬟(即卷积部分)的智慧,帮 忙探索我的图片,来协助训练新的格格。一旦新格格训 练好了之后,ResNet50原有的丫鬟就能和新格格协同合 作,来更精确地区分特定的数据(图片)集了。由于不必 重新训练丫鬟部分,就能节约许多训练(丫鬟的)时间。 

5.2 准备数据,来训练新格格 

兹拿一个较狭小的应用场域,只需要格格来分辨 3个种类:斑马、猫头鹰和蘑菇。于是,笔者在/oopc/ v_data/train/文件夹里,准备了150张图片(皆为224 x 224),包括50张斑马、50张猫头鹰、以及50张蘑菇的图 片。将它们分别放在这3个小文件夹里:

微信截图_20200306112411.png

例如,其中的/Zebra/小文件夹里有50张图片,如图 6里。

1583465202717425.png

亦即,在/v_data/train/里共有150张图片,分为3 种类(Classes)。接下来,就拿3类的图像来训练自己的 格格。于是,继续使用jjt18模板,执行jjt18.py呈现出 <工作表2”的画面,并按下<Train”按钮,就展开训 练了:

1583465225911570.png

大约经过5分钟,就可训练完毕了。接着点选“工 作表3”,并按下“Show”按钮,就显示出一张图片, 如下图。

微信截图_20200306112637.png

接着,按下“Predict”,就把这张图片提交给 ResNet50去识别。此时,就先由(ResNet50原有的)丫鬟 先去探索这张图片的特征,然后把特征值转交给新格格 去分类。最后由格格输出结果如图7。

6  结语 

本文是以ResNet50为例,说明如何借助ResNet50已 经训练好的智慧去识别形形色色的图像。此外,还可以 复用ResNet50里的丫鬟智慧,搭配自己的图片集,来训 练自己的新格格,更新了ResNet50的智慧。 

随着AI的应用领域愈来愈多,除了ResNet50之外, 您还可以通过本文所介绍的“迁移学习”途径来共享更 多的AI模型和智慧。

微信截图_20200306112700.png

参考文献: 

[1] 高焕堂.学AI之路,从探索特征出发[J].电子产品世界, 2019(11):81-84. 

[2] 高焕堂.迈向AI与IC产业结合之路——从AI神鹰设计模式谈起 [J].电子产品世界,2019(12):78-80.

本文来源于科技期刊《电子产品世界》2020年第03期第85页,欢迎您写论文时引用,并注明出处。

关键词: 202003 AI 人工智能

加入微信
获取电子行业最新资讯
搜索微信公众号:电子产品世界

或用微信扫描左侧二维码

相关文章


用户评论

请文明上网,做现代文明人
验证码:
查看电脑版