嗨。我叫乔·希克林。我是MathWorks的高级开发人员。我将向你们展示如何进行迁移学习。迁移学习是一种非常实用的方法,可以将深度学习应用到你的问题中。
通过转移学习,你需要一个预先存在的神经网络,稍微修改一下,然后在你的图像上重新训练它。这可以产生非常好的结果,而且比从头开始设计一个网络并自己训练它要容易得多。
在我的工作中,我需要能够区分汉堡包和热狗,纸杯蛋糕,苹果派和冰淇淋。据我所知,没有一个网络能帮我做到这一点。我将从一个已经存在的网络开始,Alex net。Alex net已经被训练去分类1000种不同的图像,它已经被训练了超过100万的图像。
所以我来了。我要开始加载Alex net,我要把层从里面拿出来,这样我就可以看到部分了。如果你往下看,你可以看到亚历克斯网有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国家站点没有针对您所在位置的访问进行优化。