AlexNet网络对已打好标签的四个文件夹中的图片进行分类并对卷积操作提取到的特征可视化具体matlab
时间: 2024-05-03 22:22:31 浏览: 13
代码实现如下:
首先,导入需要用到的工具包和数据集:
```
% 导入工具包
addpath('./matconvnet-1.0-beta25/matlab');
addpath('./vlfeat-0.9.21/toolbox');
vl_setup;
% 导入数据集
imds = imageDatastore('./data', 'IncludeSubfolders',true, 'LabelSource','foldernames');
[imdsTrain, imdsValidation] = splitEachLabel(imds, 0.7, 'randomized');
```
然后,定义AlexNet网络结构:
```
% 定义AlexNet网络结构
net = alexnet;
```
接着,对训练集数据进行预处理:
```
% 对训练集数据进行预处理
inputSize = net.Layers(1).InputSize;
augmentedTraining = augmentedImageDatastore(inputSize(1:2), imdsTrain);
augmentedValidation = augmentedImageDatastore(inputSize(1:2), imdsValidation);
```
然后,对网络进行微调:
```
% 对网络进行微调
layersTransfer = net.Layers(1:end-3);
numClasses = numel(categories(imdsTrain.Labels));
layers = [
layersTransfer
fullyConnectedLayer(numClasses,'WeightLearnRateFactor',20,'BiasLearnRateFactor',20)
softmaxLayer
classificationLayer];
options = trainingOptions('sgdm', ...
'MiniBatchSize',10, ...
'MaxEpochs',6, ...
'InitialLearnRate',1e-4, ...
'Shuffle','every-epoch', ...
'ValidationData',augmentedValidation, ...
'ValidationFrequency',3, ...
'Verbose',false, ...
'Plots','training-progress');
netTransfer = trainNetwork(augmentedTraining,layers,options);
```
接着,对测试集数据进行分类:
```
% 对测试集数据进行分类
imdsTest = imageDatastore('./test', 'IncludeSubfolders',true, 'LabelSource','foldernames');
augmentedTest = augmentedImageDatastore(inputSize(1:2), imdsTest);
predictedLabels = classify(netTransfer,augmentedTest);
```
最后,对卷积操作提取到的特征进行可视化:
```
% 对卷积操作提取到的特征进行可视化
I = imread('./test/1/Babyface_0001.jpg');
figure;
imshow(I);
act1 = activations(netTransfer,I,'conv1');
sz = size(act1);
act1 = reshape(act1,[sz(1) sz(2) 1 sz(3)]);
I = imtile(mat2gray(act1),'GridSize',[8 12]);
figure;
imshow(I);
act2 = activations(netTransfer,I,'conv2');
sz = size(act2);
act2 = reshape(act2,[sz(1) sz(2) 1 sz(3)]);
I = imtile(mat2gray(act2),'GridSize',[8 12]);
figure;
imshow(I);
act3 = activations(netTransfer,I,'conv3');
sz = size(act3);
act3 = reshape(act3,[sz(1) sz(2) 1 sz(3)]);
I = imtile(mat2gray(act3),'GridSize',[8 12]);
figure;
imshow(I);
act4 = activations(netTransfer,I,'conv4');
sz = size(act4);
act4 = reshape(act4,[sz(1) sz(2) 1 sz(3)]);
I = imtile(mat2gray(act4),'GridSize',[8 12]);
figure;
imshow(I);
act5 = activations(netTransfer,I,'conv5');
sz = size(act5);
act5 = reshape(act5,[sz(1) sz(2) 1 sz(3)]);
I = imtile(mat2gray(act5),'GridSize',[8 12]);
figure;
imshow(I);
```
以上代码实现了AlexNet网络对已打好标签的四个文件夹中的图片进行分类,并对卷积操作提取到的特征进行可视化。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![7z](https://img-home.csdnimg.cn/images/20210720083312.png)