嗨。我叫乔·希克林。我是MathWorks的高级开发人员。我将向你们展示如何进行迁移学习。转移学习是一种非常实用的方法,可以将深度学习应用到你的问题中。
随着迁移学习,你把已有的神经网络,稍微修改它,然后重新训练它在你的图片。这可能会产生优异的成绩,远远比从头开始设计网络和自己的训练就容易得多。
在我的工作中,我需要能够区分汉堡包与热狗、纸杯蛋糕、苹果派和冰淇淋。据我所知,还没有哪个社交网络能帮我做到这一点。我将从一个已经存在的网络开始,Alex net。Alex net已经被训练去分类1000种不同的图像,它已经被训练去分类100多万张图像。
所以我在这里。我要开始了装载亚历克斯网,我要得到的层出的,所以我能看到的部分。如果你在这里往下看,可以看到亚历克斯网有25层。大部分的层都在做有用的图像处理的事情,会为我的系统工作,以及亚历克斯净的。我要离开那些独自一人。
但是第23层有1000个神经元,因为Alex net分类了1000个不同的图像。我只打算做五种不同的图像,所以我要用一个只有五种图像的网络来代替它。最后,我将替换输出层。Alex net的最后一层学习了Alex net的分类,那1000个不同的类。我不想那样。我将用一个空层替换它,它将学习我的层。
现在我已经建立了我的网络。是时候处理数据了。你不需要一百万个像Alex net那样的图像,但是你需要1000个这样的图像才能得到好的结果。我做了一个文件夹,里面有五个子文件夹,每个类一个。有一种叫苹果派,还有一种叫杯形蛋糕,等等。每一个文件夹里都有1000张相关主题的图片。
我将这些图片的大小调整为Alex net所期望的大小,227 * 227,您也必须这样做。如果你像这样排列你的数据,你可以使用MATLAB的图像数据存储对象,因为它理解那个结构,它会加载所有的图像并为你适当地标记它们。这就是我要做的。
只要我有我的图片,我需要把它们分成两组。他们中的大多数,我会使用的培训,但我会几个人出来保存到测试的准确性更高版本。因此,让我们做到这一点。现在,我都准备好训练我的网络。我必须在这里设置了几个网络参数。我选择的是要很好地工作参数。
如果你愿意,你可以改变这些,看看会发生什么。然后我准备训练网络。开始的。这需要5到6分钟来完成它的工作。我的电脑里有一个相当强大的GPU,所以它非常快。你的里程可能不同。好了,网络已经完成了训练。我们要做的第一件事就是看看它有多精确。
我们会要求网络对测试图像进行分类,也就是我们在训练集中遗漏的图像,然后我们会看看有多少是正确的。84%的准确率。对于五分钟的工作来说已经很不错了。现在让我们用网络摄像头在一些真正的食物上尝试一下。我只是碰巧桌子上有一些食物。有汉堡包、苹果派、热狗、冰淇淋。
所以,总体来说,它的工作原理相当不错,这是相当强劲了很多的这些。不同的角度和东西。就这样,我们走了。这工作比我预期的要好,真的。我简化了这个演示,就像我可以,但在下载,我们会包括将有更多的评论的第二个文件,它就会有更多的代码来处理可能出现的一些情况。
我已经向你们展示了如何用转移学习进行分类,但是如果你需要实际的数字,你也可以用转移学习进行回归。好吧,我希望我已经向你们展示了足够多的东西,让你们对转学学习感兴趣,所以拿一些零食,试一试吧。
您还可以选择从下面的列表中的网站:
选择中国网站(中文或英文)以获得最佳网站表现。其他MathWorks国家站点不适合来自您所在位置的访问。