В предыдущих статьях мы анализировали объекты на изображениях с помощью 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 здесь.