0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何用Matlab做一个新的迁移学习实战详解

新机器视觉 来源:渝西图像练习生 作者:渝西图像练习生 2021-04-26 13:58 次阅读

大家好我们今天来讲一讲如何用Matlab做一个新的迁移学习您可能需要的基础知识

Matlab编程Deep learning的基础知识

一、什么是迁移学习?

以图像识别为例。如果你想构建一个神经网络,让它能够识别马匹,但是手上又没有任何公开的算法可以完成这项任务。这时,借助迁移学习,你可以从一个原本是用来识别其它动物的现成的卷积神经网络(CNN)入手,对其进行调整并训练它识别马匹。深度学习应用中常常用到迁移学习。可以采用预训练的网络,基于它学习新任务。与使用随机初始化的权重从头训练网络相比,通过迁移学习微调网络要更快更简单。我们可以使用较少数量的训练图像快速地将已学习的特征迁移到新任务。

二、网络的创建和数据的导入

加载数据

解压缩新图像并加载这些图像作为图像数据存储。imageDatastore 根据文件夹名称自动标注图像,并将数据存储为 ImageDatastore 对象。通过图像数据存储可以存储大图像数据,包括无法放入内存的数据,并在卷积神经网络的训练过程中高效分批读取图像。

unzip(‘MerchData.zip’);imds = imageDatastore(‘MerchData’, 。.. ‘IncludeSubfolders’,true, 。.. ‘LabelSource’,‘foldernames’);

将数据划分为训练数据集和验证数据集。将 70% 的图像用于训练,30% 的图像用于验证。splitEachLabel 将 images 数据存储拆分为两个新的数据存储。

[imdsTrain,imdsValidation] = splitEachLabel(imds,0.7,‘randomized’);

这个非常小的数据集现在包含 55 个训练图像和 20 个验证图像。

numTrainImages = numel(imdsTrain.Labels);idx = randperm(numTrainImages,16);figurefor i = 1:16 subplot(4,4,i) I = readimage(imdsTrain,idx(i)); imshow(I)end

加载预训练网络

加载预训练的 AlexNet 神经网络。如果未安装 Deep Learning Toolbox Model for AlexNet Network,则软件会提供下载链接。AlexNet 已基于超过一百万个图像进行训练,可以将图像分为 1000 个对象类别(例如键盘、鼠标、铅笔和多种动物)。因此,该模型已基于大量图像学习了丰富的特征表示。

net = alexnet;

使用 analyzeNetwork 可以交互可视方式呈现网络架构以及有关网络层的详细信息

analyzeNetwork(net)

3dcf67d2-a648-11eb-aece-12bb97331649.png

第一层(图像输入层)需要大小为 227×227×3 的输入图像

其中 3 是颜色通道数

inputSize = 1×3 227 227 3

三、网络的训练

替换最终层

预训练网络 net 的最后三层针对 1000 个类进行配置。必须针对新分类问题微调这三个层。从预训练网络中提取除最后三层之外的所有层。

layersTransfer = net.Layers(1:end-3);

通过将最后三层替换为全连接层、softmax 层和分类输出层,将层迁移到新分类任务。根据新数据指定新的全连接层的选项。将全连接层设置为大小与新数据中的类数相同。要使新层中的学习速度快于迁移的层,请增大全连接层的 WeightLearnRateFactor 和 BiasLearnRateFactor 值。

numClasses = numel(categories(imdsTrain.Labels))numClasses = 5

layers = [ layersTransfer fullyConnectedLayer(numClasses,‘WeightLearnRateFactor’,20,‘BiasLearnRateFactor’,20) softmaxLayer classificationLayer];

训练网络

网络要求输入图像的大小为 227×227×3,但图像数据存储中的图像具有不同大小。使用增强的图像数据存储可自动调整训练图像的大小。指定要对训练图像额外执行的增强操作:沿垂直轴随机翻转训练图像,以及在水平和垂直方向上随机平移训练图像最多 30 个像素。数据增强有助于防止网络过拟合和记忆训练图像的具体细节。

pixelRange = [-30 30];imageAugmenter = imageDataAugmenter( 。.. ‘RandXReflection’,true, 。.. ‘RandXTranslation’,pixelRange, 。.. ‘RandYTranslation’,pixelRange);augimdsTrain = augmentedImageDatastore(inputSize(1:2),imdsTrain, 。.. ‘DataAugmentation’,imageAugmenter);

3e14d114-a648-11eb-aece-12bb97331649.png

对验证图像进行分类

使用经过微调的网络对验证图像进行分类

[YPred,scores] = classify(netTransfer,augimdsValidation);

显示四个示例验证图像及预测的标签

idx = randperm(numel(imdsValidation.Files),4);figurefor i = 1:4 subplot(2,2,i) I = readimage(imdsValidation,idx(i)); imshow(I) label = YPred(idx(i)); title(string(label));end

计算针对验证集的分类准确度。准确度是网络预测正确的标签的比例

YValidation = imdsValidation.Labels;accuracy = mean(YPred == YValidation)

accuracy = 1

今天你学废了吗???
编辑:lyn

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • matlab
    +关注

    关注

    182

    文章

    2963

    浏览量

    230183
  • 神经网络
    +关注

    关注

    42

    文章

    4765

    浏览量

    100556
  • 图像识别
    +关注

    关注

    9

    文章

    519

    浏览量

    38240
  • 迁移学习
    +关注

    关注

    0

    文章

    74

    浏览量

    5558

原文标题:【图像识别】基于Matlab的迁移学习的图像分类案例

文章出处:【微信号:vision263com,微信公众号:新机器视觉】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    何用恒流电源驱动LED和激光二极管

    今天我们将学习什么是恒流电源?以及如何用恒流电源驱动 LED 和 激光二极管。
    的头像 发表于 10-15 14:23 454次阅读
    如<b class='flag-5'>何用</b>恒流电源驱动LED和激光二极管

    如何使用合宙的DTU+业务云平台,做一个温湿度传感器数据采集项目?

    使用合宙的DTU+业务云平台,做一个温湿度传感器数据采集项目,超详细教程。
    的头像 发表于 09-18 11:11 372次阅读
    如何使用合宙的DTU+业务云平台,<b class='flag-5'>做一个</b>温湿度传感器数据采集项目?

    何用TLC2272C做一个耳机的功放?

    需要用TLC2272C做一个耳机的功放,请提供下典型应用的例子,谢谢
    发表于 09-06 06:37

    何用OPA615做一个脉冲信号的峰值保持电路?

    求助 ,想用OPA615做一个脉冲信号的峰值保持电路 有没有电路图什么的或者相关的资料
    发表于 08-27 07:50

    利用Matlab函数实现深度学习算法

    Matlab中实现深度学习算法是复杂但强大的过程,可以应用于各种领域,如图像识别、自然语言处理、时间序列预测等。这里,我将概述
    的头像 发表于 07-14 14:21 1929次阅读

    预训练和迁移学习的区别和联系

    预训练和迁移学习是深度学习和机器学习领域中的两重要概念,它们在提高模型性能、减少训练时间和降低对数据量的需求方面发挥着关键作用。本文将从定
    的头像 发表于 07-11 10:12 847次阅读

    迁移学习的基本概念和实现方法

    迁移学习(Transfer Learning)是机器学习领域中的重要概念,其核心思想是利用在
    的头像 发表于 07-04 17:30 1373次阅读

    MATLAB如何使用训练好的网络

    引言 在本文中,我们将探讨如何在MATLAB中使用训练好的神经网络。神经网络是种强大的机器学习技术,广泛应用于图像识别、自然语言处理、预测建模等领域。MATLAB提供了丰富的工具箱,
    的头像 发表于 07-03 10:06 1028次阅读

    最近正在做一个逆变器,老板让我用DSP做,各位大佬有没有开源的代码学习下?

    最近正在做一个逆变器,老板让我用DSP做,各位大佬有没有开源的代码学习下?
    发表于 02-04 14:59

    鸿蒙OS 跨设备迁移

    的 Page 请求迁移。 HarmonyOS 处理迁移任务,并回调设备 A 上 Page 的保存数据方法,用于保存迁移必须的数据。 HarmonyOS 在设备 B 上启动同一个 Pag
    的头像 发表于 01-31 15:47 1106次阅读

    功德+1,用小安派-Eyes-S1做一个电子木鱼

    2024积德累功,心想事成!接下来 看看如何用小安派-Eyes-S1做一个电子木鱼 。 01、GUI-Guider 页面设计 先新建工程。 直接进入 UI 设计界面,这里用到了两
    的头像 发表于 01-16 14:33 692次阅读
    功德+1,用小安派-Eyes-S1<b class='flag-5'>做一个</b>电子木鱼

    何用小安派-Eyes-S1做一个电子木鱼?

    2024年的第篇教程来了,本篇学习如何添加LVGL事件,并制作完成电子木鱼(小美苦苦哀求,我略微出手而已)。祝大家2024积德累功,心想事成!接下来看看如
    的头像 发表于 01-13 15:18 971次阅读
    如<b class='flag-5'>何用</b>小安派-Eyes-S1<b class='flag-5'>做一个</b>电子木鱼?

    分钟,自动完成Redis数据迁移

    NineData提供了高效、安全的Redis不停机数据迁移方案。与传统迁移方案相比,NineData具备简单易用、强劲性能和高可靠性的优势。通过优化核心技术,NineData的迁移性能达到了16万
    的头像 发表于 01-08 11:34 401次阅读
    <b class='flag-5'>一</b>分钟,自动完成Redis数据<b class='flag-5'>迁移</b>

    Docker部署迁移实战

    由于公司内部机器要做迁移,原系统机器部署在阿里云,要向亚马逊云迁移,由于之前的服务实在windows远程机器部署,并且有些项目因为打包问题,需要远程机器的IDEA做启停控制,本次准备先解决相关打包问题,然后将服务通过镜像方式部署,服务部署后,性能相比之前更快了,下面是相关
    的头像 发表于 12-12 14:22 929次阅读
    Docker部署<b class='flag-5'>迁移</b><b class='flag-5'>实战</b>

    何用BUCK电路简单实现可靠的负电源?

    何用BUCK电路简单实现可靠的负电源?
    的头像 发表于 12-05 15:12 764次阅读
    如<b class='flag-5'>何用</b>BUCK电路简单实现<b class='flag-5'>一</b><b class='flag-5'>个</b>可靠的负电源?