主要内容

Entrenar redes de深度学习para classiar nuevas imágenes

Este ejemplo muestra cómo usar la transferencia del aprendizaje para volver a renrenar una red的神经元卷积对分类的新连接imágenes。

Las redes de clasificación de imágenes preentrenadas se han entrenado con más de un millón de imágenes y pueden clasificarlas en 1000 categorías de objetos, como teclado, taza de café, lápiz y muchos animal。Las redes han aprendido代表ricas en características para una amplia gama de imágenes。La red toma una imagen como entrada y,一个continuación,是一种礼节,一种目标,一种目标,一种可能,一种可能,一种目标categorías。

深度学习的知识转移。红色的,红色的,前面的,前面的,前面的,中间的,后面的,新的。这是一种红色的,转移的东西,我的爱,我的爱,我的爱,más rápido y fácil我的爱,我的爱,我的爱,我的爱。形式上的转移rápida las características我的新想法imágenes我的新想法。

Cargar拿督

新货物的解体imágenes como un almacén de datos de imágenesEste pequeño conjunto de datos contene solo 75 imágenes。分开,我们的数据,我们的数据,我们的数据,我们的数据,validación。用70%的钱imágenes,用30%的钱validación。

解压缩(“MerchData.zip”);imds = imageDatastore(“MerchData”...“IncludeSubfolders”,真的,...“LabelSource”“foldernames”);[imdsTrain,imdsValidation] = splitEachLabel(imds,0.7);

Cargar una red preentrenada

Cargue una red GoogLeNet preentrenada。Si no se ha installalado el paquete de soporte深度学习工具箱™模型为GoogLeNet网络el software proporciona UN enlace de descarga。

Para probar otra red preentrenada, abra este ejemplo en MATLAB®y seleccione una不同点。Por ejemplo, puede probarsqueezenet, una red que es incluso más rápida quegooglenet.Puede llevar a cabo el ejemplo con más redes preentrenadas。我的顾问,我的职责在此Cargar redes preentrenadas

网=googlenet;

UtiliceanalyzeNetworkPara obtener una visualización相互作用的la建筑和la la红色的información delallada清醒的SUS capas。

analyzeNetwork(净)

我的启蒙元素红的,红的,红的,红的,红的。Para una red GoogLeNet, esta capa requiere imágenes de entrada de un tamaño de 224 por 224 por 3, donde 3 es el número de canal de color。Otras redes pueden requerir imágenes de entrada con different tamaños。Por ejemplo, la red例外要求imágenes de un tamaño de 299 Por 299 Por 3。

net.Layers (1)
名称:'data' InputSize:[224 224 3]超参数DataAugmentation: 'none'归一化:'zerocenter' NormalizationDimension: 'auto'意思:[224×224×3 single]
inputSize = net.Layers(1).InputSize;

最后一道菜

红外头的红外头的帽子características la imagen que la última la capa de aprendizaje y la capa de clasificación最后的一个分类la imagen de entrada。Estas dos capas,“loss3-classifier”y“输出”en GoogLeNet, contenen información清醒的cómo组合las características que la red extrae en probabilidades de clase, un valor de pérdida y礼节预测。一个永恒的红色的永恒的永恒的永恒的永恒的永恒的永恒的永恒的永恒的永恒的永恒的永恒的永恒的永恒的永恒。

红彤彤的花团锦团gráfica卡帕斯。

lgraph = layerGraph(net);

布斯克·洛斯·诺布尔斯·多斯·卡帕斯·索斯特尔斯。Puede hacerlo manualmente o Puede utizar la función de ayudafindLayersToReplacePara encontrar estas capas automáticamente。

[learnableLayer,classLayer] = findLayersToReplace(lgraph);[learnableLayer, classLayer]
ans = 1×2 Layer array with layers: 1 'loss3-classifier' Fully Connected 1000 full Connected Layer 2 'output' Classification output crossentropyex with 'tench'和999个其他类

En la mayoría de las redes, la última capa con pesos que se pueden aprender es una capa total of conectada。Sustitúyala我们的新纪元纪元的新纪元纪元和我们的新纪元纪元número我们的新纪元和我们的新纪元número我们的新纪元和我们的新纪元和我们的新纪元。En algunas redes, como SqueezeNet, la última这是一件令人毛骨悚然的事。爱你的人,sustitúyala在新生活中生活的人número过滤嘴的人número阶级。Para aprender más rápido我的新命运,我的命运,我的命运,我的命运,我的命运。

numClasses = numel(categories(imdsTrain.Labels));如果isa (learnableLayer“nnet.cnn.layer.FullyConnectedLayer”newLearnableLayer = fulllyconnectedlayer (numClasses,...“名字”“new_fc”...“WeightLearnRateFactor”10...“BiasLearnRateFactor”10);elseifisa (learnableLayer“nnet.cnn.layer.Convolution2DLayer”) newLearnableLayer = convolution2dLayer(1,numClasses,...“名字”“new_conv”...“WeightLearnRateFactor”10...“BiasLearnRateFactor”10);结束lgraph = replaceLayer(lgraph,learnableLayer.Name,newLearnableLayer);

La capa de clasificación特别的,las classes de salida de La red。劫后劫后clasificación我们的新规矩。trainNetwork建立automáticamente的阶级,salida, la capa和,el,纪念,和,铭记。

newClassLayer = classificationLayer(“名字”“new_classoutput”);lgraph = replaceLayer(lgraph,classLayer.Name,newClassLayer);

新队长están新队长,代表新队长gráfica新队长amplíe新队长últimas红队长。

图(“单位”“归一化”“位置”,[0.3 0.3 0.4 0.4]);情节(lgraph) ylim ([0, 10])

祝你好运

La red está ahora lista parver a entrenarla con el nuevo conjunto de imágenes。好了,准备好了准备好了准备好了准备好了准备好了准备好了,准备好了。Durante el entrenamiento,trainNetwork没有实现的los parámetros de las capas congelada。我不知道有什么必要,有多少变化,有多少变化,有多少变化,congelación有多少变化,有多少变化,有多少变化,有多少变化。我的新面孔和新面孔pequeño,我的红面孔和新面孔también我的新面孔和新面孔。

特别的帽子和锥形的帽子gráfica帽子和选择的帽子和desea celela。在GoogLeNet上,我要喝10杯红酒。Utilice la función de ayudafreezeWeightsPara建立者在世界的尽头índices在世界的尽头。Utilice la función de ayudacreateLgraphUsingConnections这是一段结尾曲,唱着唱着原唱。新时代gráfica我们的新时代,我们的新时代,我们的新时代,我们的新时代,我们的新时代。

layers = lgraph.Layers;connections = logg . connections;layers(1:10) = freezeWeights(layers(1:10));lgraph = createLgraphUsingConnections(层,连接);

红色万岁

La red requiere imágenes de entrada de un tamaño de 224 por 224 por 3, pero las imágenes del almacén de datos de imágenes tienen dientent tamaños。利用联合国almacén de datos de imágenes aumentado para cambiar automáticamente el tamaño de las imágenes de entrenamiento。特别的工作,以环境为中心的城市和实现的方式imágenes在环境为中心的城市:voltear可变环境的城市imágenes在环境为中心的城市有一个大的,有一个垂直的,有一个可变环境的,有30 píxeles在水平的,有10%的垂直的。我们的记忆,我们的记忆,我们的记忆,我们的记忆,我们的记忆,imágenes我们的记忆。

pixelRange = [-30 30];scaleRange = [0.9 1.1];imageAugmenter = imageDataAugmenter(...“RandXReflection”,真的,...“RandXTranslation”pixelRange,...“RandYTranslation”pixelRange,...“RandXScale”scaleRange,...“RandYScale”, scaleRange);augimdsTrain = augmentedImageDatastore(inputSize(1:2),imdsTrain,...“DataAugmentation”, imageAugmenter);

Para cambiar el tamaño de las imágenes de validación de形式上automática sin realizar más奥芒托斯的数据,使用un almacén de数据de imágenes奥芒托斯的特别的宁纳operación附加的预处理。

augimdsValidation = augmentedImageDatastore(inputSize(1:2),imdsValidation);

特别的是。EstablezcaInitialLearnRate我的勇气pequeño我的勇气,我的意志,我的意志,我的意志,我的意志,我的意志,我的意志,我的意志,我的意志todavía我的意志,我的意志。前方之路,aumentó前方之路,前方之路última前方之路,前方之路,前方之路,前方之路。斯塔combinacion de使用de la tasa de aprendizaje da科莫resultado联合国aprendizaje快车在拉斯维加斯nueva卡帕,联合国aprendizaje mas缓慢地在拉斯维加斯卡帕媒介物y不会aprendizaje en拉卡帕前congeladas。

特别的el número de épocas que entrenar。我们能意识到转移的意义,没有必要,没有必要,没有必要。épocas。Una época这是一种完整的记忆,完整的记忆,完整的记忆。特别的tamaño del minilote y los datos de validación。calcalle la precisión de la validación una vez por época。

miniBatchSize = 10;valFrequency = floor(numel(augimdsTrain.Files)/miniBatchSize);options = trainingOptions(“个”...“MiniBatchSize”miniBatchSize,...“MaxEpochs”6...“InitialLearnRate”3的军医,...“洗牌”“every-epoch”...“ValidationData”augimdsValidation,...“ValidationFrequency”valFrequency,...“详细”假的,...“阴谋”“训练进步”);

整个红色的世界,所有的一切。形式预先决定论,trainNetworkusa GPU en caso de que esté可推卸责任。Se要求并行计算工具箱™不配置GPU兼容。Para obtener información清醒的,性情温和的,顾问GPU计算要求(并行计算工具箱).相反,trainNetwork美国una CPU。También特别的国家,我们的国家ejecución我们的国家,我们的国家“ExecutionEnvironment”trainingOptions.“我的老朋友”pequeño,“我的朋友”rápido。

net = trainNetwork(augimdsTrain,lgraph,options);

分类imágenes de validación

分类las imágenes de validación红色的阿贾斯塔达y calcalla precisión de la clasificación。

[YPred,probs] = category (net,augimdsValidation);accuracy = mean(YPred == imdsValidation.Labels)
精度= 0.9000

Visualice cuatro imágenes de validación de muestra con etiquette谓词y las概率谓词de que las imágenes tengan esas etiquette。

idx = randperm(numel(imdsValidation.Files),4);数字i = 1:4 subplot(2,2,i) i = readimage(imdsValidation,idx(i));imshow(I) label = YPred(idx(I));标题(string(标签)+”、“+ num2str(100*max(probs(idx(i),:)),3) +“%”);结束

Referencias

[1] Szegedy, Christian,刘伟,贾扬青,Pierre Sermanet, Scott Reed, Dragomir angelov, Dumitru Erhan, Vincent Vanhoucke和Andrew Rabinovich。“更深入地研究卷积。”在IEEE计算机视觉和模式识别会议论文集,第1-9页。2015.

Consulte也

|||||||||

特马relacionados