嗨。我叫乔·希克林。我是MathWorks的高级开发人员。我将向你们展示如何进行迁移学习。迁移学习是一种非常实用的方法,可以将深度学习应用到你的问题中。
在迁移学习中,你将一个已经存在的神经网络,稍微修改一下,然后在你的图像上重新训练它。这可以产生很好的结果,而且比从头开始设计网络并亲自训练要容易得多。
在我的工作中,我需要能够区分汉堡包、热狗、纸杯蛋糕、苹果派和冰淇淋。据我所知,没有电视台愿意帮我。所以我要从一个已有的网络开始,Alex net。亚历克斯·内特已经被训练来分类1000种不同的图像,它已经被训练来分类超过100万张图像。
所以我来了。我要开始加载Alex net,我要把它的图层去掉,这样我就能看到各个部分了。如果你往下看,你可以看到Alex网有25层。大多数层都在做有用的图像处理事情,这将为我的系统以及Alex net的工作。我不去管那些了。
但第23层有1000个神经元,因为Alex net分类了1000个不同的图像。我只会做五种不同的图片,所以我要用一个只有五张图片的网络来代替它。最后,我还要替换输出层。Alex net的最后一层学习了Alex net的分类,那1000个不同的类。我不想那样。我要用一个空的图层来替换它,它会学习我的。
现在我已经把网络设置好了。是时候处理数据了。你不需要像Alex net训练过的上百万张图片,但是你需要1000张图片才能得到好的结果。我创建了一个文件夹,其中有五个子文件夹,每个文件夹对应我的类。有苹果派,纸杯蛋糕,等等。每个文件夹里都有1000张相关主题的图片。
我已经将这些图像的大小调整为Alex net所期望的大小,227 * 227,你也必须这么做。如果你像这样安排数据,你可以使用MATLAB的图像数据存储对象,因为它理解这个结构,它会加载所有的图像并为你适当地标记它们。这就是我在这里做的。
一旦我得到了我的图像,我需要把它们分成两组。其中大部分我将用于训练,但我将保留一些,以便以后测试准确性。我们来做一下。现在我已经准备好训练我的网络了。我需要设置一些网络参数。我已经选择了运行良好的参数。
如果你愿意,你可以改变这些,看看会发生什么。然后我就可以训练网络了。开始的。这需要五到六分钟才能完成。我的电脑有一个相当强大的GPU,所以速度很快。你的里程可能有所不同。好了,电视台的训练结束了。我们现在要做的第一件事就是看看它有多精确。
我们要让网络对测试图像进行分类,那些我们在训练集中漏掉的图像。然后我们要看看它正确的比例是多少。我们的准确率为84%。就五分钟的工作来说已经很不错了。现在让我们用网络摄像头拍摄一些真正的食物。我桌上刚好有吃的。有汉堡包,苹果派,热狗,冰淇淋。
所以总的来说,它工作得很好,对于很多这样的东西来说,它是相当强大的。不同的角度。好了。这比我想象的要好,真的。我尽可能地简化了这个演示,但是在下载中,我们将包含第二个文件,它将有更多的注释,它将有更多的代码来处理可能出现的一些情况。
我已经向你们展示了如何用迁移学习进行分类,但如果你需要实数,你也可以用迁移学习进行回归。好吧,我希望我已经向你们展示了足够多的东西,让你们对迁移学习产生兴趣,所以带上一些零食,试一试。
你也可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。