MATLAB Answers

0

DICOM imageとDeep Learning

Asked by masakazu sugino on 9 Jul 2019
Latest activity Commented on by masakazu sugino on 11 Jul 2019
DICOM画像をdeeplearningで学習させているときに、生じる問題があるのでしょうか。
png画像に変換したほうがいいのでしょうか。
以下は自分で作成したdeep learningの分類に関するスクリプトです。
currentdirectory = pwd;
imds = imageDatastore(fullfile(currentdirectory, categories),'IncludeSubfolders',true,'FileExtensions','.dcm','LabelSource', 'foldernames','ReadFcn',@dicomread);
% 検証枚数を増やす
numTrainFiles = 1064;
[imdsTrain,imdsValidation] = splitEachLabel(imds,numTrainFiles,'randomize');
% 分類器の作成
layers = [
imageInputLayer([30 30 1])
convolution2dLayer(3,8,'Padding','same')
batchNormalizationLayer
reluLayer
maxPooling2dLayer(2,'Stride',1)
convolution2dLayer(3,16,'Padding','same')
batchNormalizationLayer
reluLayer
maxPooling2dLayer(2,'Stride',1)
convolution2dLayer(3,32,'Padding','same')
batchNormalizationLayer
reluLayer
dropoutLayer(0.2)
fullyConnectedLayer(9)
softmaxLayer
classificationLayer];
options = trainingOptions('sgdm', ...
'MiniBatchSize',128, ...
'InitialLearnRate',0.001, ...
'MaxEpochs',30, ...
'Shuffle','every-epoch', ...
'ValidationData',imdsValidation, ...
'ValidationFrequency',50, ...
'Verbose',false, ...
'Plots','training-progress');
net17= trainNetwork(imdsTrain,layers,options);
YPred = classify(net17,imdsValidation);
YValidation = imdsValidation.Labels;
accuracy = sum(YPred == YValidation)/numel(YValidation);
誤り等あったら教えていただきたいです。

  0 Comments

Sign in to comment.

2 Answers

Kazuya
Answer by Kazuya
on 9 Jul 2019
 Accepted Answer

コードを見るだけでは何とも分かりませんが、DICOM であることによる問題は特になさそうです。
こちらも参考になりましたら:

  0 Comments

Sign in to comment.


Answer by masakazu sugino on 9 Jul 2019

image inputlayerdeでDICOMデータを0中心で画像データを作り変えているイメージを私自身持っているのですが、
再度同じ質問になるかもしれないのですが、負のデータであっても、deep learningはCNN内で学習されているのでしょうか。

  2 Comments

Kazuya
on 10 Jul 2019
特に負であること自体が問題になることはないとは考えていますが、何か問題ありそうですか?実行した結果その問題を示唆するような現象が起こっているとか・・?
CNNを用いた分類問題に関してはうまくいっているのですが、
すべて負の値を含む画像をCNNの入力画像とすることは本来うまくいかないはずといわれまして、CNNの入力する画像の値やサイズに制限があるのか現在勉強中です。

Sign in to comment.