trainFaste​rRCNNObjec​tDetector実​行時に発生するエラー​について

18 views (last 30 days)
渓太 小野
渓太 小野 on 22 Mar 2021
Answered: Kenta on 4 Apr 2021
trainFasterRCNNObjectDetectorでFaster R-CNNの学習を実行したところ,領域提案ネットワーク (RPN) の学習時に,「この型の変数では中かっこのインデックス付けはサポートされていません」というエラー文が表示され,学習が中断されました.
訓練データのアノテーションが原因だと考えて,イメージラベラで確認しましたが,gTruth box は画像内に収まっており特に問題は見られませんでした.
なぜこのエラーが発生したのか教えて頂ければ幸いです.自分が実行したコードとエラー文は次の通りです.
trainingData = objectDetectorTrainingData(gTruth);
options = trainingOptions('sgdm', ...
'MaxEpochs', 5, ...
'MiniBatchSize', 1, ...
'InitialLearnRate', 1e-3, ...
'CheckpointPath', tempdir);
[detector, info] = trainFasterRCNNObjectDetector(trainingData, 'resnet50', options, ...
'NegativeOverlapRange', [0 0.3], ...
'PositiveOverlapRange', [0.6 1]);
*************************************************************************
次のオブジェクト クラスに対する Faster R-CNN オブジェクト検出器の学習:
* Tomatoflower
手順 1/4: 領域提案ネットワーク (RPN) の学習。
エラー: tabular/rowfun>dfltErrHandler (line 514)
関数 '@(x)isempty(x{1})||~any(x{1})' A の 1 番目 行に適用した際に、次のエラーが発生しました:
この型の変数では中かっこのインデックス付けはサポートされていません。
エラー: tabular/rowfun>@(s,varargin)dfltErrHandler(grouped,funName,s,varargin{:}) (line 262)
errHandler = @(s,varargin) dfltErrHandler(grouped,funName,s,varargin{:});
エラー: tabular/rowfun (line 282)
[b_data{igrp,:}] = errHandler(struct('identifier',ME.identifier, 'message',ME.message, 'index',igrp),inArgs{:});
エラー: vision.internal.cnn.rpn.imageCentricRegionDatastore/setup (line 419)
missing = rowfun(@(x)isempty(x{1}) || ~any(x{1}),this.TrainingSamples,...
エラー: vision.internal.cnn.rpn.imageCentricRegionDatastore (line 139)
this.setup(trainingData, params);
エラー: fasterRCNNObjectDetector/createRPNTrainingDatastore (line 646)
ds = vision.internal.cnn.rpn.imageCentricRegionDatastore(trainingData,params);
エラー: fasterRCNNObjectDetector.trainRPN (line 186)
ds = createRPNTrainingDatastore(detector, trainingData, opts, params);
エラー: trainFasterRCNNObjectDetector>iTrainFourStep (line 395)
[stage1Detector, rpn, info] = fasterRCNNObjectDetector.trainRPN(...
エラー: trainFasterRCNNObjectDetector (line 352)
[detector, info] = iTrainFourStep(trainingData, fastRCNN, rpn, options, params, executionSettings, imageInfo);

Answers (1)

Kenta
Kenta on 4 Apr 2021
こんにちは、例えば、2020bで作っていたものを2021aで実行していたりしませんか?私も物体検出で以前似た問題があって、fasterRCNNではなくYOLOv3を使っていたのですが、ある関数がバージョンのアップデートに従って若干異なっていて、異なるバージョンの関数をいくつか参照していて、そのせいでエラーになっていました。
また、特にfasterRCNNにこだわる理由がなければ、YOLOやSSDでやるのも策かも知れません。

Community Treasure Hunt

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

Start Hunting!