Why I cannot use Alexnet on my images dataset
조회 수: 2 (최근 30일)
이전 댓글 표시
clc;
clear;
images = imageDatastore('C:\Users\HIBA\Documents\Cancellable Biometrics\Datasets\NIST Faces 1','IncludeSubfolders',true,'LabelSource','foldernames');
[trainingImages,testingImages] = splitEachLabel(images,0.7,'randomized');
net = alexnet;
net.Layers;
layer = 'fc7';
trainingFeatures = activations(net,trainingImages,layer,'outputAs','channels');
testFeatures = activations(net,testingImages,layer);
댓글 수: 0
답변 (3개)
Walter Roberson
2018년 1월 28일
alexnet needs R2016b or later, and requires Neural Network toolbox and requires Neural Network Toolbox Model for AlexNet Network support package
댓글 수: 5
Walter Roberson
2018년 1월 28일
편집: Walter Roberson
2018년 1월 29일
One of your images is a different size than the others.
The below code assumes you are using a newer release of MATLAB, which you indicate you are.
projectdir = 'C:\Users\HIBA\Documents\Cancellable Biometrics\Datasets\NIST Faces 1';
dinfo = dir(fullfile(projectdir, '**', '*.*'));
dinfo([dinfo.isdir]) = [];
filenames = fullfile({dinfo.folder}, {dinfo.name});
numfile = length(filenames);
info_struct = struct('filename', '', 'Width', nan, 'Height', nan, 'ColorType', '', 'Message', 'not a valid image file');
image_info(numfile) = info_struct;
info_valid = false(numfile, 1);
for idx = 1 : numfile
thisfile = filenames{idx};
this_info = info_struct;
this_info.filename = thisfile;
try
lastwarn('');
info = imfinfo(thisfile);
msgstr = lastwarn();
if ~isempty(msgstr)
this_info.Message = msgstr;
info_valid(idx) = true;
elseif length(info) == 1
this_info.Message = '';
info_valid(idx) = true;
elseif length(info) > 1
this_info.Message = 'image file with multiple images';
info = info(1);
info_valid(idx) = true;
end
if length(info) == 1
this_info.Width = info.Width;
this_info.Height = info.Height;
this_info.ColorType = info.ColorType;
end
catch ME
end
image_info(idx) = this_info;
end
image_info = image_info(info_valid);
After this, image_info will be a struct with information about all of the image files under the given directory. You can examine, for example
unique([image_info.Width])
unique([image_info.Height])
Sometimes imfinfo produces warnings as it goes: the warnings will be stored in the Message field of the structure. Some image files store multiple images, and in some image file formats those are not guaranteed to be the same size. Only the size information about the first image is returned by the above code, but in such case the Message field is set to 'image file with multiple images'
Rabia Afzal
2018년 2월 4일
i'm also facing the same issue. Can anyone help me in my code?
댓글 수: 2
Walter Roberson
2018년 2월 6일
Start with the code I posted in https://www.mathworks.com/matlabcentral/answers/379353-why-i-cannot-use-alexnet-on-my-images-dataset#comment_529351 but replace projectdir with a character vector that is the top level directory under which all of the images of interest are stored. Run the code and examine the returned information, such as unique([image_info.Width]) to determine what widths actually occur in your files.
Rasaq Kotun
2019년 2월 12일
i used this and changed the dimensions to 227 x 277 and worked perfectsly
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Image Data Workflows에 대해 자세히 알아보기
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!