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 件のコメント

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

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

 採用された回答

Kazuya
Kazuya 2019 年 11 月 28 日

0 投票

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

その他の回答 (1 件)

Hiro Yoshino
Hiro Yoshino 2019 年 11 月 25 日

1 投票

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

製品

リリース

R2018b

質問済み:

2019 年 11 月 21 日

回答済み:

2019 年 11 月 28 日

Community Treasure Hunt

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

Start Hunting!