YOLO4の学習データセットにラベル無しの画像を含めて良いか?
Show older comments
【質問】
以下のような、ラベル無しの画像を学習データセットに含めても問題ないでしょうか?

【背景】
YOLO4を転移学習しようとしていますが、エラーになってしまいます。
学習データセットの作りが原因では?と考え、質問させて頂いております。
【実行コード】
imds = imageDatastore(imageDir);
blds = boxLabelDatastore(gTruth.LabelData);
ds = combine(imds, blds);
% MATLAB例題の補助関数そのまま使用。
targetSize = [608 608];
augds = transform(ds,...
@(data)resizeImageAndLabel(data,targetSize));
% augdsの全体的なサイズ(ここでは画像の枚数)
numData = 95;
% 分割比率を設定
trainRatio = 0.60;
validationRatio = 0.20;
testRatio = 0.20;
% 各セットのデータ数を計算
numTrain = round(numData * trainRatio);
numValidation = round(numData * validationRatio);
numTest = round(numData * testRatio);
% ランダムにデータストアを並べ替え(オプション)
augds = shuffle(augds);
% 分割
trainDatastore = subset(augds, 1:numTrain);
validationDatastore = subset(augds, numTrain+1:numTrain+numValidation);
testDatastore = subset(augds, numTrain+numValidation+1:numTrain+numValidation+numTest);
% アンカーボックスの数を指定する
numAnchors = 9;
% 学習データからアンカーボックスを推定する
[anchors, meanIoU] = estimateAnchorBoxes(augds, numAnchors);
% 面積でソートする
area = anchors(:,1).*anchors(:,2);
[~, idx] = sort(area, "descend");
anchors = anchors(idx,:);
% 各出力層にアンカーボックスを割り当てる
anchorBoxes = {anchors(1:3,:); anchors(4:6,:); anchors(7:9,:)};
% 転移学習モデル作成
name = "csp-darknet53-coco";
classes = {'rock', 'paper', 'scissors'};
detector = yolov4ObjectDetector(name,classes,anchorBoxes);
analyzeNetwork(detector.Network);
% 転移学習モデルの学習実行
options = trainingOptions("sgdm", ...
InitialLearnRate=0.001, ...
MiniBatchSize=2,...
MaxEpochs=30, ...
BatchNormalizationStatistics="moving",...
ResetInputNormalization=false,...
VerboseFrequency=25);
train_detector = trainYOLOv4ObjectDetector(trainDatastore,detector,options);
【エラー内容(実行結果)】
train_detector = trainYOLOv4ObjectDetector(trainDatastore,detector,options);
*************************************************************************
次のオブジェクト クラスに関する YOLO v4 オブジェクト検出器の学習:
* rock
* paper
* scissors
Epoch Iteration TimeElapsed LearnRate TrainingLoss
_____ _________ ___________ _________ ____________
次を使用中のエラー: reshape
要素数を変更してはなりません。その次元の適切なサイズを自動計算するには、[] をサイズ入力の 1 つとして使用してください。
エラー: trainYOLOv4ObjectDetector>iGetMaxIOUPredictedWithGroundTruth (行 425)
iou(:,:,:,batchSize) = reshape(maxOverlap,h,w,c);
エラー: trainYOLOv4ObjectDetector>iGenerateTargets (行 319)
iou = iGetMaxIOUPredictedWithGroundTruth(bx,by,bw,bh,groundTruth);
エラー: trainYOLOv4ObjectDetector>calculateLoss (行 234)
[boxTarget, objectnessTarget, classTarget, objectMaskTarget, boxErrorScale] = iGenerateTargets(gatheredPredictions, YTrain, params.InputSize, params.AnchorBoxes, penaltyThreshold);
エラー: trainYOLOv4ObjectDetector>@(varargin)calculateLoss(lossParams,varargin) (行 167)
lossFcn = @(varargin) calculateLoss(lossParams,varargin);
エラー: images.dltrain.internal.SerialTrainer>modelGradients (行 139)
loss = lossFcn(networkOutputs{:},targets{:});
エラー: deep.internal.dlfeval (行 17)
[varargout{1:nargout}] = fun(x{:});
エラー: deep.internal.dlfevalWithNestingCheck (行 15)
[varargout{1:nargout}] = deep.internal.dlfeval(fun,varargin{:});
エラー: dlfeval (行 31)
[varargout{1:nargout}] = deep.internal.dlfevalWithNestingCheck(fun,varargin{:});
エラー: images.dltrain.internal.SerialTrainer/fit (行 76)
[loss,grad,state,networkOutputs,lossData] = dlfeval(@modelGradients,self.Network,self.LossFcn,...
エラー: images.dltrain.internal.dltrain (行 102)
net = fit(networkTrainer);
エラー: trainYOLOv4ObjectDetector (行 183)
[trainedDetector,infoTrain] = images.dltrain.internal.dltrain(mbq,detector,options,lossFcn,metrics,validationPatienceMetric,'ExperimentMonitor',params.ExperimentMonitor);
Answers (0)
Categories
Find more on 深層学習、セマンティック セグメンテーション、検出 in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!