Интеграция настраиваемой службы IBM Watson Visual Recognition с Flutter / Dart

Я создал и обучил пользовательскую модель визуального распознавания в IBM Cloud. Я хочу подключить его к своему приложению, которое я создаю с помощью Flutter. Я просмотрел ссылку на документ IBM API ниже, и все работало хорошо, но не говорится о подключении его к вашему приложению.

https://cloud.ibm.com/apidocs/visual-recognition/visual-recognition-v3#classify-images

Я пробовал использовать пакет flutter_ibm_watson из pub.dev (пакет сильно устарел и имеет много проблем, но я все равно попробовал). Я подключил свой ключ API и URL-адрес, но он даже не выводил результат изображения из классификаторов. Он просто определил, что это за изображение (например, изображение небоскреба вернулось как «небоскреб»).

IamOptions options = await IamOptions(iamApiKey: "NRDjngCby2d-pSHOPyWQJxhuB6vOY2uOTCX6KV2BCfwB", url: "https://api.us-south.visual-recognition.watson.cloud.ibm.com/instances/ef286f4e-84c7-44e0-b63d-a6a49a142a30").build();
VisualRecognition visualRecognition = new VisualRecognition(iamOptions: options, language: Language.ENGLISH); // Language.ENGLISH is language response
ClassifiedImages classifiedImages = await visualRecognition.classifyImageUrl("https://starindojaya.com/images/products/PAPER_CUP_PAPERCUP_2_OZ.jpg");
print(classifiedImages.getImages()[0].getClassifiers()[0].getClasses()[0].className);

Я также загрузил файл CoreML, как указано в документации по API, но не знаю, что с ним делать. Кстати, я заставил свое приложение подключаться к моей пользовательской модели визуального распознавания через класс StreamMyClassifier во Flutter, и это сработало очень хорошо. Тем не менее, я также хотел, чтобы оценка уверенности также отображалась пользователю. Я был бы признателен, если бы вы могли помочь. Все помогает. Спасибо.


person Gautham Hari    schedule 26.07.2020    source источник


Ответы (1)


Ваша команда печати печатает имя класса верхнего класса, верхнего классификатора 1-го изображения, которое вы отправили. Так что запись skyscraper работает как надо. Если вам нужны все классификаторы, измените свой print на:

print(classifiedImages.getImages()[0].getClassifiers());

Если у вас есть настраиваемый классификатор, вам необходимо передать параметр, чтобы сообщить службе. Вы можете сделать это, установив для параметра owner значение me или установив classifier_ids для включения идентификатора вашего классификатора. Оба являются массивами, поэтому не забудьте заключить их в []. Если вы укажете оба варианта, предпочтение будет отдано classifier_ids.

Модель Core ML используется для запуска Visual Recognition на устройствах iOS / MacOS с Apple Core ML. Обычно разрабатывается с помощью Swift на Xcode.

person chughts    schedule 27.07.2020
comment
Извините, если я не понял. Моя визуальная модель не имеет ничего общего с классификацией изображений, подобных небоскребам. Я просто использовал это как тестовое изображение. Моя модель должна классифицировать, пригоден ли объект для вторичной переработки, компоста или захоронения. Однако каждый раз, когда я вставляю изображение, например бумажный стаканчик, я просто получаю бумажный стаканчик, поэтому кажется, что я просто использую общий классификатор визуальных изображений от IBM. Спасибо - person Gautham Hari; 29.07.2020
comment
См. Мой измененный ответ. - person chughts; 29.07.2020
comment
Извините, я был не в сети какое-то время. Не могли бы вы переписать заявление в комментарии относительно того, что вы имеете в виду под идентификаторами владельца, меня и классификатора? - person Gautham Hari; 18.09.2020
comment
Я не узнаю SDK, который вы используете, поэтому не могу сказать вам, как передать параметр owner. Если вы используете один из SDKS ibm-watson, тогда в документации API есть примеры, которые показывают, как - cloud.ibm.com/apidocs/visual-recognition/ - person chughts; 29.09.2020