MATLAB Answers

ssk
0

画像分類(class​ification)​において主成分分析(​PCA)を導入するに​は

Asked by ssk
on 12 Mar 2019
Latest activity Commented on by ssk
on 13 Mar 2019
プログラミング初心者です。
以下のディレクトリ構造とリンクに基づき、Alexnetの転移学習を利用した画像識別器を作成し、主成分分析(PCA)を併せて加えたいと考えております。
どうぞよろしくお願いいたします。
ディレクトリ構造:
main
-- a
-- image.dcm(thousands of dicom file)
 -- b
  -- image.dcm(thousands of dicom file)
 -- c
  -- image.dcm(thousands of dicom file)
-- d
  -- image.dcm(thousands of dicom file)
ソースコード:
%path = current directory
currentdirectory = pwd;
categories = {'a', 'b', 'c','d'};
%Create an ImageDatastore to help you manage the data.
imds = imageDatastore(fullfile(currentdirectory, categories),'IncludeSubfolders',true,'FileExtensions','.dcm','LabelSource', 'foldernames','ReadFcn',@dicomread);

  2 Comments

Kenta Itakura on 12 Mar 2019
alexnetで特徴量抽出をしたあとに、その特徴量をPCAで、ある次元に圧縮したいということでしょうか?できればもっとやりたいことを詳しく書いていただけますか?
ssk
on 12 Mar 2019
私の認識があっているか定かではございませんが、PCAは、データを分析しやすいように再構成し、可能なら次元を下げることで、データの次元が大きすぎると認識精度が悪くなる、次元の呪いという現象を回避するための手法とお伺いしておりますので、alexnetで特徴量抽出の前にデータ全体に主成分分析を行いたいと考えております。

Sign in to comment.

1 Answer

Answer by Kenta Itakura on 12 Mar 2019
 Accepted Answer

コメント拝見しました。確かにPCAにより次元圧縮は可能ですが、alexnet等の事前学習済みネットワークで特徴量抽出をして約4000次元ほどに圧縮するほうがうまくいくような気がします。感覚的にはalexnetで畳み込み演算をしたほうがよい結果が得られそうな気がしますが、それはやってみて、という感じでしょうか。
ここにPCAのやり方があるので、参考にしてください。なお、PCAの出力は画像ではないので、alexnet等と併用することはできないです。alexnetで特徴量抽出したあとにPCAをするのかと質問から推察しましたが、それもうまくいくかはやってみないとわかりません。
alexnet, googlenet等でドキュメント通りにやってはあまり良い結果はでませんでしたか?

  5 Comments

ssk
on 12 Mar 2019
4種類のDICOMファイルの分類で、交差検証も10-foldで試してみました。私のPCスペックの関係で少ないイメージ数(各ラベル:10枚)でまずは試しています。ご参考までにトレーニング結果のグラフを添付いたします。
スクリーンショット 2019-03-13 01.57.44.png
スクリーンショット 2019-03-13 01.55.50.png
Kenta Itakura on 13 Mar 2019
10点交差検証の平均精度はいくらですか?
この図を見る限りうまくいっているような気がします。
次の段階として枚数を増やすことが望ましいですが、計算時間がかなりかかってしまうんですよね?
'ExecutionEnvironment','parallel',
を学習オプションのときに追加して実行してみてください。
やはりそれでも学習の速度はかわらないでしょうか。
ssk
on 13 Mar 2019
枚数が少ないので過学習している可能性もございますが、精度は75%~100%で推移しています。頂いたコマンドも踏まえ試してみます。本当にありがとうございます!

Sign in to comment.