R-CNNでのクラス名におけるエラーについて

R-CNNを用いて物体検出を行いたいと考えています。
以下のCNNの層構造において
層.jpg
15層目のプロパティ、およびclassは以下のようになっています。
15層目.jpg
15層目カテゴリ.jpg
学習データのクラス名は以下のようになっています。
学習データ.jpg
rcnn = trainRCNNObjectDetector(data, layers, options, 'NegativeOverlapRange', [0 0.3]);を処理している際、
"ニューラル ネットワークに学習データ内のオブジェクトを分類させるための学習を実行中"において
下記のようなエラーが出てしまいました。
エラー: trainNetwork (line 150)
層 15 のクラス名は、学習データのクラス名と一致しなければなりません。学習データのクラス名は categories(Y) で指定されます。ここで、Y は学習データのラベルです。
エラー: rcnnObjectDetector.train (line 239)
[net, info] = trainNetwork(dispatcher, layers, opts);
エラー: trainRCNNObjectDetector (line 280)
[detector, ~, info] = rcnnObjectDetector.train(trainingData, lgraphOrLayers, options, params);
エラー: Untitled_36 (line 16)
rcnn = trainRCNNObjectDetector(data, layers, options, 'NegativeOverlapRange', [0 0.3]);
上記のようなエラーが出てしまい、実行できません。どのように改善を行えばよいのでしょうか。
よろしくお願いいたします。

9 comentarios

Kenta
Kenta el 22 de Nov. de 2019
ダミーデータでもよいので、同様のエラーのでるデータを添付いただけないでしょうか。
Yuki Yoshino
Yuki Yoshino el 26 de Nov. de 2019
ご回答ありがとうございます。
エラーの出たプログラムファイルを添付いたしました。
よろしくお願いします。
Kenta
Kenta el 26 de Nov. de 2019
ありがとうございます。すいません、コードではなくて、データのほうです。
必ずしもそのままのデータではなくてもよいので、練習用やダミーデータがあれば
そちらを添付していただけますか。(ダミー)データがあったうえで、考えるほうが具体的なコメントができると思います。
Yuki Yoshino
Yuki Yoshino el 27 de Nov. de 2019
ご回答ありがとうございます。
学習済みニューラルネットワークのデータ(net.mat)と、グラウンド トゥルース データ(data.mat)を添付いたしました。
よろしくお願いします。
Kenta
Kenta el 27 de Nov. de 2019
データを送っていただきありがとうございました。
私も同じエラーが出ました。ただ、layer自体も正しく構築できてそうですし、
layerの分類層ののクラス名とグランドトゥルースデータのクラス名も一致してそうです。
R-CNNよりは、YOLOのほうが圧倒的に高速で、精度も良いので、一度
YOLOで同じことができないか試されてはいかがでしょうか。
手法が異なっているので、同じエラーは出ないと思います。お力になれず申し訳ございません。
Kazuya
Kazuya el 27 de Nov. de 2019
Editada: Kazuya el 27 de Nov. de 2019
学習データに positive が無いのが原因でしょうか・・?(推測です)仮に・・いったん
tmp = net.Layers;
layers = [tmp(1:end-1)
classificationLayer];
と classificationLayer だけ新しいものにしてから
rcnn = trainRCNNObjectDetector(data, layers, options, 'NegativeOverlapRange', [0 0.3]);
と実行するとどうなるでしょう。
Yuki Yoshino
Yuki Yoshino el 28 de Nov. de 2019
Kazuya様
ご指摘ありがとうございます。
上記の方法で試したところ、うまく実行することができました。
Yuki Yoshino
Yuki Yoshino el 28 de Nov. de 2019
回答をしてくださった、Kenta Itakura様、Hiro Yoshino様、Kazuya様
ありがとうございました。
Kazuya
Kazuya el 28 de Nov. de 2019
良かったです!

Iniciar sesión para comentar.

 Respuesta aceptada

Kazuya
Kazuya el 28 de Nov. de 2019

0 votos

こちらに回答として転記しておきます。
****
学習済みのネットワークは positive/nagative の2クラス分類を行うものですが、学習データに positive が無いのが原因の様です。
tmp = net.Layers;
layers = [tmp(1:end-1)
classificationLayer];
と classificationLayer だけ新しいものするとエラーは解決します。

Más respuestas (1)

Hiro Yoshino
Hiro Yoshino el 25 de Nov. de 2019

1 voto

まずは、こちらをご参考にしてみては如何でしょうか?
あとは、作成したネットワークの整合性チェックをディープネットワークデザイナーから行えます。
キャプチャ.PNG

Productos

Versión

R2018b

Preguntada:

el 21 de Nov. de 2019

Respondida:

el 28 de Nov. de 2019

Community Treasure Hunt

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

Start Hunting!