Я относительно свободен sh для машинного обучения, Xamarin и. NET в целом - впервые за все время использую ML. NET.
Недавно обучил модель обнаружения объектов в TensorFlow, я хотел интегрировать его с разрабатываемым приложением Xamarin. Нашел несколько руководств, объясняющих, как импортировать файл .pb с помощью ML. NET и выполнить вывод с помощью PredictionEngine (https://devblogs.microsoft.com/cesardelatorre/run-with-ml-net-c-code-a-tensorflow-model-exported-from-azure-cognitive-services-custom-vision/).
Я добился довольно стабильного прогресса, пока не нажал этот ошибка при вызове метода Predict для экземпляра PredictionEngine:
System.PlatformNotSupportedException: 'System.Drawing is not supported on this platform.'
This exception was originally thrown at this call stack:
System.Drawing.Bitmap.Bitmap(string)
Microsoft.ML.Data.ImageLoadingTransformer.Mapper.MakeGetterImageDataViewType.AnonymousMethod__0(ref System.Drawing.Bitmap)
Microsoft.ML.Transforms.Image.ImageResizingTransformer.Mapper.MakeGetter.AnonymousMethod__1(ref System.Drawing.Bitmap)
Microsoft.ML.Transforms.Image.ImagePixelExtractingTransformer.Mapper.GetGetterCore.AnonymousMethod__1(ref Microsoft.ML.Data.VBuffer<TValue>)
Microsoft.ML.Transforms.TensorFlowTransformer.TensorValueGetterVec<T>.GetTensor()
Microsoft.ML.Transforms.TensorFlowTransformer.Mapper.UpdateCacheIfNeeded(long, Microsoft.ML.Transforms.TensorFlowTransformer.ITensorValueGetter[], string[], Microsoft.ML.Transforms.TensorFlowTransformer.Mapper.OutputCache)
Microsoft.ML.Transforms.TensorFlowTransformer.Mapper.MakeGetter.AnonymousMethod__4(ref Microsoft.ML.Data.VBuffer<T>)
Microsoft.ML.Data.TypedCursorable<TRow>.TypedRowBase.CreateDirectVBufferSetter.AnonymousMethod__0(TRow)
Microsoft.ML.Data.TypedCursorable<TRow>.TypedRowBase.FillValues(TRow)
Microsoft.ML.PredictionEngineBase<TSrc, TDst>.Predict(TSrc)
...
[Call Stack Truncated]
Ниже приведены некоторые из установленных мной пакетов NuGet:
- Microsoft.ML 1.4.0
- Microsoft.ML.TensorFlow 1.4.0
- Microsoft.ML.ImageAnalytics 1.4.0
- Microsoft.NETCore.UniversalWindowsPlatform 6.2.9
- NETStandard.Library 2.0. 3
- SciSharp.TensorFlow.Redist 1.15.0
- Xamarin.Essentials 1.2.0
- Xamarin.Forms 4.2.0.709249
I ' Я пытаюсь построить для x64 UWP. Не могу найти эту ошибку в этом контексте в другом месте онлайн. Этот вопрос является наиболее похожим, но он мне совсем не помогает: ML. NET не работает на uwp .
Я почти уверен, что понимаю, что говорит ошибка - как указано в ранее связанном вопросе SO:
Это стандартное исключение. NET, которое происходит, когда библиотека пытается получить доступ к API, который фактически не реализован на платформе.
Реальный вопрос в том, почему я бью это, если платформы, которые я использую, совместимы с ML. NET 1.4.0?
Из того, что я могу сказать, ML. NET должен быть в состоянии работать на платформах UWP (https://docs.microsoft.com/en-us/windows/ai/windows-ml/get-started-uwp) и x64 (https://github.com/dotnet/machinelearning), так чего мне не хватает?
Любой идеи / советы очень ценятся.