深度学习

理解和使用深度学习网络

MATLAB赢得了黑客马拉松

本文来自比荷卢联盟办公室的应用工程师Paola Jaramillo。
今年2月,我参加了一场由ititility主办的黑客马拉松:开会3小时,解决一个图像分类问题,同时享用意大利面,与同事交流。我去那里主要是为了学习和了解其他工程师和研究人员是如何在日常生活中使用机器学习的。正如这篇博客文章的标题所示,我的团队最终获得了令人印象深刻的结果,并赢得了黑客马拉松!

所面临的挑战

黑客马拉松的目标是解决一个与现实研究相关的图像分类问题:
给定一个特定植物物种的简化数据集,机器学习可以正确地识别图像中的物种。
聚会的原始链接是在这里.在这个分类任务中,我们使用的语言或方法没有任何限制。我们分成小组,每个小组开始头脑风暴。团队决定用各种方法来解决这个问题:
  • -传统图像处理技能:使用像素正确识别图像
  • -根据之前使用工具的经验,使用R和Python
  • -机器学习方法,对图像进行预处理以识别特征

我的方法

我和我的团队之前没有植物幼苗和图像处理方面的专业知识,无法提出正确的工程特征,所以我们决定在原始图像上使用深度学习技术。考虑到数据集的大小和有限的时间,我们使用了一种在深度学习社区中流行的简单方法转移学习而不是从头开始。
当人们正在检查图像,并寻找正确的库和包开始时,我启动了MATLAB并搜索了一个迁移学习示例的文档。(//www.tatmou.com/help/deeplearning/examples/transfer-learning-using-alexnet.html
原始示例在图像中显示了完全不同的对象,因此不清楚这是否适用于我们的数据,但该示例表明,通过应用迁移学习,预训练的模型AlexNet能够学习特征并对新图像进行分类。
首先,我将输入更改为指向新数据的位置:
imagepath = fullfile(pwd,'Subset_from_NonsegmentedV2');imds = imageDatastore(imagepath, ' inclesubfolders ',true,…“LabelSource”、“FolderNames”)
这些图片没有单独贴上标签,但它们被分开到文件夹中,并以特定物种的名称作为文件夹名。imageDatastore可以根据文件夹名称自动标记图像,因此这为我们节省了很多工作。
在花时间预处理图像之前,我们决定从原始图像数据中探索重新训练AlexNet的结果。为此,我们只需要调整图像的大小,这由imageDatastore的read函数自动完成
Imagesize = layers(1)。InputSize outputSize = imagesize(1:2);洛桑国际管理发展学院。ReadFcn = @(img)imresize(imread(img),outputSize);
*注意,您还可以使用一个名为augmentedImageDatastore在19日
然后,我们将数据集分为训练和验证。为测试提供了一个单独的图像文件夹。
[trainDS,valDS] = splitEachLabel(imds,0.7,'randomized')
然后我们在一个简单的AlexNet模型上进行训练。这需要大约7分钟的时间来训练我的笔记本电脑和GPU。MATLAB自动检测GPU并使用它进行训练。
opts = trainingOptions('sgdm','InitialLearnRate',0.0001,…ValidationData, valDS,……“阴谋”、“训练进步”,…“MiniBatchSize”8…%的变化根据内存可用性'ValidationPatience', 3,…'ExecutionEnvironment','auto') %'multi-gpu'或'parallel'用于扩展到HPC hackathon_net = trainNetwork(trainDS, layers_to_train, opts);
初始模型的训练进度图
第一次训练的准确率为92%。还不错,但这足以赢得全部冠军吗?我平衡了数据集,每个类别只使用100个。
imds = splitEachLabel(imds,100,'随机');
使用平衡的数据集,精度变得更高-导致97%在测试数据集上的会话结束时。我们能够尝试各种选项和迭代,并发现一个简单的AlexNet模型将产生最好的结果。
以下是按所采取的方法列出的结果表:
工具 MATLAB PyTorch Python Python Python TensorFlow-Keras
模型 AlexNet Resnet-50 VGG-16 远离火源CNN 随机森林 InceptionV3
技术 数据集平衡 亚当优化 数据增强(更多数据) 按颜色通道
精度 97% 88% 80% 77% 53% 22%
你可以在这里阅读更多关于黑客马拉松挑战的内容:https://blogs.itility.nl/en/image-recognition-model-that-identifies-plant-species.以下是该博客文章中的一段话:
最后,获胜的团队使用了一个相当简单的8层AlexNet模型,但在未标记的数据集上成功地达到了97%的准确率!这里有一个有趣的细节-这个团队不仅获得了最高的精度,他们也是唯一一个没有使用R或Python,而是使用MATLAB的团队
似乎人们都希望开源软件能赢得这场挑战,但MATLAB才是赢家!

总结

这是一个在现实生活中与机器学习社区合作的绝佳机会,我对自己的参与和结果感到非常满意。
重要的是要记住,我是一名工程师,有信号处理系统的背景,对机器学习有基本的了解,可以使用MATLAB解决各种各样的问题。我能够在没有任何背景的情况下将深度学习技术应用到图像数据中,在这种情况下,只需搜索文档中的正确示例并使用预训练的模型。
总的来说,这是一种快速开始深度学习的方法,并将一个工作模型组合在一起来解决并赢得现实生活中的挑战!
再次感谢Paola参加了这次活动,并在团队中取得了令人印象深刻的成绩。您可以从FileExchange.请在下方评论你对Paola关于这次活动的任何问题。

|
  • 打印
  • 发送电子邮件

评论

如欲留言,请点击在这里登录您的MathWorks帐户或创建一个新帐户。