regarding label source names in data set imagedatastore
Afficher commentaires plus anciens
i am working on image classification problem .I am using dataset in which there are some parent folder.Each parent folder have some sub folders.And these subfolders contain the image data.when i use imagedatastore to load ,it takes subfolder as class
I want to take parent folder as class(all the folder in that parent folder sould be a class named as parent folder name).
how to do this .
Réponses (2)
Johanna Pingel
le 12 Fév 2019
ImageDatastore works really well if you have a parent class and 1 sub folder per class.
imageDatastore('parentfolder/','IncludeSubFolders',true','LabelSource','foldernames');
If not, you may have to do a little more processing. I'm sure there's a ton of ways to accomplish this: I would suggest getting all of your images and labels for each class into a datastore
class1 = imageDatastore({'cat1/random_folder/','cat1/'});
class1.Labels = repelem("cat1",numImages);
Do this for each class, then combine them into one super datastore
imdsFinal = imageDatastore([class1.Files; class2.Files]);
imdsFinal.Labels = [class1.Labels; class2.Labels]);
This should work and be able to customize to what you're trying to do!
9 commentaires
ghada ebrahim
le 25 Fév 2020
please i want to know what 'cat1/random_folder/' refer to?
Johanna Pingel
le 26 Fév 2020
cat1 would stand for category 1, as in: a folder with images of category1 in it. This could be any name of your folder for this problem, since this is a hypothetical answer.
random_folder refers to any subfolders which also contain images of category 1.
I believe this was the question posed on how to get all images from folders and subfolders for a category.
ghada ebrahim
le 26 Fév 2020
i get it, thank you so much
Nilu R Salim
le 4 Mar 2020
Modifié(e) : Nilu R Salim
le 4 Mar 2020
Hi,
I tried this out. But it's not working.. it repeatedly throws an error. Let me elaborate the issue that I face. I have a main folder with 80 subfolders. Each of the subfolder has 6 more folders in it. I want the labels to be "80". How is it possible?
Nilu R Salim
le 4 Mar 2020
I would really appreciate a quick reply Thanks in advance.
Nilu R Salim
le 4 Mar 2020
I would like to have it something similar to "cd .."
OJ27
le 18 Août 2020
The code worked for me except for this part
imdsFinal.Labels = [class1.Labels; class2.Labels]);
That line should be replaced with
imdsFinal.Labels = [categorical(class1.Labels); categorical(class2.Labels)]);
Otherwise, you would have a cell array containing strings rather than categorical. After you merge both imageDatastore, then you can call
categories(imdsFinal.Labels)
to check the labels in the dataset.
AYUSH ANAND SAGAR
le 27 Oct 2020
i want to display the found image's label as the output
how can i do that?
aref
le 23 Août 2022
labels= unique(trainingData.Labels);
Neslihan
le 27 Avr 2023
0 votes
Dataset = imageDatastore('Dataset', 'IncludeSubfolders', true, 'LabelSource', 'foldernames');
Catégories
En savoir plus sur Image Data Workflows dans Centre d'aide et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!