【R-CNN】複数の画像の学習について

9 ビュー (過去 30 日間)
MASAYUKI EGUCHI
MASAYUKI EGUCHI 2018 年 6 月 17 日
コメント済み: MASAYUKI EGUCHI 2018 年 6 月 27 日
CNNで複数の画像特徴(例:カメラ、テレビの様に)を学習させたいと考えております。 学習させたいのは、床の損傷です。床の損傷を部分的な損傷のLvel1~4、幅広い損傷のLevel1~4にわけ、これを学習させたいと思っております。 単一の損傷であれば、ビデオセミナー 「Fast R-CNNによる物体の検出と識別」等で記載があったのですが、複数の画像特徴を学習させる方法がわかりません。 別添のPDFのコードをどのように変更すれば、複数の画像特徴を学習できますでしょうか?ご教示願います。

採用された回答

Eiji Ota
Eiji Ota 2018 年 6 月 18 日
添付して頂いたPDFを拝見しますと、"Rutting_Level2" のラベルに相当する BoundingBox のデータが存在しないためにエラーが発生しているようです。
  1 件のコメント
MASAYUKI EGUCHI
MASAYUKI EGUCHI 2018 年 6 月 19 日
ご連絡ありがとうございます。 ラベルを修正したところ下記のエラーが出ました。 こちらについてもご教示願えないでしょうか? よろしくお願いいたします。
エラー: vision.internal.cnn.fastrcnn.RegionReader (line 146) ポジティブまたはネガティブ学習サンプルとして使用する領域提案が見つかりません。 エラー: vision.internal.cnn.fastrcnn.TrainingRegionDispatcher (line 63) vision.internal.cnn.fastrcnn.RegionReader(... エラー: fastRCNNObjectDetector/createTrainingDispatcher (line 668) dispatcher = vision.internal.cnn.fastrcnn.TrainingRegionDispatcher(... エラー: fastRCNNObjectDetector.train (line 173) dispatcher = createTrainingDispatcher(... エラー: trainFasterRCNNObjectDetector (line 297) [~, fastRCNN] = fastRCNNObjectDetector.train(trainingData, fastRCNN, options(2), params, checkpointSaver);

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

その他の回答 (5 件)

Eiji Ota
Eiji Ota 2018 年 6 月 19 日
領域提案(Region Proposal)がうまく見つかっていないような印象があります。ラベルの方のデータで、gTruth の中の LabelDataをみると、どうも同じ BoundingBox のデータが何度も入ってしまっている印象がありまして、ラベルがうまく作れているか、ちょっと心配ですね。大丈夫かもしれませんが… ラベルデータをロードして、gTruth.LabelData{2, 1}{:}などとタイプしてみて下さい。あと、提案領域がうまく作れていないようであれば、Step1とかStep2のエポック数を増やしてみるのもありかもしれません。

MASAYUKI EGUCHI
MASAYUKI EGUCHI 2018 年 6 月 20 日
ご連絡、ありがとうございます。 コメントいただいてから、再度回しなおしてみたら、解析することができました。 しかしながら、率でアウトプットされ、「Spotted_Level2」等のラベルで表現されません。ラベルで表現するためにはどのコードを改善すればよいでしょうか?お手間をおかけいたしますが、よろしくお願います。

Eiji Ota
Eiji Ota 2018 年 6 月 20 日
いまの呼び方だとラベルの情報が戻って来ないので、下のように戻り値を3個にすればラベルが戻ってきます。
[bboxes, scores, label] = detect(detector, I);
戻ってきたラベルを画像をアノテーションするときの文字列として使えばOKです。
I = insertObjectAnnotation(I, 'rectangle', bboxes, label);

MASAYUKI EGUCHI
MASAYUKI EGUCHI 2018 年 6 月 24 日
ありがとうございます。ご教示いただいたように、下記の入力でラベルの表示ができました。 (添付: ~RGB001) I = imread('D:\7000RGB_150per.jpg'); [bboxes,scores,label] = detect(detector, I); I = insertObjectAnnotation(I, 'rectangle', bboxes,cellstr(label)); figure imshow(I)
ラベルと率を両方表示する場合、下記の通りでよいでしょうか? I = imread('D:\7000RGB_150per.jpg'); [bboxes,scores,label] = detect(detector, I); annotation = sprintf('%s:%f)', label, scores); I = insertObjectAnnotation(I, 'rectangle', bboxes,annotation); figure imshow(I)
引き続き、よろしくお願いいたします。
  1 件のコメント
MASAYUKI EGUCHI
MASAYUKI EGUCHI 2018 年 6 月 24 日
追伸ですが、現在PCのCドライブの使用容量がなぜかいっぱいになるという状況に陥っており、まともにMathlabが動作していません。そのため、添付のFasterCNNRGB004.pdfのような結果となっており、コードの間違いがないか確認したいと思った次第です。 よろしくお願いいたします。

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


Eiji Ota
Eiji Ota 2018 年 6 月 24 日
コードの方を拝見致しますと、CheckPointPath というオプションが有効になっておりまして、これが有効になっていますと、計算の途中結果をディスクに保存するようになります。計算の途中結果が必要ないようであれば、このオプションを無効にしてして頂くと、ディスクの容量を節約することができます。
  1 件のコメント
MASAYUKI EGUCHI
MASAYUKI EGUCHI 2018 年 6 月 27 日
ありがとうございました! 正常に処理を完了させることができました!

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

カテゴリ

Help Center および File Exchangeシミュレーションの実行 についてさらに検索

Community Treasure Hunt

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

Start Hunting!