Вопрос к разработчикам проектов по распознаванию образов. Как лучше организовать архитектуру подобного сервиса?
Сейчас склоняюсь к решению использовать для работы с данными (а особенно для обучения) специализированные GPU-инстансы Amazon EC2 P2. На серверах установлено ПО только для работы искусственных нейронных сетей (Python, Anaconda, Keras, TensorFlow). В production-режиме сервер на вход принимает изображения с метаданными (как именно обработать изображение и какие данные вернуть), на выходе возвращает JSON-массив в зависимости от типа метаданных. Никакой особой логики там не хранится, вся аналитика происходит на серверах web-приложений.
Обучающие и тестовые выборки хранятся в отдельном кластере (обычные сервера с большим дисковым пространством). Туда же загружаются изображения из сети найденные собственными поисковыми ботами (через соцсети и поисковые системы).
Взаимодействие web-приложения с нейронной сетью осуществляется через API-запросы к GPU-серверам. Далее результат уже выдается на клиенты (аналогично с клиентов все идет на web-приложение, а затем на обработку в нейронную сеть).
Теперь основные вопросы:
На каком участке вы проводите аналитику? (например, чтобы определить, что на фотографии на человеке надет синий мужской пиджак к нейронной сети выполняется каскад запросов "поиск мужчины"->"поиск пиджака"->"определение цвета пиджака". для получения более высокого качества ответа и снижения нагрузки на сеть каждый запрос выполняется отдельно при утвердительном предыдущем). Имеет ли смысл реализовывать все варианты поиска в рамках единой нейросети или лучше создать множество отдельных нейросетей, заточенных под достаточно простые задачи?
Как вы оптимизируете потребление ресурсов на этапах обучения и работы сети? Пока на уме только вариант с созданием специализированного GPU-кластера под обучение в рамках облачного хостинга и его периодическое включение по мере надобности (иначе дорого получается).
Ответ
Ваши вопросы говорят о том что, вы не осознаете всей сложности проблемы поиска мужчины на фото, не говоря уж о поиске пиджака. Хотя бы найти объект произвольного размера на фото по меркам на конец 2017 года - это уже передний край науки.
Сначала начните с простого. Попытайтесь хотя бы в общих чертах решить вашу проблему, о которой ни слова в вопросе. Арендуете ли вы для этого один сервер, или купите подходящую видеокарту - дело второе. Можно и без видеокарт. Как только вы поймете что для радикального уменьшения ошибки обучения вам нужны годы на ваших мощностях, тогда можно будет говорить об аренде кластера. И тогда вы можете обратиться к документации на TensorFlow чтобы узнать как конкретно решаются подобные проблемы.
Комментариев нет:
Отправить комментарий