MATLAB × 심층 학습 × 현미적외선 분광법
10763 단어 DeepLearningCNNmatlab
소개
· 이것은 분석 장치의 측정 데이터 처리 이야기입니다.
・기기 분석의 데이터 처리를 하고 있는 분, 앞으로 할 예정의 분, 분석 업계와는 무관하게 흥미를 가져 주신 여러분에게, 참고가 되면 기쁩니다.
・여기에서의 분석 기기는 「현미 적외 분광 광도계(이하, 현미 FTIR)」. 이 계측 데이터를 MATLAB에서 심층 학습해 보면 의외로 좋은 분류 정밀도가 나왔다는 내용입니다.
(!) 제목에 있는 「현미 적외 분광법」이란, 이 현미 FTIR를 사용한 분석 수법입니다(마지막에 보충 있음)
MATLAB 환경
MATLAB R2018b(개발 당시. R2019a에서도 동작)
+Deep Learning Toolbox
+ Statistics and Machine Learning Toolbox
(+Parallel Computing Toolbox (있는 경우 처리 가속화))
이니셔티브
생각한 것 : 「심층 학습」과 「현미 적외선 분광법」의 맛있는 코도리
외모는 비슷하지만 완전히 다른 것을 구분하기 위해서 「심층 학습」과 「현미적외분광법」을 사용할 수 있으면 좋았습니다. 그래서, 우선, 이러한 장점·단점을 표에 정리해 보았습니다.
하면, 2자의 관계는 장점·단점을 상호 보완하고 있는 것처럼 보입니다. . .
거기서 양쪽의 맛있는 코도리를 해, 「RGB 화상(=가시 영역의 데이터)을 심층 학습시키도록, 적외 영역의 현미 FTIR의 계측 데이터를 심층 학습」할 수 없을까 생각했습니다.
구체적으로 시도한 것
시판의 판초코 2종류의 계측 데이터를, 심층 학습으로 분류할 수 있을까 시험해 보았습니다.
사진은 장치에 바르기 전 판 초콜릿.
포인트
RGB 이미지는 R, G, B의 3 채널.
이번에는 적외선 파장 영역, 236파수의 데이터. 이것을 236 채널의 이미지 데이터로 파악해, 심층 학습에.
실제로는 입구의 사이즈를 3에서 236으로 한 만큼(↓의 코드의*********로 끼운 부분).
코드
%% イメージデータストアの読み込み
% 次の「参考にしたコード」URL参照
load imds
%% データ(ラベル)を分割
numTrainingFiles = 0.8;%学習用
numTestFiles = 0.1;%検証用(学習時)
[imdsTrain,imdsTest,imdsValid] = splitEachLabel(imds,numTrainingFiles,numTestFiles,'randomize');
%% ネットワーク構造の設定
imageSize = [16 16]; % 学習イメージ
%****************************
% inputSize = [imageSize 3]; %RGBの3チャンネル
inputSize = [imageSize 236]; %今回は236チャンネル(赤外領域236波数)
%****************************
numClasses = 2;%チョコ2種類
%% ネットワーク構造の定義
filterSize = 2; %畳み込みの大きさ
numFilters = 6; %畳み込みの数
layers = [
imageInputLayer(inputSize);
%畳み込み・正規化・ReLU・最大プールを3セット:
convolution2dLayer(filterSize,numFilters,'Padding',1,'Stride',1);
batchNormalizationLayer()
reluLayer()
maxPooling2dLayer([2 2],'stride',2)
convolution2dLayer(filterSize,numFilters,'Padding',1,'Stride',1);
batchNormalizationLayer
reluLayer()
maxPooling2dLayer([2 2],'stride',2)
convolution2dLayer(filterSize,numFilters,'Padding',1,'Stride',1);
batchNormalizationLayer
reluLayer()
maxPooling2dLayer([2 2],'stride',2)
%最後の3層
fullyConnectedLayer(numClasses);
softmaxLayer()
classificationLayer()
];
%% 学習オプションの設定
opts = trainingOptions('adam', ...
'InitialLearnRate',0.001, ...
'MaxEpochs',200, ...
'MiniBatchSize',24,...
'Plots', 'training-progress',...
'Shuffle','every-epoch',...
'ValidationData',imdsValid);
%% 学習
net = trainNetwork(imdsTrain,layers,opts);
%% 精度確認
% 未使用データ(imdsValid)を用いてnetの精度を確認
YPred = classify(net,imdsValid);
YValid = imdsValid.Labels;
%精度
accuracy = sum(YPred == YValid)/numel(YValid);
figure
plotconfusion(YValid,YPred) %混合行列表示
%% 結果の保存
saveas(gcf,'result.fig')%混合行列
save ('choco2Net','net')% 学習済みネット
참고로 한 코드
MATLAB 문서에 있었던 매우 유용한 샘플 코드. 알맞은 해설 첨부.
분류를 위한 간단한 심층 학습 네트워크 생성
결과
20회 했습니다. 90% 이상이라는 분류 정밀도가 나왔습니다.
요약
현미 FTIR의 계측 데이터를 MATLAB에서 빨리 심층 학습할 수 있었습니다. 분류 정밀도도 무사히 90% 나왔습니다.
이번은 정체를 알고 있는 초콜렛이었지만, 이것을 응용해, 어쩐지 모르는 것이 와도 「이것은 00사의 제품△△이다!」라고 특정할 수 있게 되면 좋겠다, 등 라고 생각하거나 합니다.
이상입니다. 여기까지 읽어 주셔서 감사합니다.
(보충) 현미적외선 분광법에 대하여
샘플 내의 성분 분포의 평가 등을 목적으로 폭넓은 분야에서 응용되고 있다.
(광학) 현미경으로 가시 이미지를 얻을 수 있도록 현미경 FTIR은 적외선 이미지를 얻을 수 있습니다.
※적외 스펙트럼등의 이야기는 여기에서는 자숙.
적외선 이미지
같은 파수에서의 강도 분포. 파수의 수=매수(예, 이번은 236파수이므로 236장 있다).
Reference
이 문제에 관하여(MATLAB × 심층 학습 × 현미적외선 분광법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/nHounoki/items/00c11b080c6905dd4444
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
MATLAB R2018b(개발 당시. R2019a에서도 동작)
+Deep Learning Toolbox
+ Statistics and Machine Learning Toolbox
(+Parallel Computing Toolbox (있는 경우 처리 가속화))
이니셔티브
생각한 것 : 「심층 학습」과 「현미 적외선 분광법」의 맛있는 코도리
외모는 비슷하지만 완전히 다른 것을 구분하기 위해서 「심층 학습」과 「현미적외분광법」을 사용할 수 있으면 좋았습니다. 그래서, 우선, 이러한 장점·단점을 표에 정리해 보았습니다.
하면, 2자의 관계는 장점·단점을 상호 보완하고 있는 것처럼 보입니다. . .
거기서 양쪽의 맛있는 코도리를 해, 「RGB 화상(=가시 영역의 데이터)을 심층 학습시키도록, 적외 영역의 현미 FTIR의 계측 데이터를 심층 학습」할 수 없을까 생각했습니다.
구체적으로 시도한 것
시판의 판초코 2종류의 계측 데이터를, 심층 학습으로 분류할 수 있을까 시험해 보았습니다.
사진은 장치에 바르기 전 판 초콜릿.
포인트
RGB 이미지는 R, G, B의 3 채널.
이번에는 적외선 파장 영역, 236파수의 데이터. 이것을 236 채널의 이미지 데이터로 파악해, 심층 학습에.
실제로는 입구의 사이즈를 3에서 236으로 한 만큼(↓의 코드의*********로 끼운 부분).
코드
%% イメージデータストアの読み込み
% 次の「参考にしたコード」URL参照
load imds
%% データ(ラベル)を分割
numTrainingFiles = 0.8;%学習用
numTestFiles = 0.1;%検証用(学習時)
[imdsTrain,imdsTest,imdsValid] = splitEachLabel(imds,numTrainingFiles,numTestFiles,'randomize');
%% ネットワーク構造の設定
imageSize = [16 16]; % 学習イメージ
%****************************
% inputSize = [imageSize 3]; %RGBの3チャンネル
inputSize = [imageSize 236]; %今回は236チャンネル(赤外領域236波数)
%****************************
numClasses = 2;%チョコ2種類
%% ネットワーク構造の定義
filterSize = 2; %畳み込みの大きさ
numFilters = 6; %畳み込みの数
layers = [
imageInputLayer(inputSize);
%畳み込み・正規化・ReLU・最大プールを3セット:
convolution2dLayer(filterSize,numFilters,'Padding',1,'Stride',1);
batchNormalizationLayer()
reluLayer()
maxPooling2dLayer([2 2],'stride',2)
convolution2dLayer(filterSize,numFilters,'Padding',1,'Stride',1);
batchNormalizationLayer
reluLayer()
maxPooling2dLayer([2 2],'stride',2)
convolution2dLayer(filterSize,numFilters,'Padding',1,'Stride',1);
batchNormalizationLayer
reluLayer()
maxPooling2dLayer([2 2],'stride',2)
%最後の3層
fullyConnectedLayer(numClasses);
softmaxLayer()
classificationLayer()
];
%% 学習オプションの設定
opts = trainingOptions('adam', ...
'InitialLearnRate',0.001, ...
'MaxEpochs',200, ...
'MiniBatchSize',24,...
'Plots', 'training-progress',...
'Shuffle','every-epoch',...
'ValidationData',imdsValid);
%% 学習
net = trainNetwork(imdsTrain,layers,opts);
%% 精度確認
% 未使用データ(imdsValid)を用いてnetの精度を確認
YPred = classify(net,imdsValid);
YValid = imdsValid.Labels;
%精度
accuracy = sum(YPred == YValid)/numel(YValid);
figure
plotconfusion(YValid,YPred) %混合行列表示
%% 結果の保存
saveas(gcf,'result.fig')%混合行列
save ('choco2Net','net')% 学習済みネット
참고로 한 코드
MATLAB 문서에 있었던 매우 유용한 샘플 코드. 알맞은 해설 첨부.
분류를 위한 간단한 심층 학습 네트워크 생성
결과
20회 했습니다. 90% 이상이라는 분류 정밀도가 나왔습니다.
요약
현미 FTIR의 계측 데이터를 MATLAB에서 빨리 심층 학습할 수 있었습니다. 분류 정밀도도 무사히 90% 나왔습니다.
이번은 정체를 알고 있는 초콜렛이었지만, 이것을 응용해, 어쩐지 모르는 것이 와도 「이것은 00사의 제품△△이다!」라고 특정할 수 있게 되면 좋겠다, 등 라고 생각하거나 합니다.
이상입니다. 여기까지 읽어 주셔서 감사합니다.
(보충) 현미적외선 분광법에 대하여
샘플 내의 성분 분포의 평가 등을 목적으로 폭넓은 분야에서 응용되고 있다.
(광학) 현미경으로 가시 이미지를 얻을 수 있도록 현미경 FTIR은 적외선 이미지를 얻을 수 있습니다.
※적외 스펙트럼등의 이야기는 여기에서는 자숙.
적외선 이미지
같은 파수에서의 강도 분포. 파수의 수=매수(예, 이번은 236파수이므로 236장 있다).
Reference
이 문제에 관하여(MATLAB × 심층 학습 × 현미적외선 분광법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/nHounoki/items/00c11b080c6905dd4444
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
%% イメージデータストアの読み込み
% 次の「参考にしたコード」URL参照
load imds
%% データ(ラベル)を分割
numTrainingFiles = 0.8;%学習用
numTestFiles = 0.1;%検証用(学習時)
[imdsTrain,imdsTest,imdsValid] = splitEachLabel(imds,numTrainingFiles,numTestFiles,'randomize');
%% ネットワーク構造の設定
imageSize = [16 16]; % 学習イメージ
%****************************
% inputSize = [imageSize 3]; %RGBの3チャンネル
inputSize = [imageSize 236]; %今回は236チャンネル(赤外領域236波数)
%****************************
numClasses = 2;%チョコ2種類
%% ネットワーク構造の定義
filterSize = 2; %畳み込みの大きさ
numFilters = 6; %畳み込みの数
layers = [
imageInputLayer(inputSize);
%畳み込み・正規化・ReLU・最大プールを3セット:
convolution2dLayer(filterSize,numFilters,'Padding',1,'Stride',1);
batchNormalizationLayer()
reluLayer()
maxPooling2dLayer([2 2],'stride',2)
convolution2dLayer(filterSize,numFilters,'Padding',1,'Stride',1);
batchNormalizationLayer
reluLayer()
maxPooling2dLayer([2 2],'stride',2)
convolution2dLayer(filterSize,numFilters,'Padding',1,'Stride',1);
batchNormalizationLayer
reluLayer()
maxPooling2dLayer([2 2],'stride',2)
%最後の3層
fullyConnectedLayer(numClasses);
softmaxLayer()
classificationLayer()
];
%% 学習オプションの設定
opts = trainingOptions('adam', ...
'InitialLearnRate',0.001, ...
'MaxEpochs',200, ...
'MiniBatchSize',24,...
'Plots', 'training-progress',...
'Shuffle','every-epoch',...
'ValidationData',imdsValid);
%% 学習
net = trainNetwork(imdsTrain,layers,opts);
%% 精度確認
% 未使用データ(imdsValid)を用いてnetの精度を確認
YPred = classify(net,imdsValid);
YValid = imdsValid.Labels;
%精度
accuracy = sum(YPred == YValid)/numel(YValid);
figure
plotconfusion(YValid,YPred) %混合行列表示
%% 結果の保存
saveas(gcf,'result.fig')%混合行列
save ('choco2Net','net')% 学習済みネット
참고로 한 코드
MATLAB 문서에 있었던 매우 유용한 샘플 코드. 알맞은 해설 첨부.
분류를 위한 간단한 심층 학습 네트워크 생성
결과
20회 했습니다. 90% 이상이라는 분류 정밀도가 나왔습니다.
요약
현미 FTIR의 계측 데이터를 MATLAB에서 빨리 심층 학습할 수 있었습니다. 분류 정밀도도 무사히 90% 나왔습니다.
이번은 정체를 알고 있는 초콜렛이었지만, 이것을 응용해, 어쩐지 모르는 것이 와도 「이것은 00사의 제품△△이다!」라고 특정할 수 있게 되면 좋겠다, 등 라고 생각하거나 합니다.
이상입니다. 여기까지 읽어 주셔서 감사합니다.
(보충) 현미적외선 분광법에 대하여
샘플 내의 성분 분포의 평가 등을 목적으로 폭넓은 분야에서 응용되고 있다.
(광학) 현미경으로 가시 이미지를 얻을 수 있도록 현미경 FTIR은 적외선 이미지를 얻을 수 있습니다.
※적외 스펙트럼등의 이야기는 여기에서는 자숙.
적외선 이미지
같은 파수에서의 강도 분포. 파수의 수=매수(예, 이번은 236파수이므로 236장 있다).
Reference
이 문제에 관하여(MATLAB × 심층 학습 × 현미적외선 분광법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/nHounoki/items/00c11b080c6905dd4444
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
20회 했습니다. 90% 이상이라는 분류 정밀도가 나왔습니다.
요약
현미 FTIR의 계측 데이터를 MATLAB에서 빨리 심층 학습할 수 있었습니다. 분류 정밀도도 무사히 90% 나왔습니다.
이번은 정체를 알고 있는 초콜렛이었지만, 이것을 응용해, 어쩐지 모르는 것이 와도 「이것은 00사의 제품△△이다!」라고 특정할 수 있게 되면 좋겠다, 등 라고 생각하거나 합니다.
이상입니다. 여기까지 읽어 주셔서 감사합니다.
(보충) 현미적외선 분광법에 대하여
샘플 내의 성분 분포의 평가 등을 목적으로 폭넓은 분야에서 응용되고 있다.
(광학) 현미경으로 가시 이미지를 얻을 수 있도록 현미경 FTIR은 적외선 이미지를 얻을 수 있습니다.
※적외 스펙트럼등의 이야기는 여기에서는 자숙.
적외선 이미지
같은 파수에서의 강도 분포. 파수의 수=매수(예, 이번은 236파수이므로 236장 있다).
Reference
이 문제에 관하여(MATLAB × 심층 학습 × 현미적외선 분광법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/nHounoki/items/00c11b080c6905dd4444
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
샘플 내의 성분 분포의 평가 등을 목적으로 폭넓은 분야에서 응용되고 있다.
(광학) 현미경으로 가시 이미지를 얻을 수 있도록 현미경 FTIR은 적외선 이미지를 얻을 수 있습니다.
※적외 스펙트럼등의 이야기는 여기에서는 자숙.
적외선 이미지
같은 파수에서의 강도 분포. 파수의 수=매수(예, 이번은 236파수이므로 236장 있다).
Reference
이 문제에 관하여(MATLAB × 심층 학습 × 현미적외선 분광법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/nHounoki/items/00c11b080c6905dd4444텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)