Image Regression using .mat Files and a datastore

132 ビュー (過去 30 日間)
Matthew Fall
Matthew Fall 2019 年 4 月 29 日
コメント済み: luisa di monaco 2022 年 1 月 6 日
I would like to train a CNN for image regression using a datastore. My images are stored in .mat files (not png or jpeg). This is not image-to-image regression, rather an image to single regression label problem. Is it possible to do this using a datastore, or at least some other out-of-memory approach?

採用された回答

luisa di monaco
luisa di monaco 2019 年 12 月 7 日
編集済み: luisa di monaco 2020 年 1 月 2 日
I have solved something similar.
I'm trying to train a CNN for regression. My inputs are numeric matrices of size 32x32x2 (each input includes 2 grayscale images as two channels). My outputs are numeric vectors of length 6.
500 000 is the total amount of data.
I created 500 000 .mat file for inputs in folder 'inputData' and 500 000 .mat file for target in folder 'targetData'. Each .mat file contains only 1 variable of type double called 'C'.
The size of C is 32x32x2 (if input) or 1x6 (if target).
inputData=fileDatastore(fullfile('inputData'),'ReadFcn',@load,'FileExtensions','.mat');
targetData=fileDatastore(fullfile('targetData'),'ReadFcn',@load,'FileExtensions','.mat');
inputDatat = transform(inputData,@(data) rearrange_datastore(data));
targetDatat = transform(targetData,@(data) rearrange_datastore(data));
trainData=combine(inputDatat,targetDatat);
% here I defined my network architecture
% here I defined my training options
net=trainNetwork(trainData, Layers, options);
function image = rearrange_datastore(data)
image=data.C;
image= {image};
end
  18 件のコメント
luisa di monaco
luisa di monaco 2022 年 1 月 6 日
Hi,
the creation process was part of my thesis work. Here you can download my thesis:
http://webthesis.biblio.polito.it/id/eprint/14716 . Dataset creation is described in chapter 4 (4.2, 4.3 and 4.5) .
Here you can find some Matlab code: https://github.com/lu-p/standard-PIV-image-generator
I hope this can help.

サインインしてコメントする。

その他の回答 (2 件)

Johanna Pingel
Johanna Pingel 2019 年 4 月 29 日
編集済み: Johanna Pingel 2019 年 4 月 29 日
I've used a .mat to imagedatastore conversion here:
imds = imageDatastore(ImagesDir,'FileExtensions','.mat','ReadFcn',@matRead);
function data = matRead(filename)
inp = load(filename);
f = fields(inp);
data = inp.(f{1});
  2 件のコメント
tianliang wang
tianliang wang 2021 年 4 月 28 日
Is it more convenient to use mat files as the training set for the images to vectors regression ?

サインインしてコメントする。


Lykke Kempfner
Lykke Kempfner 2019 年 8 月 16 日
I have same problem.
I have many *.mat files with data that can not fit in memory. You may consider the files as not standard images. I have the ReadFunction for the files. I wish to create a datastore (?) where each sample are associated with two single values and not a class.
Are there any solution to this issue ?
  2 件のコメント
tanfeng
tanfeng 2020 年 10 月 12 日
You could try this
tblTrain=table(X,Y)
net = trainNetwork(tblTrain,layers,options);

サインインしてコメントする。

カテゴリ

Find more on Deep Learning with Time Series and Sequence Data in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by