Распознавание объектов с помощью PowerAI Vision

d9h9fpfkqpi3u_hduzxesribaii.jpeg

Разработчики программного обеспечения уже несколько лет активно работают с библиотеками машинного обучения, решая задачи компьютерного зрения и обнаружения объектов. Но реализация таких задач (а каждую модель машинного обучения необходимо спроектировать, развернуть, собственно обучить, настроить и установить) обычно требует глубоких знаний и навыков. С новым продуктом IBM PowerAI Vision Вы можете этого избежать. Этот продукт предоставляет интерфейс, в котором можно обучать, настраивать и тестировать свою собственную модель, не углубляясь в детали реализации машинного обучения.

В этой инструкции я расскажу как использовать PowerAI Vision, чтобы обучить систему и создать готовый к использованию сервис REST API, который можно использовать для обнаружения и распознавания объектов в Ваших приложениях.

PowerAI Vision — Technology Preview


По состоянию на декабрь 2017 года PowerAI Vision доступен для тестирования как программный продукт Technology Preview (доступен для свободного скачивания на странице developerWorks), который устанавливается на серверах Power Systems. Если такого сервера у Вас нет, этот продукт можно протестировать (совершенно бесплатно!) в облаке SuperVessel.
Примечание. Эта инструкция описывает работу с PowerAI Vision Technology Preview версии 3.0.

Задача


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

  • Создать и разметить наборы данных (DataSet) для обнаружения объектов
  • Тренировать и применить обученную модель на наборе данных
  • Тестировать модели с помощью REST сервисов


Детали настройки фреймворков, подключение и использование графических ускорителей GPU, развертывание и настройка сервисов REST осуществляется автоматически, внутри продукта. Однако некоторые настройки обучения доступны через интерфейс администрирования.
Конечным результатом является готовый к использованию REST API для обнаружения объектов.

Что нужно для распознавания?

Коллекция примеров изображений


Вы можете создать собственную коллекцию изображений на основе того сценария, который хотите реализовать. Вот на какие вопросы поможет дать ответ PowerAI Vision:

  • Где находятся объекты на изображении?
  • Сколько объектов находится на изображении?


Для примера возьмем фотографии бутылок Coca-Cola. Наша цель — создать приложение, которое может найти и подсчитать бутылки на изображениях или видеофрагментах.

Установка PowerAI Vision на Power System


Если у Вас уже есть сервер IBM Power с установленной GPU Nvidia, вы сможете установить PowerAI Vision для тестирования. Перейдите по ссылке и выберите «On Premise» — «Download Now». Скачайте PowerAI Vision и установите его.

ny63cywgeehn2uxsyfmhrzbjcgy.png
Примечание. Примеры в этой статье предполагают, что вы используете SuperVessel — облачный сервис для тестирования продуктов PowerAI.

Сколько времени потребуется?


Шаги подготовки и развертывания модели в облаке SuperVessel не займут много времени (менее часа), но с учетом обучения модели весь процесс может занять час-полтора. Это время, конечно же, зависит от сложности набора данных и других факторов.

Создаем и обучаем модель

Используем облако SuperVessel


Зарегистрируйтесь в облачном сервисе SuperVessel (это бесплатно).

Создайте набор данных (DataSet)


PowerAI Vision поддерживает две модели машинного обучения:

  • Object Detection — обнаружение и распознавание объектов на изображении
  • Image Classification — классификация  объектов на изображении


Модель обнаружения объектов (PowerAI Vision Object Detection) позволит обнаружить и распознать объекты на изображении, а также подсчитать их количество. В рамках данной статьи мы рассмотрим обучение именно этой модели.

Создайте новый набор данных для обучения модели:

  • В представлении «My Data Sets» нажмите кнопку «Add Dataset», а затем выберите «For Object Detection» в выпадающем списке:


fx2towjc_uqp6cbgghavzboh_q4.png

  • Придумайте имя Вашему набору данных (например, «Coke Bottles») и нажмите «Add Dataset»:


fx2towjc_uqp6cbgghavzboh_q4.png

  • Загрузите одно или несколько изображений, перетянув их на серый прямоугольник, или нажмите кнопку «Select some», после чего выберите и загрузите изображения с локального диска:


4xmjpwt9zinglngvrjqnfynn4pc.png

  • Вы можете загрузить несколько изображений одновременно в zip архиве.


wlw4mu9em1w90uauvpjpplgtmx4.png
Примечание. Если вы загрузили zip-файл и не видите миниатюры файлов после загрузки, значит загрузка не удалась. Попробуйте использовать строчные имена файлов без специальных символов или пробелов. Можете попробовать загрузить файлы по отдельности, чтобы определить, какой файл вызвал проблему.

Создайте теги и промаркируйте объекты


  • Создайте один или несколько тегов, щелкнув значок +, чтобы добавить новый. На каждый тип объекта, подлежащий распознаванию, необходимо создать отдельный тег.
  • Промаркируйте объект в изображении (назовём такой процесс разметкой) — кликните сначала на тег, а затем — на изображении, вокруг соответствующего объекта, в результате чего появится ограничивающий его прямоугольник. Нажмите Save, когда закончите разметку объекта для данного тега.
  • Повторите этот процесс сначала для всех тегов на фото, а затем и для всех изображений. Вот пример такого размеченного изображения:


a85diakbco3fl3pudzerjxdtndm.png
Совет. Используйте опцию «Only Show Unlabeled Files», чтобы не видеть уже размеченные фото.

  • Нажмите «Export As Zip File», чтобы скачать подготовленный Dataset. Теперь, когда вы потратили некоторое время на маркировку, этот zip-файл позволит вам не потерять результат проделанной работы.


Создание DL (Deep Learning) задачи


  • Нажмите на My DL в разделе My Workspace, а затем нажмите кнопку Create New Task, далее — Object Detection.
  • Присвойте объекту Detector имя и убедитесь, что вы выбрали нужный набор данных, затем нажмите Build Model


dnswg5_w8d1ijb3i70k0p2164rk.png

Развертывание и тестирование

  • После того, как модель будет обучена (процесс обучения можно контролировать визуально), нажмите Deploy and Test.


mtsr3yzawvwl-drzlcj_gewmq8k.png

  • Протестируйте построенную модель в пользовательском интерфейсе PowerAI Vision: нажмите Select, чтобы загрузить изображение для проверки. После загрузки внизу будет показано изображение с найденными объектами и оценкой точности распознавания. В нашем примере — три бутылки Coca-cola с точностью 99.9%


kzomqfbpagcol61osyzviz3oa3w.png

  • Из командной строки Вы можете протестировать программный интерфейс REST сервиса с помощью команды curl и файла изображения. Обратите внимание, что JSON обнаружил несколько бутылок и указал тег и местоположение для каждого из них.


$ curl --insecure -i -F files=@coke_bottle_23.png https://ny1.ptopenlab.com/AIVision/api/dlapis/9f9d6787-0183-4a1b-be49-751b6ca16724
HTTP/1.1 100 Continue

HTTP/1.1 200 OK
Server: nginx/1.9.13
Date: Thu, 14 Dec 2017 21:58:26 GMT
Content-Type: application/json
Content-Length: 508
Connection: keep-alive
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: origin, content-type, accept, authorization
Access-Control-Allow-Credentials: true
Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS, HEAD
Access-Control-Allow-Origin: *

{ "classified" : [ { "confidence" : 0.9986369013786316 , "ymax" : 578 , "label" : "coca-cola" , "xmax" : 755 , "xmin" : 588 , "ymin" : 29} , { "confidence" : 0.9954010248184204 , "ymax" : 592 , "label" : "coca-cola" , "xmax" : 601 , "xmin" : 437 , "ymin" : 10} , { "confidence" : 0.8161203265190125 , "ymax" : 567 , "label" : "coca-cola" , "xmax" : 426 , "xmin" : 259 , "ymin" : 17}] , "imageUrl" : "http://ny1.ptopenlab.com:443/AIVision/temp/5a26dd3b-d8ba-4e01-8b93-5a43f28e97c7.png" , "result" : "success"}


Облачная бесплатная версия ограничивает использование REST API в 1 час работы после развертывания. После остановки сервиса для возобновления работы его можно перезапустить снова

Краткие итоги


Вы увидели, как машинное обучение может работать с образцами изображений и создавать API обнаружения объектов. Поскольку в итоге разворачивается полноценный REST API, которая возвращает результаты в JSON, его легко использовать в любом приложении.
PowerAI Vision прост и быстр в использовании, предоставляя возможности GPU для ускорения обучения.

Точность предсказания будет зависеть от качества и размера тестовой выборки. Если набор данных, используемый для экспериментов, будет слишком мал, то это может повлиять на качество полученных результатов… Качество обучения зависит от времени и данных. Вы можете увеличить свой набор данных и таким образом улучшить свои результаты.

P.S.
Увидеть PowerAI Vision, попробовать его в действии, обсудить интересные сценарии использования платформы с экспертами IBM Вы сможете на стенде IBM на конференции Opentalks.AI.

Дополнительная литература
Оригинал статьи на английском языке;
Object Detection: Object detection on Wikipedia;
PowerAI Vision: Deep Learning and PowerAI Development
TensorFlow Object Detection: Supercharge your Computer Vision models with the TensorFlow Object Detection API
AI Article: Can Artificial Intelligence Identify Pictures Better than Humans?
From the developers: IBM PowerAI Vision speeds transfer learning with greater accuracy — a real world example

Несколько видео о продукте:
www.youtube.com/watch? v=0F5w6q0ZpBI
www.youtube.com/watch? v=nWft6tYVdrc
www.youtube.com/watch? v=qHZRnswzqUI

© Habrahabr.ru