В предыдущих статьях мы анализировали объекты на изображениях с помощью TensorFlow Object Detection API, применяя различные типы моделей. (Статья 1, Статья 2)
В этих примерах решение всегда разрабатывалось для консольного приложения (т. Е. Сценария Python, выполняемого локально).
Теперь наша задача - перенести его в веб-среду, обнаруживать объекты на фотографии (например, рентгеновский снимок) и, наконец, мы должны предложить простой вариант архитектуры. .
Обзор
Можно было подумать о нескольких вариантах архитектуры с использованием схемы сервера (пример из официальной документации TensorFlow Serving). Мы могли бы даже подумать о традиционных альтернативах (например, Apache, Nginx и т. Д.), Но мы должны подумать о монтировании веб-сервера и настроить все элементы для выполнения анализа с помощью TensorFlow.
Мне понравилась идея использования схемы платформы, такой как App Engine, но реализовать нашу идею сложно для такой среды, как традиционная среда App Engine (мы могли бы придумать решение с Работники PubSub и виртуальных машин, но следовало бы подумать о более сложном), поэтому ... чтобы решить нашу задачу, я буду использовать Гибкую среду App Engine.
Предложенное решение
Предлагаемая архитектура
Проект гибкой среды App Engine
- app.yaml
- main.py
- шаблоны / index.html
Подробнее о Гибкой среде App Engine
Порядок оценки фотографий:
- Основные зависимости Flask (0.12.2), TensorFlow (1.2.1) в дополнение к этим элементам поддержки, numpy, Image, cStringIO, urllib.
Для использования этого примера вам потребуются следующие минимальные элементы API обнаружения объектов TensorFlow:
- Модели [папка]
- Proto [папка]
- Утилиты [папка]
Примечание: если вам нужно скачать тестовый-функциональный-файл, здесь я готовлю рабочую версию.
Кроме того, нам необходимо иметь в нашем решении замороженный_граф_инференции модели. Для нашего примера:
- Ssd_mobilenet_v1_coco_11_06_2017 (если вам нужно больше предустановок, можно сменить эту модель)
Примечание: если вам нужно скачать тестовый-функциональный-файл, здесь я готовлю рабочую версию.
В нашем примере мы используем COCO как схему распознавания объектов, поэтому нам нужны теги распознавания для анализа.
- данные / mscoco_label_map.pbtxt
Примечание: если вам нужно скачать тестовый-функциональный-файл, здесь я готовлю рабочую версию.
Здесь я оставляю решение, реализованное (начальная фаза) из этого репозитория Github.
Разверните проект
- Локальный: python main.py
- Производственная среда: развертывание приложения gcloud
* (- v версия), если вы хотите развернуть его до определенной версии.
Примечание: у вас должен быть Google Cloud SDK. Подробнее о гибкой среде App Engine, Python здесь.