JAYLEE900 2023-07-08 20:51 采纳率: 37.5%
浏览 7

(逻辑递归)对图像数据进行执行训练的时候,一直报错

问题:通过opencvsharp的ML.LogisticRegreession(逻辑递归)对图像数据进行执行训练的时候,一直报错
报错信息:

OpenCvSharp.OpenCVException
  HResult=0x80131500
  Message=**check training parameters. Invalid training classifier**
  Source=OpenCvSharp
  StackTrace:
   在 OpenCvSharp.Internal.NativeMethods.<>c.<.cctor>b__1682_0(ErrorCode status, String funcName, String errMsg, String fileName, Int32 line, IntPtr userData)OpenCvSharp.Internal.NativeMethods.ml_StatModel_train2(IntPtr obj, IntPtr samples, Int32 layout, IntPtr responses, Int32& returnValue)
   在 OpenCvSharp.ML.StatModel.Train(InputArray samples, SampleTypes layout, InputArray responses)
   在 TargetMeasureObject.Program.Main(String[] args) 在 D:\Jay.Lee\Study\2023\OPCV_OBJECT\TargetMeasureObject\Program.cs 中: 第 143

img

源代码如下:

Mat trainData = new Mat(0, 0, MatType.CV_32FC1);
                    Mat trainLabel = new Mat(0, 0, MatType.CV_32FC1);
                    Mat validData = new Mat(0, 0, MatType.CV_32FC1);
                    Mat validActv = new Mat(0, 0, MatType.CV_32FC1);
                    string[] trainFiles = Directory.GetFiles(trainPath,"*.png");
                    string[] validFiles = Directory.GetFiles(validPath, "*.png");
                    foreach(var fname in trainFiles)
                    {
                        int label = fname[fname.IndexOf('_') - 1]-'0';
                        Mat temp = Cv2.ImRead(fname, ImreadModes.Grayscale).
                            Threshold(0, 255, ThresholdTypes.Otsu).
                            Resize(new Size(STAND_WIDTH, STAND_HEIGHT)).
                            Reshape(0, 1);
                        temp.ConvertTo(temp, MatType.CV_32FC1);
                        trainData.PushBack(temp);
                        trainLabel.PushBack((float)label);
                    }
                    foreach (var fname in validFiles)
                    {
                        int label = fname[fname.Length - 1] - '0';
                        Mat temp = Cv2.ImRead(fname, ImreadModes.Grayscale).
                            Threshold(0, 255, ThresholdTypes.BinaryInv).
                            Resize(new Size(STAND_WIDTH, STAND_HEIGHT)).
                            Reshape(0, 1);
                        temp.ConvertTo(temp, MatType.CV_32FC1);
                        validData.PushBack(temp);
                        validActv.PushBack((float)label);
                    }
                    using (var lg1 = OpenCvSharp.ML.LogisticRegression.Create())
                    {
                        lg1.LearningRate = 0.001;
                        lg1.IsEnabledDispose = true;
                        lg1.MiniBatchSize = 5;
                        lg1.Regularization = LogisticRegression.RegKinds.RegL1;
                        lg1.Iterations = 100;
                        lg1.TrainMethod = LogisticRegression.Methods.MiniBatch;
                        lg1.TermCriteria = TermCriteria.Both(1000, 1e-5) ;
                        lg1.Train(trainData, SampleTypes.RowSample, trainLabel);
                        Mat predict = new Mat();
                        lg1.Predict(validData, predict);
                    }

  • 写回答

1条回答 默认 最新

  • 自在猫先生 2023-07-10 11:15
    关注

    源于chatGPT仅供参考

    根据提供的信息,你正在使用 OpenCvSharp 的 ML.LogisticRegression 对图像数据进行训练,并且遇到了一个错误。
    
    错误信息显示为:**check training parameters. Invalid training classifier**。这意味着你的训练参数或分类器无效。
    
    在你的代码中,训练参数和分类器是由 LogisticRegression 类的实例 `lg1` 控制的。请确保你提供的参数正确并适用于你的训练数据集。以下是一些可能导致问题的原因和建议的解决方案:
    
    1. 检查训练数据的尺寸和类型:确保 `trainData``trainLabel` 的维度和数据类型与训练模型兼容。可通过打印它们的形状和数据类型来检查。
    
    2. 确认你的标签是正确的:在你的代码中,你从文件名中提取了标签,但提取可能会出错。请确保正确提取到了正确的标签值,并将其添加到 `trainLabel` 中。
    
    3. 调整训练参数:检查你设置的学习率、迭代次数、正则化方法等参数是否合适。有时候调整这些参数可以解决训练过程中的问题。
    
    4. 检查图像处理步骤:确认你的图像预处理步骤(如二值化、大小调整等)是否正确,并且输出的图像尺寸和类型与训练模型兼容。
    
    除了上述建议之外,你可以尝试使用更详细的错误追踪来确定问题所在。检查是否有其他错误信息提供了更具体的提示。
    
    如果你仍然无法解决问题,请提供更多代码和错误信息,以便我能够更准确地帮助你找到解决方案。
    
    
    评论

报告相同问题?

问题事件

  • 创建了问题 7月8日

悬赏问题

  • ¥15 SPSS分类模型实训题步骤
  • ¥15 求解决扩散模型代码问题
  • ¥15 工创大赛太阳能电动车项目零基础要学什么
  • ¥20 limma多组间分析最终p值只有一个
  • ¥15 nopCommerce开发问题
  • ¥15 torch.multiprocessing.spawn.ProcessExitedException: process 1 terminated with signal SIGKILL
  • ¥15 QuartusⅡ15.0编译项目后,output_files中的.jdi、.sld、.sof不更新怎么解决
  • ¥15 pycharm输出和导师的一样,但是标红
  • ¥15 想问问富文本拿到的html怎么转成docx的
  • ¥15 我看了您的文章,遇到了个问题。