@vdanilin0

Почему не работает обучение в нейронной сети?

В этой статье показывается использования предобученный модели tinyyolov2-8.onnx в c# с помощью ML.Net. И я хочу обучить её на своих данных, чтобы она могла определять лебедей, а в дальнейшем и их подвиды. Я использовал программу vott чтобы сделать датасет с лебедями и экспортировать его в csv формате.

Но после обучения
Data = context.Data.LoadFromTextFile<InputData>(DataPath, separatorChar: ',');
var model = pipeline.Fit(Data);


Нейросеть ошибается даже на тех же самых данных, что были в датасете.

Вот мой пайплайн:
var pipeline = context.Transforms.LoadImages(
                     outputColumnName: "image",
                     imageFolder: "",
                     inputColumnName: nameof(InputData.ImagePath))
                 .Append(context.Transforms.ResizeImages(
                     outputColumnName: "image",
                     imageWidth: ImageNetSettings.imageWidth,
                     imageHeight: ImageNetSettings.imageHeight,
                     inputColumnName: "image"))
                 .Append(context.Transforms.ExtractPixels(outputColumnName: "image"))
                 .Append(context.Transforms.ApplyOnnxModel(
                     modelFile: OnnxModel,
                     outputColumnNames: new[] { TinyYoloModelSettings.ModelOutput },
                     inputColumnNames: new[] { TinyYoloModelSettings.ModelInput }));


Вот сам метод predict()
if (imputImage != "")
            {
                Data = context.Data.LoadFromTextFile<InputData>(DataPath, separatorChar: ',');
                var model = pipeline.Fit(Data);

                Data = context.Data.LoadFromEnumerable(new List<InputData>() { new InputData() { ImagePath = imputImage } });
              
                var predictions = model.Transform(Data);
                var predictedData = context.Data.CreateEnumerable<OutputData>(predictions, reuseRowObject: false);

                var originalImage = Image.FromFile(imputImage);

                var resultImage = new Bitmap(originalImage);
                var resultGraphics = Graphics.FromImage(resultImage);
                resultGraphics.SmoothingMode = SmoothingMode.AntiAlias;

                List<float[]> probabilities = new List<float[]>();

                foreach (var prediction in predictedData)
                    probabilities.add(prediction.PredictedLabels);

                YoloOutputParser parser = new YoloOutputParser();

                var boundingBoxes =
                    probabilities
                    .Select(probability => parser.ParseOutputs(probability))
                    .Select(boxes => parser.FilterBoundingBoxes(boxes, 5, .5F));

                IList<YoloBoundingBox> detectedObjects = boundingBoxes.ElementAt(0);

                var drawing = new YoloBoundingBox();

                return (drawing.ToImageSource(drawing.DrawBoundingBox(imputImage, outputImage, "Лебедь", detectedObjects)), detectedObjects.Count());
            }
            return (null, 0);


Почему pipeline.Fit(Data)не работает?
  • Вопрос задан
  • 114 просмотров
Пригласить эксперта
Ответы на вопрос 1
@yamakasi_habr
брат нейросети на c# сочувствую
мой любимый язык но для нейронок дно
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы