修复一个错误的数量在Yolov2渠道

31日视图(30天)
我有这段代码使用一个类从imageLabeler。但是,我得到了错误当我试着2或3类。它说“网络:YOLO v2意思转换层的输入必须有28个渠道支持4锚箱和2类”。金宝app
vehicleDetector =负载(“yolov2VehicleDetector.mat” );
lgraph = vehicleDetector.lgraph;
[imd, bxds] = objectDetectorTrainingData (gTruth);
cd =结合(imd, bxds);
选择= trainingOptions ( “个” ,
“InitialLearnRate” ,0.001,
“详细” ,真的,
“MiniBatchSize” 2,
“MaxEpochs” 30岁的
“洗牌” , “every-epoch” ,
“VerboseFrequency” 10);
[探测器,信息]= trainYOLOv2ObjectDetector (cd、lgraph选项);
错误使用trainYOLOv2ObjectDetector > iParseInputsYolov2
无效的网络。
错误trainYOLOv2ObjectDetector(第209行)
[trainingData、lgraph params,选项]= iParseInputsYolov2 (…
引起的:
网络:YOLO v2意思转换层的输入必须有28个渠道支持金宝app
4锚箱和2类。通道的数量必须等于numAnchors * (5 +
numClasses)。更新训练数据,锚箱中指定的数量
yolov2Transform层或层前转换层。
你能让我知道如何修复错误呢?我很感激你的帮助。

答案(1)

Vivek Akkala
Vivek Akkala 2022年6月9日
你好,
错误是由于不匹配yolov2TransformLayer实际预期的输入和输入。基于错误消息,我以为你想训练YOLO v2意思网络4锚箱2类。
这样做,最后卷积层在yolov2TransformLayer“lgraph”必须有28输出过滤器。
这个问题可以解决通过更新最后的输出滤波器卷积层。你可以尝试以下代码来解决问题:
numClasses = 2;
numAnchorBoxes = 4;
outFilters = (5 + numClasses)。* numAnchorBoxes;
outFilters yolov2ConvLayer = convolution2dLayer(3日,“名字”,“yolov2ConvUpdated”,
“填充”,“相同”,
“WeightsInitializer”@(深圳)randn(深圳)* 0.01);
yolov2ConvLayer。偏见= 0 (1,1,outFilters);
lgraph = replaceLayer (lgraph,“yolov2ClassConv”,yolov2ConvLayer);
2的评论
Vivek Akkala
Vivek Akkala 约6小时前
你好,
错误消息说你有1类检测但你声称有4类。Enusre groundTruth对象/ groundTruth表有4类。更新numClasses在上面的情况,4。
还replce现有网络中的yolov4TransformLayer新yolov4TransformLayer yolov4TransformLayer。NumAnchorBoxes不是4。

登录置评。

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!