YOLOv2における学習前のエラーについて

5 次查看(过去 30 天)
HY
HY 2020-7-8
评论: Kenta 2020-7-9
今回、YOLOを使用して学習を行うことになりました。
自分の現状理解では、転移学習させたCNNを最後の特徴層?以後を切り離し、YOLOのサブネットワークをつなげ学習させる手順だと認識しています。
今回は、事前学習のネットワークとしてResNet18を転移学習させました。その後、YOLO仕様に変換さて学習を行ったところ、以下のようなエラーが起きてしまいました。エラー内容からして、変換後と変換前で特徴層のチャンネル数?が一致していないのではないかと考えていますが、どこに手をつければ良いか思いつきません。
よろしければ、ご指摘とアドバイスしていただければ幸いです。
よろしくお願いいたします。
inputSize = [224 224 3];
numClasses = width(vehicleDataset)-1;
trainingDataForEstimation = transform(trainingData,@(data)preprocessData(data,inputSize));
numAnchors = 7;
load('Resnet18v1');%転移学習したCNN
featureExtractionNetwork = Resnet18v1;
featureLayer = 'res5b_relu';
lgraph = yolov2Layers(inputSize,numClasses,anchorBoxes,featureExtractionNetwork,featureLayer);
options = trainingOptions('sgdm', ...
'MiniBatchSize', 16, ....
'InitialLearnRate',1e-3, ...
'MaxEpochs',20,...
'CheckpointPath', tempdir, ...
'Shuffle','never');
[detector,info] = trainYOLOv2ObjectDetector(preprocessedTrainingData,lgraph,options);
これを実行すると以下のエラーが発生します。
エラー: trainYOLOv2ObjectDetector (line 166)
[trainingData, lgraph, params] = iParseInputsYolov2(...
エラー: trainYOLOv2_2 (line 75)
[detector,info] = trainYOLOv2ObjectDetector(preprocessedTrainingData,lgraph,options);
原因:
ネットワーク: YOLO v2 変換層への入力は、7 個のアンカー ボックスと 21 個のクラスをサポートするために 182 個のチャネルをもたなければなりません。チャネ
ル数は numAnchors * (5 + numClasses) と等しくなければなりません。学習データ、yolov2Transform 層で指定されたアンカー ボックス数、または変換層の
前の層を更新します。

采纳的回答

Kenta
Kenta 2020-7-8
こんにちは、そちらのネットワーク構成が質問文からのみではわからないので確認させてください。
res5b_reluの直後にyolov2Conv1が来ている形で正しいですか?
anchorBoxesという変数は7行2列の変数になっていますか?
また、analyzeNetwork(lgraph)というコマンドで、ネットワークを確認したとき、最後の出力はどうなってますか(例:7×7×182など)
  8 个评论
HY
HY 2020-7-9
指摘していただいた部分を確認したところ、学習させるラベルの数の設定が間違っていたようで、確認したら何とか学習に入りました!!
お騒がせしてすみません。Kenta様のアドバイスのおかげです。
誠にありがとうございました。
Kenta
Kenta 2020-7-9
はい、解決し、よかったです!

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 深層学習、セマンティック セグメンテーション、検出 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!