perfmance: "imageDatastore" low performance when specifying multiple file names directly

3 vues (au cours des 30 derniers jours)
Very low performance when specifying multiple image full path names for a given imageDatastore,see benchmark below.
env: matlab 2022b, win10
imgsDir = "someImgDir";
imgNames = imgsDir+"/"+string(0:2687)+".jpg";% The more images you have, the lower the performance
t1 = tic;
for i = 1:10
imds = imageDatastore(imgNames); % low
end
t = toc(t1)
t2 = tic;
for i = 1:10
imds = imageDatastore(imgsDir); % high
end
t = toc(t2)
t =
14.0975
t =
0.5759
Initially I wanted to sort the files in the ImageDatastore by Arabic arrays, but found the above to be a real performance problem, any better suggestions?

Réponse acceptée

Rahul
Rahul le 5 Mai 2025
I understand that reading images while specifying the image names is causing performance issues as compared to reading directly from a folder. However, reading from a folder would limit the ability to sort it before reading.
Here are a few suggestions which could improve the performance of your use-case:
  • Sort the images after reading them. This can be done by extracting the filenames and then sorting them. Here is an example:
imds = imageDatastore(imgsDir);
% Extract file names and sort numerically
[~, name, ext] = cellfun(@fileparts, imds.Files, 'UniformOutput', false);
nums = str2double(name);
[~, idx] = sort(nums);
% Reorder imds.Files
imds.Files = imds.Files(idx);
  • Read images using Batching or Lazy-Loading techniques.
The following MATLAB Answer might also be useful:
The following MathWorks documentations can be referred:
Thanks.

Plus de réponses (0)

Catégories

En savoir plus sur Computer Vision with Simulink dans Help Center et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by