Распознавайте Экомаркировку С Помощью Azure Custom Vision Из Мобильного Приложения.

В этой статье я хочу рассказать об использовании сервиса Custom Vision для распознавания фотографий экомаркировок из мобильного приложения.

Служба CustomVision является частью облачных Cognitive Services на платформе Azure. Подробнее о том, какие технологии нам пришлось изучить, как работать с CustomVision, что это такое и чего позволяет достичь.



Распознавайте экомаркировку с помощью Azure Custom Vision из мобильного приложения.
</p><p>

Задача по распознаванию экомаркировок появилась три года назад, когда мы с женой начали обсуждать мобильное приложение, которое ее организация (НПО в сфере экологии) хотела сделать для распространения информации об экомаркировке.



Что такое экомаркировка?

«комаркировка» — сертификат и соответствующий логотип, выдаваемые сертифицирующими организациями, проверяющими продукцию или услуги производителя-поставщика на соответствие определенным критериям, связанным с жизненным циклом продукции-услуги и ориентированными на ее экологичность.

После сертификации производитель может размещать логотип экологической маркировки на своей продукции.

Экомаркировка также включает в себя маркировку пластика на основе его состава для упрощения сортировки и переработки и другие подобные знаки.

Например, вот знак:

Распознавайте экомаркировку с помощью Azure Custom Vision из мобильного приложения.
</p><p>



Процесс выбора технологии распознавания

Две основные функции приложения заключались в поиске магазинов с экотоварами и распознавании экомаркировок.

Если с поиском магазинов все относительно просто технологически, то с распознаванием не так уж и много.

Слово было модное, но как его сделать, было непонятно.

И я начал изучать вопрос.

Маркировочные логотипы стандартизированы и являются идеальными объектами для распознавания — наведите телефон на изображение на упаковке товара, сделайте фото, и приложение подскажет, что это за знак, что он означает и стоит ли ему доверять.

Я начал думать, как сделать распознавание и анализировать разные варианты - пробовал OpenCV с его алгоритмами распознавания (каскады Хаара, SWIFT, Сопоставление шаблонов и т.д.), но качество распознавания было не очень хорошим - не более 70% при обучении набор из нескольких десятков изображений.

Возможно, я где-то что-то не так понял и сделал что-то не так, но мы также попросили другого друга изучить эту тему, и он тоже сказал, что 70% на каскадах Хаара — это максимум на таком наборе данных.

Параллельно с этим все чаще стали появляться материалы о различных нейросетевых фреймворках и успешном использовании нейросетей для решения подобных задач.

Но везде я видел какие-то ужасающие размеры датасетов (сотни и тысячи изображений для каждого класса), незнакомые мне Python и TensorFlow, необходимость собственного бэкенда — всё это несколько пугало.

Как .

NET-разработчик, я смотрел Accord.NET, но не сразу нашел что-то подходящее.

В это время мы были заняты доработкой приложения и запуском его в производство, и я отложил процедуру признания.

Около года назад я наткнулся на статью, описывающую раннюю предварительную версию Custom Vision от Microsoft, облачного сервиса классификации изображений.

Протестировал на 3-х символах и мне понравилось - понятный портал, где можно без технических знаний обучить и протестировать классификатор, обучение набора из 100 изображений за 10-20 секунд, качество классификации выше 90% даже на 30 изображениях каждого символа - тогда что тебе нужно.

Я поделился своей находкой с женой, и мы начали делать менее функциональную международную версию приложения, которая не содержит информации о продуктах и магазинах, но умеет распознавать экомаркировки.

Перейдем к техническим деталям работающего приложения распознавания.



Пользовательское видение

CV является частью Cognitive Services в Azure. Теперь он готов к официальному выпуску, и счета за него будут взиматься из вашей подписки Azure, хотя он все еще указан в предварительной версии.

Соответственно, как и любой другой продукт Azure, CognitiveServices предоставляются и управляются на портале Azure. CV предоставляет два API REST — один для обучения, другой для прогнозирования.

Более подробно взаимодействие с Prediction я опишу позже.

Помимо портала Azure и API, пользователи CV имеют доступ к порталу customvision.ai, где они могут очень легко и наглядно загружать изображения, маркировать их, а также просматривать изображения и результаты распознавания, обработанные через API. Вы можете начать использовать портал и API customvision.ai без какого-либо подключения к Azure — проект создается для тестовых целей даже без подписки Azure. Но если вы хотите в будущем превратить свой тестовый проект в производственный, то лучше сделать это сразу, иначе нам пришлось вручную копировать изображения из тестового проекта и перемаркировать их в продакшене.

Для того, чтобы создать проект в Azure, вам необходимо зарегистрироваться там и создать подписку.

Это относительно несложно, проблемы могут возникнуть только со вводом и проверкой данных с банковской карты – иногда такое случается.

После регистрации вам необходимо создать экземпляр ComputerVision через портал Azure.

Распознавайте экомаркировку с помощью Azure Custom Vision из мобильного приложения.
</p><p>

После создания ресурсов в Azure они станут доступны в customvision.ai. На портале customvision.ai вы можете загружать изображения и отмечать их — тегов может быть несколько на одно изображение, но без выделения областей.

То есть изображение принадлежит нескольким классам, но на данном этапе разработки сервиса невозможно выделить в изображении конкретный фрагмент и отнести его к классу.

После разметки нужно начать обучение, нажав кнопку Обучить — обучение модели из 70 тегов и 3 тысяч изображений длится около 30 секунд. Результаты обучения сохраняются в сущности Iteration. Фактически управление версиями реализуется через Iteration. Каждую Итерацию можно использовать независимо - то есть можно создать Итерацию, протестировать результат и удалить его, если он не подходит, или изменить его на дефолтный и заменить текущую Итерацию по умолчанию, и тогда все распознавания от приложений будут приходить в модель из этой итерации.

Качество модели отображается в виде Precision и Recall (подробнее здесь ) как по всем классам сразу, так и по отдельности.



Распознавайте экомаркировку с помощью Azure Custom Vision из мобильного приложения.
</p><p>

Вот как выглядит проект с уже загруженными и обученными изображениями.



Распознавайте экомаркировку с помощью Azure Custom Vision из мобильного приложения.
</p><p>

На портале вы можете запустить распознавание изображений с диска или URL с помощью Быстрого теста и протестировать распознавание по одному изображению.

На вкладке «Прогнозы» можно увидеть результаты всех последних распознаваний — проценты принадлежности тегов отображаются прямо на картинке.



Распознавайте экомаркировку с помощью Azure Custom Vision из мобильного приложения.
</p><p>

Возможность увидеть все результаты распознавания и добавить их в обучающую выборку всего за пару кликов мыши очень полезна — это может сделать любой человек, не имеющий каких-либо знаний в области искусственного интеллекта или программирования.



Использование API

Custom Vision Service имеет очень простой и интуитивно понятный REST API для обучения и распознавания.

Наше приложение использует только API распознавания и я расскажу о его использовании.

URL-адрес для распознавания: https://southcentralus.api.cognitive.microsoft.com/customvision/v2.0/Prediction/{Your GUID проекта}/изображение Где южный центральный** – название региона Azure, в котором находится служба.

На данный момент услуга доступна только в южно-центральном регионе США.

Это не значит, что его можно использовать только там! Он просто живет там — вы можете использовать его из любого места, где есть Интернет. {GUID вашего проекта}** — идентификатор вашего проекта.

Его можно посмотреть на портале customvision.ai. Для распознавания необходимо отправить изображение POST. Вы также можете отправить общедоступный URL-адрес изображения, и сервис загрузит его самостоятельно.

Дополнительно в Заголовки необходимо добавить заголовок «Prediction-Key», которому необходимо передать один из Ключей доступа, которые будут выданы при регистрации — они доступны как на портале customvision.ai, так и на портале Azure. Результат содержит следующее поле:

  
   

"Predictions":[ {"TagId":"35ac2ad0-e3ef-4e60-b81f-052a1057a1ca","Tag":"dog","Probability":0.102716163}, {"TagId":"28e1a872-3776-434c-8cf0-b612dd1a953c","Tag":"cat","Probability":0.02037274} ]

Где Вероятность указывает вероятность того, что изображение принадлежит указанному тегу (классу).

На С# это выглядит так

var client = new HttpClient(); client.DefaultRequestHeaders.Add("Prediction-Key", "{Acess key}"); string url = " https://southcentralus.api.cognitive.microsoft.com/customvision/v2.0/Prediction/{Your project GUID}/image"; HttpResponseMessage response; List<RecognitionResult> recognitions = new List<RecognitionResult>(); using (var content = new ByteArrayContent(imageBytes)) { content.Headers.ContentType = new MediaTypeHeaderValue ("application/octet-stream"); response = await client.PostAsync(url, content); if (response.IsSuccessStatusCode) { string strRes = await response.Content.ReadAsStringAsync(); dynamic res = (dynamic) JsonConvert.DeserializeObject(strRes); foreach (var pr in res.predictions) { recognitions.Add( new RecognitionResult() { Tag = pr.tagName, RecognPercent = pr.probability }); } } else { Debug.WriteLine( "Non successful response. " + response.ToString()); } }

Как видите, абсолютно ничего сложного нет. Вся магия происходит на стороне сервиса.



Приложение и некоторые выбранные параметры.

Приложение достаточно простое и состоит из списка экомаркировок, информации о том, что такое экомаркировки, как они делятся, и самого сканера.

Основная часть написана на Xamarin.Forms, но окно сканера работает с камерой и его пришлось делать в виде рендеров и реализовывать для каждой платформы отдельно.

Уровень, при котором приложение решает, что экомаркировка распознана точно, составляет > = 90%; почти все изображения распознаются, если они более-менее приемлемого качества и на снимке отсутствуют другие признаки.

Это число было получено эмпирическим путем — мы начали с 80, но поняли, что 90 снижает количество ложных срабатываний.

А их довольно много – многие маркировки схожи и содержат схожие элементы, а цветовая гамма смещена в сторону зеленого цвета.

Например, это не очень качественное изображение распознается правильно с точностью 91%.



Распознавайте экомаркировку с помощью Azure Custom Vision из мобильного приложения.
</p><p>

B, в данном случае этот класс обучался на 45 изображениях.

Надеюсь, статья оказалась полезной и позволит заинтересованным читателям взглянуть на новые инструменты искусственного интеллекта и машинного обучения.

Теги: #Разработка мобильных приложений #Microsoft Azure #искусственный интеллект #c++ #.

NET #xamarin #Azure Custom Vision #Распознавание изображений

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.