1.4 迁移学习简介
1.4.1 训练深度学习模型依赖大数据
深度卷积神经网络具有极高的分类精度,同时也具有极多的参数需要训练,著名的AlexNet有57,000,000个参数需要训练,InceptionV2有12,000,000个参数需要训练,见表1-2。
表1-2 深度卷积神经网络参数个数
要将如此多的参数训练出来,需要上万甚至十万百万以上的数据,即大数据。另外,还需要与之相匹配的超强算力,即云计算。
AI必备三要素:深度学习算法+云计算+大数据,如图1-18所示,三者互相促进不断迭代,引发了AI的第三次高潮。
图1-18 AI三要素:算法+算力+数据
以赢了李世石的AlphaGo为例,DeepMind在论文[5]中提到,DeepMind使用了KGS网上对弈服务器上的3000万种Positions来训练AlphaGo的SL Policy Network。
假设一盘棋200手结束,一盘棋就有200个Positions。论文指出,AlphaGo用了KGS服务器上6D-9D的16万局棋谱来训练SL Policy Network,共3000万个Positions。16万局棋谱,这远超一个专业棋手一生接触的棋谱数量。
从上例中,大家应该对将一个“空”的深度神经网络训练成为一个具备“智慧”能力的深度学习神经网络需要的大数据有个数量上的感知了。
1.4.2 大数据造成的问题
大数据带来的第一个问题是:收集数据非常困难。例如,一个工厂有4条生产线,每条生产线的速度是每小时生产1000个产品,即UPH=1000。其中外观不良率为1%,若要收集1万个外观不良的产品图片,需要10000÷(1000×1%×4)=250个小时,假设每天生产10个小时,需要25个工作日,差不多1个月。若需要10万张外观不良的图片,就需要收集10个月。
大数据带来的第二个问题是:标注数据非常耗时。本书第3章会介绍图像标注,届时读者可以体会到标注的辛苦。根据实践数据,画一个标注框大概需要15s,假设平均一张图片要画4个标注框,则完成一张图片的标注工作需要1min,完成1万张图片的标注工作需要10000min,即166.7h,差不多需要21个工作日。大家可以想象一下对着计算机显示器连续画21天的标注框是什么样的感受。
大数据带来的第三个问题是:训练模型非常耗时。根据经验数据,从头训练一个相对复杂的深度卷积神经网络,在比较好的GPU上,动辄需要3~4天时间,甚至1~2个星期。
如此耗时耗力的工程投入会造成项目工期特别长、项目成本特别高,严重阻碍了商业项目的落地。
是否有方法可以解决上述的问题呢?迁移学习(Transfer Learning)就是一个非常好的办法。
1.4.3 迁移学习
迁移学习(Transfer Learning)是指假如有一个已经在大规模数据集上训练好的模型,将该模型学习到的知识迁移到另外一个模型,即保留特征提取器不变,在具有相似特征的新的数据集上重新训练分类器。由于特征提取器不用再训练了,大大减少了需要训练的参数个数,这样只需要小数据就行了。
用比较直白的话来说,就是先下载别人已经训练好的模型,然后基于这个模型做深度学习训练。例如,别人已经在COCO数据集上训练好了识别猫、狗、马、牛、羊的目标检测模型,你计划做一个老虎和豹子的检测模型,则只需要先下载这个训练好的猫、狗、马、牛、羊检测模型,并在此模型的基础上用小数据(几百张图像),就可以把老虎和豹子的检测模型训练出来了。
Andrew Ng在其著名的NIPS 2016教程提到,2016年后,驱动深度学习商业成功的两大动力,一是监督学习(Supervised learning),二是迁移学习(Transfer learning),如图1-19所示。
图1-19 驱动深度学习商业成功的两大动力
由此,在商业落地上,AI分为两个类别,如图1-20所示。
图1-20 巨头公司和中小企业的AI项目落地路径
第一类是拥有云计算+大数据能力+AI科学家+AI算法工程师的巨头公司,他们非常容易收集到数据,并且可以雇用成千上万的人做数据标注,他们能够基于监督学习(Supervised learning),从头设计研发并训练有巨大商业潜力的模型。
第二类是广大中小企业和非AI行业从业者,他们无法拥有云计算,没有足够的经费雇用高水平的AI算法工程师和大量做数据标注的人。他们扎根细分行业,基于迁移学习(Transfer learning)做着巨头公司不愿意做的定制化项目。这些定制项目的商业价值都不巨大,不值得巨头去投入,但数量却十分惊人,各行各业都有。
读到这里,大部分人都会有一个疑惑,谁提供预训练模型呢?其中一个答案是:TensorFlow detection model zoo。
1.4.4 TensorFlow预训练模型库
TensorFlow在Github上提供了很多基于COCO、Kitti、Open Images、AVA v2.1和iNaturalist Species Detection数据集已训练好的模型供大家下载使用。
TensorFlow detection model zoo链接地址:
https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/detecti on_model_zoo.md。
其提供的预训练模型如图1-21所示。
图1-21 基于COCO数据集的预训练模型
本书将在第3章详述如何基于TensorFlow detection model zoo中的预训练模型做迁移学习,训练自己想要的目标检测模型。