哎呀100 2024-04-14 12:27 采纳率: 0%
浏览 11

matlab训练yolov2得时候报错

在使用matlab训练yolov2得时候报错:设置类 'nnet.cnn.TrainingOptions' 的属性 'ValidationData' 时出错。数据存储上定义的变换函数无效。
错误使用 vision.internal.cnn.validationReportUtils.updateValidationDataTransform
设置类 'nnet.cnn.TrainingOptions' 的属性 'ValidationData' 时出错。数据存储上定义的变换函数无效。
出错 trainYOLOv2ObjectDetector>iParseInputsYolov2 (第 330 行)
options = vision.internal.cnn.validationReportUtils.updateValidationDataTransform(options,applyTransformFcn);
出错 trainYOLOv2ObjectDetector (第 211 行)
[trainingData, lgraph, params, options] = iParseInputsYolov2(...
出错 Untitled (第 84 行)
[detector,info] = trainYOLOv2ObjectDetector(preprocessedTrainingData,lgraph,options);

  • 写回答

3条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-04-14 12:27
    关注

    引自免费微信小程序:皆我百晓生

    这个错误通常是因为在提供给trainYOLOv2ObjectDetector函数的验证数据(ValidationData)中,其图像预处理变换函数不正确或不可用。要解决这个问题,你需要检查以下几个方面:

    1. 确保提供的ValidationData是一个包含图像数据、标签和变换函数的数据结构。这通常是通过 imageDatastore创建的,并且在创建时指定了正确的transformFunction

    2. 检查你的transformFunction是否与训练数据使用的transformFunction兼容。通常情况下,如果你对训练数据应用了某种变换(例如缩放、归一化等),你也应该在验证数据上执行相同的变换。

    这里是一个示例,展示了如何创建一个ImageDatastore并为其指定一个变换函数:

    % 假设你有训练图像文件夹路径trainFolder和验证图像文件夹路径valFolder
    % 以及相应的标签文件folderAnnotation_train.txt和folderAnnotation_val.txt
    
    % 创建训练数据集
    trainAnnFile = fullfile(trainFolder, 'folderAnnotation_train.txt');
    trainData = imageDatastore(trainFolder, 'IncludeSubfolders', true, ...
        'LabelSource', 'foldernames', 'ReadFcn', @readJPEG);
    trainData = addMetadata(trainData, readAnnotations(trainAnnFile), 'LabelNames');
    
    % 创建验证数据集
    valAnnFile = fullfile(valFolder, 'folderAnnotation_val.txt');
    valData = imageDatastore(valFolder, 'IncludeSubfolders', true, ...
        'LabelSource', 'foldernames', 'ReadFcn', @readJPEG);
    valData = addMetadata(valData, readAnnotations(valAnnFile), 'LabelNames');
    
    % 定义变换函数
    preprocessFcn = @(data) preprocessData(data); % 这里是你的预处理函数,例如归一化、调整大小等
    
    % 应用变换函数到训练和验证数据集中
    trainData = augmentedImageDatastore([320 320], trainData, 'ColorPreprocessing', preprocessFcn);
    valData = augmentedImageDatastore([320 320], valData, 'ColorPreprocessing', preprocessFcn);
    
    % 训练YOLOv2对象检测器
    lgraph = yolov2ObjectDetectionLayer('BoxSize', [32 32], 'NumClasses', numClasses, ... % 根据实际情况填写
                                        'AnchorBoxes', anchorBoxes, ... % 根据实际情况填写
                                        'FeatureExtractor', 'resnet50'); % 或者其他预训练网络名称
    options = trainingOptions('sgdm', 'MaxEpochs', 10, 'MiniBatchSize', 8, 'InitialLearnRate', 1e-3, ...
                             'Plots', 'training-progress', 'Verbose', false, ...
                             'ValidationData', valData, 'ValidationFrequency', 10);
    
    [detector, info] = trainYOLOv2ObjectDetector(trainData, lgraph, options);
    

    确保preprocessFcn是正确的,并且与训练数据的预处理相同。如果你的预处理函数有问题,可以尝试移除它,看看问题是否仍然存在。如果问题解决了,那么可能就需要重新定义或修复你的预处理函数。

    如果你不确定如何定义预处理函数,可以参考MATLAB官方文档中的示例:https://www.mathworks.com/help/vision/ref/trainyolov2objectdetector.html#buw7xqo-1

    如果你的问题依然存在,请提供更多关于你的数据和预处理函数的信息,以便我可以更准确地帮你定位问题。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 4月14日

悬赏问题

  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用
  • ¥15 C++ yoloV5改写遇到的问题
  • ¥20 win11修改中文用户名路径
  • ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
  • ¥70 PlayWright在Java上连接CDP关联本地Chrome启动失败,貌似是Windows端口转发问题
  • ¥15 帮我写一个c++工程