图像缩略图

深度学习:迁移学习在10行MATLAB代码

版本1.0.0.0(2.32 KB)由 MathWorks深度学习工具箱团队
使用迁移学习训练一个深度神经网络来分类5种不同类型的食物。
4.8
12级

60下载

更新2017年2月24日

查看许可证

编辑注意:这个文件被选为MATLAB中心推荐商品

学习如何在MATLAB中使用迁移学习来重新训练由专家为您自己的数据或任务创建的深度学习网络。
本演示将教您如何使用转移学习重新训练AlexNet,这是一种预训练的深度卷积神经网络(CNN或ConvNet),用于识别热狗、杯形蛋糕和苹果派等零食。
您可以在这里下载AlexNet支持包:金宝app
//www.tatmou.com/matlabcentral/fileexchange/59133-neural-network-toolbox-tm--model-for-alexnet-network
你可在此下载网路摄影机支援包:金宝app
//www.tatmou.com/matlabcentral/fileexchange/45182-matlab-金宝appsupport-package-for-usb-webcams

引用作为

MathWorks的深度学习工具箱小组(2021)。深度学习:迁移学习在10行MATLAB代码(//www.tatmou.com/matlabcentral/fileexchange/61639-deep-learning-transfer-learning-in-10-lines-of-matlab-code),MATLAB中央文件交换。检索

意见及评分(40

徐光

Fatih Elibol

嘿!如何使用“classifyVideo”功能?因为我运行matlab cod,我有错误“未识别的函数或变量'classifyVideo'。".请帮助我。电子邮件:fatihelbl96@gmail.com

马库斯·菲舍尔

你能不能也给我发一些图片(测试数据集),这样我就可以重现这个例子?我的电子邮件地址是markus。fischer89@gmail.com. 非常感谢。

阿里达尔

有人能告诉我如何在这个例子中使用"classifyVideo"功能吗?就像在最后展示的那样"https://www.youtube.com/watch?v=NQjoaptSEoo"录像。

梁乃仁

我能在10行MATLAB代码中训练googlenet网络迁移学习吗?

Qinze苏

何塞·埃拉索

请我需要的图像,能够开发的例子。非常感谢你,我的电子邮件是kmilo0717@hotmail.com

赫伦托马斯·杜泽

Mudasir JAMIL

你好,我在一个大数据集(大约80000张图片)上使用不同的迁移学习技术,如Resnet和Densenet。我的系统很好,32gb内存,gtx 1660ti和i7 9750h,但它需要15-18个小时来完成5个纪元。迁移学习花这么多时间是正常的吗?“Alexnet”在30分钟内完成相同数据集的模拟

伊曼yazdansepas

你好
在哪里可以下载5类食品数据集?

谢谢你!
伊曼

亚瓦尔·雷赫曼

萨尔玛哈桑

如果我有2类不相等尺寸(classe_1 = 50)和(classe_2 = 60)
是有必要确定在一个类别的图像的最小量
例如
台= countEachLabel (allimages);
minSetCount = min(台{:2});
allimages = splitEachLabel(allimages, minSetCount);
countEachLabel (allimages)

Shounak Mitra

嗨,斯里尼瓦斯,

使用
网= alexnet;
sz=净层(1).InputSize
我=(1:深圳(1),1:深圳(2),1:深圳(3));

并让我们知道,如果它仍然无法正常工作。

如果您需要更多的帮助,请参考以下文档和示例。//www.tatmou.com/help/deeplearning/ref/alexnet.html

斯萨提亚

使用trainNetwork误差(线154)
意外的图像尺寸:所有图片必须具有相同的大小。

迁移学习中的错误(第17行)
我的网= trainNetwork(trainingImages,层,OPTS);

原因:
使用nnet.internal.cnn.MiniBatchDatastoreDispatcher>iCellTo4DArray(第386行)时出错
意外的图像尺寸:所有图片必须具有相同的大小。
这是我的错误,即使所有的图像转换成227个* 227像素我收到此错误后一两件事是我用了3套不同用不同的节数的图像

太阳探测器

那野博史

妮基支

大家好。
我想知道是否有人能帮我处理这件事。
我为我的照片训练了Alexnet,我给它随机的图像,它可以检测到它们。
现在,我想用一段视频来测试一下。我应该如何修改代码以提供视频作为测试?看看它在视频中是如何工作的。我不想用相机,我会用拍摄的视频。请随时与我联系。
我的电子邮件地址:dorsa_dorsa@hotmail.com
我的skype id: dorsa_dorsa@hotmail.com

文丽待办事项

@Alaa,我写了自己的classifyVideo。M文件,就可以了

函数I=classifyVideo(myNet)

cam=网络摄像头;

虽然是真的
图片= cam.snapshot;
图片= imresize(图片,[227,227]);

标签=分类(myNet,图片);
图像(图片);
标题(字符(标签));
现在抽;

结尾
结尾

阿拉

有人帮我找到classifyVideo.m文件吗

阿拉

你好
干得好,但我需要分类视频。m文件?
twelvemessages@gmail.com

ridvan奥兹德米尔

谢谢你的精彩视频,但我有个问题。
我们可以使用16层AlexNet而不是它所有的层吗?
如果可以,我们怎么做呢?你能帮我一下吗?
ridvanozdemir01@gmail.com

Frank-Michael Schleif

您可以使用以下脚本(在linux下-在windows中对文件操作稍微进行调整)
转换文件,例如从caltech:http://www.vision.caltech.edu/Image_Datasets/Caltech101/101_ObjectCategories.tar.gz

%至是对myImages的顶部的地方(与相应的图像的类作为子文件夹)
[status,res] = system('查找。* . jpg - name ');%选择图像
resCell=regexp(res,char(10),'split');%用于处理换行符
resCell = resCell (1: end-1);跳过空条目
for sFile = resCell . txt
我= imread (sFile {1});
如果(numel(大小(I))== 3)%除去非RGB图像
I=imresize(I[227227]);%重新缩放为alexnet格式
imwrite(我sFile {1});
其他的
sCommand=sprintf('rm%s',sFile{1});
系统(sCommand);
结尾
结尾

塔哈汗

先生,你做惊人的工作,但我有问题,训练速度的太多慢?并采取大量的时间,任何一个可以告诉我怎么过提高我的训练速度?

Zoran Djordjevic

为什么不提供图像。如果一个人需要花费数小时准备数据,那么这个简短的例子有什么意义呢?这只是市场营销。

法赫德阿尔泰亚尔

我已经做了我的治疗和测试的ACC,但我怎么能打开网页来确定我训练plz帮助尽快的对象

帕普·默蒂

您需要提供的文件夹和图像此程序运行,这样我们也可以尝试进行训练和学习。反正是有得到这些文件夹和图像

丘纳拉

%%负载训练图像
%为了让imageDataStore将文件夹名称解析为类别标签,
%你将不得不图像类别存储在相应的子文件夹。
allImages=imageDatastore('C:\Users\rcham\Documents\seniorproj2\pics','IncludeSubfolders',true,'LabelSource','foldernames');

%%将数据拆分为训练集和测试集
[trainingImages,testImages] = splitEachLabel(allImages,0.8, '随机化');

%%加载预训练网络(AlexNet)
AlexNet是一个经过1000个对象类别训练的预训练网络。
% AlexNet作为一个支持包在FileExchang金宝appe上可用。
亚历= alexnet;

%%回顾网络架构
layers=alex.layers

%%修改前的培训网络
% AlexNet被训练识别1000个类,我们需要修改它
%承认仅有5类。
层(23)=fullyConnectedLayer(4);%根据类的#更改此值
层(25)= classificationLayer

%%进行迁移学习
对于迁移学习,我们希望稍微改变网络的权重。如何
在训练过程中,网络的变化很大程度上是由学习控制的
%的利率。
opts=培训选项('sgdm','InitialLearnRate',0.001,。。。
“MaxEpochs”,20,“MiniBatchSize”,64);

%%设置自定义读功能
%关于imageDataStore的一个伟大的事情是它允许你指定一个
%“自定义”读取函数,在这种情况下,它只是调整输入的大小
%图像227x227像素这是什么AlexNet期待。你可以这样做
指定要读取的代码的函数的函数句柄
%预处理图像。

trainingImages.ReadFcn = @readFunctionTrain;

%%培训网络
%此过程在桌面图形处理器上通常需要5-20分钟。
我的网= trainNetwork(trainingImages,层,OPTS);

%%测试网络性能
%现在让我们来测试我们的新的“小吃识别器”在测试组的性能。
testImages。ReadFcn = @readFunctionTrain;
predictedLabels =分类(myNet, testestimages);
精度=平均值(predictedLabels == testImages.Labels)

这就是我得到的。我所做的唯一改变就是给出了包含图像子文件夹的文件夹文件的完整路径

丘纳拉

有人能帮我理解这个错误吗?使用matlab.io.datastore错误。ImageDatastore / subsasgn(第274行)
功能readFunctionTrain不存在。

Untitled20错误(第38行)
trainingImages.ReadFcn = @readFunctionTrain

谢谢

第六组

有没有一种方法,你可以张贴你如何改变位置的亚历克斯网挑选的图像?当分成培训和测试时,这些文件夹应该如何分类?

法尔赞·马吉德·努里

得到这个答案和错误。。
任何人都可以帮忙吗?
---------------------------

带层的25x1层阵列:

1“数据”图像输入227x227x3图像与“zerocenter”正常化
2 'conv1' Convolution 96 11x11x3卷积与stride[4 4]和填充[0 0 0]
3’ReLU 1’ReLU ReLU
4 'norm1'交叉通道归一化,每个元素有5个通道
5'池1'最大池3x3带跨步[2]和填充[0]的最大池
6“conv2”卷积256 5x5x48带跨步[1]和填充[2]的卷积
7 ' ReLU ' ReLU
8“norm2”跨通道标准化跨通道标准化,每个元素5个通道
9 'pool2' Max Pooling 3x3 Max Pooling with stride [2 2] and padding [0 0 0]
10 'conv3' 卷积384个3x3x256卷积步幅[1 1]和填充[1 1 1 1]
11 'relu3' RELU RELU
12“conv4”卷积384 3x3x192带跨步[1]和填充[1]的卷积
13 'relu4' ReLU ReLU
14‘conv5’卷积256 3x3x192卷积,带跨步[1]和填充[1]
15 'relu5' RELU RELU
16 'pool5' 最大池3x3的最大蓄留与步幅[2 2]和填充[0 0 0 0]
17 'fc6'全连接4096全连接层
18'ReLU 6'ReLU ReLU
19 'drop6' 降50%漏失
20 'fc7'全连接4096全连接层
21'ReLU 7'ReLU ReLU
22 'drop7' 降50%漏失
23“完全连接5完全连接层
24 'prob' Softmax Softmax
25”分类输出交叉排列
单CPU上的培训。
初始化图像规格化。
| ========================================================================================= |
|大纪元|迭代|已用时间|小批量|小批量|基础教育|
|||(秒)|损失|精度|利率|
| ========================================================================================= |
|1 |1 |21.41 |2.1046 |12.50%|0.0010 |
| 20 | 20 | 622.74 | 0.0003 | 100.00% | 0.0010 |
| ========================================================================================= |
使用matlab.io.datastore错误。ImageDatastore / subsasgn(第274行)
预期ReadSize为值>= 1的标量。

在net.internal.cnn. imagedatastoreminibatchdatasource /set.MiniBatchSize错误(行110)
self.imds.ReadSize = BATCHSIZE;

nnet.internal.cnn.ImageDatastoreMiniBatchDatasource中出错(第37行)
自我。MiniBatchSize = MiniBatchSize;

误差在nnet.internal.cnn.DataDispatcherFactory> iCreateImageDatastoreMiniBatchDatasource(线118)
ds=nnet.internal.cnn.ImageDatastoreMiniBatchDatasource(输入,miniBatchSize);

nnet.internal.cnn.DataDispatcherFactory.createDataDispatcher中出错(第57行)
datasource=iCreateImageDatastoreMiniBatchDatasource(输入,miniBatchSize);

SeriesNetwork> idatdispatcher错误(第1108行)
调度= nnet.internal.cnn.DataDispatcherFactory.createDataDispatcher(...

SeriesNetwork/predict错误(第328行)
调度= iDataDispatcher(数据,miniBatchSize,精度,...

序列网络/分类错误(第559行)
分数=this.predict(X,varargin{:});

TransferLearningVideo错误(第20行)
predictedLabels = classify(myNet, testestimages)

jy w

jy w

约西亚Laivins

实际上,你可以发布与5倍不同的食物文件夹?我真的不希望有手动下载和调整食品的1000个图像,我看见你从字面上有图像的文件夹。此外,我想有类似的结果给你,所以让您的图片可以让这个教程更好。你能张贴?

纳斯塔兰

我有这些错误我该如何解决?请你帮助我好吗?

使用trainNetwork>IAssertHattTrainingDatahasValidSizeForTraining(第157行)时出错
训练图像大小为480x640x3,但输入层期望图像大小为227x227x3。

列车网络错误(第89行)
IAsserthattTrainingDatahasValidSizeForTraining(内部层{1},调度程序);

>>

陶福宇

我需要多少图像训练每个类别?

曼尼什萨胡

你犯了什么样的错误?
我正在使用GT740m,它的工作很好。

穆罕默德·拉菲克

我对着GPU_LAUNCH_FAILED
使用NVidia GT 710,启用CUDA,计算能力3.5
NN和并行工具箱安装和独立工作。
图片为227x227 JPG格式,分为3类。

请在这方面帮助我。

盖塔诺·罗贾

嗨,我需要睁开/闭上眼睛来检测人脸。这个算法能把它分类吗?

西亚马尔·帕特尔

运行此示例需要5种不同类型食物的图像。查看此视频了解更多详细信息:
//www.tatmou.com/videos/deep-learning-with-matlab-transfer-learning-in-10-lines-of-matlab-code-1487714838381.html

伊云Pazicky

我有一个错误:最后一层的输出大小(5)与类数(1)不匹配。
你能帮助我吗 ?

MATLAB版本兼容性
使用R2016b创建
与任何版本兼容
平台兼容性
窗户 马科斯 Linux.

社区寻宝

查找MATLAB中心的宝藏,发现社区如何帮助您!

开始狩猎!