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

プログラミング初心者です。
以下のディレクトリ構造とリンクに基づき、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 件のコメント

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

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

 採用された回答

Kenta
Kenta 2019 年 3 月 12 日

3 投票

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

5 件のコメント

ssk
ssk 2019 年 3 月 12 日
PCAの出力は画像ではないので、alexnet等と併用することはできない旨、ご回答いただきありがとうございます。ドキュメントどおりにやってみてやっと良い結果を出せるようになりましたが、よりよい精度を出すために何か新しい方法を追加できたらと思いましてご質問いたしました。
PCAにこだわらず、様々な方法で高精度を出せるよう試したいと思いますが、何かご示唆はございますでしょうか。
Kenta
Kenta 2019 年 3 月 12 日
ちなみに何種類の分類で精度はいくらくらいでしたか?交差検証もやってみました?
画像のなかでもどんなデータをどんな形で入力していて、どんな学習曲線を描くのかなど、いろいろ知っておかないとあまりアイデアは浮かびません。また機会がありましたら、詳しい状況を教えてください。
ssk
ssk 2019 年 3 月 12 日
4種類のDICOMファイルの分類で、交差検証も10-foldで試してみました。私のPCスペックの関係で少ないイメージ数(各ラベル:10枚)でまずは試しています。ご参考までにトレーニング結果のグラフを添付いたします。
スクリーンショット 2019-03-13 01.57.44.png
スクリーンショット 2019-03-13 01.55.50.png
Kenta
Kenta 2019 年 3 月 13 日
10点交差検証の平均精度はいくらですか?
この図を見る限りうまくいっているような気がします。
次の段階として枚数を増やすことが望ましいですが、計算時間がかなりかかってしまうんですよね?
'ExecutionEnvironment','parallel',
を学習オプションのときに追加して実行してみてください。
やはりそれでも学習の速度はかわらないでしょうか。
ssk
ssk 2019 年 3 月 13 日
枚数が少ないので過学習している可能性もございますが、精度は75%~100%で推移しています。頂いたコマンドも踏まえ試してみます。本当にありがとうございます!

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

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeDeep Learning Toolbox についてさらに検索

タグ

質問済み:

ssk
2019 年 3 月 12 日

コメント済み:

ssk
2019 年 3 月 13 日

Community Treasure Hunt

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

Start Hunting!