Каждый день 2,5 квинтиллионных байтов данных создаются на основе исследования IBM. Многие из этих данных являются неструктурированными данными, такими как крупные тексты, аудиозаписи и изображения. Чтобы сделать что -то полезное с данными, мы должны сначала преобразовать его в структурированные данные.
В этом кодовом шаблоне мы будем использовать одну из моделей из модели Asset Exchange (MAX), обмена, где разработчики могут найти и экспериментировать с моделями глубокого обучения с открытым исходным кодом. В частности, мы будем использовать генератор подписи изображения для создания веб -приложения, которое будет подписать изображения, и позволит пользователю фильтровать содержимое изображений на основе изображений. Веб -приложение предоставляет интерактивный пользовательский интерфейс, поддерживаемый легким сервером Python с использованием Tornado. Сервер получает изображения через пользовательский интерфейс и отправляет их в конечную точку остановки для модели и отображает сгенерированные подписи на пользовательском интерфейсе. Конечная точка REST модели настроена с использованием изображения Docker, предоставленного на Max. Интернет -интерфейс отображает сгенерированные подписи для каждого изображения, а также интерактивное облако слов для фильтрации изображений на основе их подписи.
Когда читатель завершит этот шаблон кода, они поймут, как:

Ниже приведен разговор на Spark+AI Summit 2018 о Max, который включает в себя короткую демонстрацию веб -приложения.
Способы запуска шаблона кода:
Следуйте развертыванию модели DOC, чтобы развернуть модель генератора заголовка изображения в IBM Cloud. Если у вас уже есть конечная точка API модели, вы можете пропустить этот процесс.
Примечание: развертывание модели может занять время, чтобы продолжить работу быстрее, вы можете попробовать запустить локально.
Нажмите кнопку Deploy to IBM Cloud . Если у вас еще нет облачной учетной записи IBM, вам нужно будет создать ее.
Нажмите Delivery Pipeline и нажмите кнопку Create + в форме, чтобы сгенерировать IBM Cloud API Key для веб -приложения.

После того, как ключ API будет создан, разделы формы Region , Organization и Space будут заполнены. Заполните раздел Image Caption Generator Model API Endpoint с помощью конечной точки, развернутой выше, затем нажмите « Create .
Формат для этой записи должен быть
http://170.0.0.1:5000

В инструментах нажмите на Delivery Pipeline , чтобы посмотреть, пока приложение развернуто. После развертывания приложение можно просмотреть, нажав View app .

Вы также можете развернуть модель и веб -приложение на Kubernetes, используя последние изображения Docker на набережной.
На вашем кластере Kubernetes запустите следующие команды:
kubectl apply -f https://raw.githubusercontent.com/IBM/MAX-Image-Caption-Generator/master/max-image-caption-generator.yaml
kubectl apply -f https://raw.githubusercontent.com/IBM/MAX-Image-Caption-Generator-Web-App/master/max-image-caption-generator-web-app.yaml Веб -приложение будет доступно в порту 8088 вашего кластера. Модель будет доступна только внутри, но может быть доступна внешне через NodePort .
Примечание. Для развертывания веб -приложения на IBM Cloud рекомендуется следовать приведенным выше инструкциям IBM Cloud, а не развертыванию с помощью Service IBM Cloud Kubernetes.
Примечание. Эти шаги необходимы только при запуске локального уровня вместо использования кнопки
Deploy to IBM Cloud.
ПРИМЕЧАНИЕ. Набор инструкций в этом разделе представляет собой модифицированную версию той, которая найдена на странице проекта генератора подписи изображения.
Чтобы запустить изображение Docker, которое автоматически запускает модель, обслуживающую API, запустите:
docker run -it -p 5000:5000 quay.io/codait/max-image-caption-generator
Это вытащит предварительно построенное изображение из набережной (или использует существующее изображение, если уже кэшируется локально) и запустите его. Если вы предпочитаете построить модель локально, вы можете выполнить шаги в модели Readme.
Обратите внимание , что в настоящее время это изображение Docker является только процессором (мы добавим поддержку изображений GPU позже).
API -сервер автоматически генерирует интерактивную страницу документации Swagger. Перейдите в http://localhost:5000 чтобы загрузить его. Оттуда вы можете исследовать API, а также создать тестовые запросы.
Используйте конечную точку model/predict , чтобы загрузить тестовый файл и получить подписи для изображения из API.
Папка «Модель образцов» содержит несколько изображений, которые вы можете использовать для проверки API, или вы можете использовать свой собственный.
Вы также можете проверить его в командной строке, например:
curl -F " image=@path/to/image.jpg " -X POST http://localhost:5000/model/predict{
"status" : " ok " ,
"predictions" : [
{
"index" : " 0 " ,
"caption" : " a man riding a wave on top of a surfboard . " ,
"probability" : 0.038827644239537
},
{
"index" : " 1 " ,
"caption" : " a person riding a surf board on a wave " ,
"probability" : 0.017933410519265
},
{
"index" : " 2 " ,
"caption" : " a man riding a wave on a surfboard in the ocean . " ,
"probability" : 0.0056628732021868
}
]
}Клонировать репозиторий веб -приложения генератора изображений, выполнив следующую команду:
git clone https://github.com/IBM/MAX-Image-Caption-Generator-Web-App
ПРИМЕЧАНИЕ: вам может потребоваться
cd ..сначала из каталога Max-Image-Caption-Generator
Затем измените каталог в местный репозиторий
cd MAX-Image-Caption-Generator-Web-App
Перед запуском этого веб -приложения вы должны установить его зависимости:
pip install -r requirements.txt
Затем вы запускаете веб -приложение, запустив:
python app.py
После того, как он закончит обработку изображений по умолчанию (<1 минута), вы можете получить доступ к веб -приложению по адресу: http://localhost:8088
Конечная точка генератора заголовка изображения должна быть доступна по адресу http://localhost:5000 для успешного запуска веб -приложения.
Если вы хотите использовать другой порт или запускаете конечную точку ML в другом месте, вы можете изменить их с помощью параметров командной строки:
python app.py --port=[new port] --ml-endpoint=[endpoint url including protocol and port]
Чтобы запустить веб -приложение с Docker, контейнеры, работающие на веб -сервере, и конечной точке REST должны обмениваться тем же сетевым стеком. Это сделано в следующих шагах:
Измените команду, которая запускает конечную точку поколения генератора изображения, чтобы отобразить дополнительный порт в контейнере на порт на хост -машине. В примере ниже он сопоставлен с портом 8088 на хосте, но также можно использовать другие порты.
docker run -it -p 5000:5000 -p 8088:8088 --name max-image-caption-generator quay.io/codait/max-image-caption-generator
Создайте изображение веб -приложения с помощью работы:
docker build -t max-image-caption-generator-web-app .
Запустите контейнер веб -приложения, используя:
docker run --net='container:max-image-caption-generator' -it max-image-caption-generator-web-app
Вы также можете развернуть веб -приложение с последним изображением Docker, доступным на Quay.io, запустив:
docker run --net='container:max-image-caption-generator' -it quay.io/codait/max-image-caption-generator-web-app
Это будет использовать контейнер Docker Model, запускающийся выше и может быть запущен без клонирования веб -приложения локально.

В многоработанном веб -приложении есть большое количество загруженных пользователей изображений
При запуске веб -приложения по адресу
http://localhost:8088Страница администратора доступна по адресуhttp://localhost:8088/cleanup, которая позволяет пользователю удалять все загруженные файлы пользователя с сервера.[Примечание: это удаляет все загруженные пользователи изображения]

Этот шаблон кода лицензируется по лицензии на программное обеспечение Apache, версия 2. Отдельные объекты кода стороннего кода, вызванные этим шаблоном кода, лицензированы их соответствующими поставщиками в соответствии с их собственными отдельными лицензиями. Взносы подлежат сертификату происхождения разработчика, версии 1.1 (DCO) и лицензии на программное обеспечение Apache, версия 2.
FAQ лицензии на программное обеспечение Apache (ASL)