У меня есть веб-сайт с бэкэндом на Python (Django) и JavaScript, размещенный на героку. Кроме того, у меня есть код на Python, который выполняет классификацию изображений с помощью EfficientNet, поэтому я хочу интегрировать этот код в свой веб-сайт.
Логическая последовательность идей такова:
Пользователь загружает изображение на сайт;
Это изображение будет классифицировано с помощью кода Python;
Алгоритм вернет изображение;
Возвращаемое изображение должно быть размещено на сайте.
Кто-нибудь знает, как лучше всего это сделать?
CNN, код Google Colab выполняет классификацию с помощью EfficientNet.
Прежде всего, да, если можно реализовать то, о чем вы говорите, я бы реализовал следующее:
Используйте сельдерей для реализации асинхронных задач, когда при загрузке фотографии Django сообщает сельдерея, что он должен выполнить асинхронную задачу (в данном случае использовать CNN) и может оставить статус ожидания для фотографии, и как только задача будет завершена, она меняет статус и будет отображаться опубликованным на платформе.
Я рекомендую использовать для этого асинхронные задачи по следующим причинам:
Использование сверточной нейронной сети может занять определенное время, давайте вспомним, что по умолчанию максимальное время ответа HTTP-запроса составляет 30 секунд, и это может сократить запрос, пользователь увидит это как ошибку, и он также может пожаловаться, потому что загрузка фотографии должна подождать некоторое время, и для целей пользователя они будут думать, что сайт работает медленно. Реализация асинхронных задач позволяет, во-первых, в HTTP-запросе указать пользователю, что изображение анализируется, а во-вторых, у вас нет ограничения в 30 секунд для анализа, в случае одновременной загрузки большого количества изображений может произойти сбой. сервер. Вот почему с сельдереем вы даже можете реализовать очереди для решения этой проблемы (используя редис или кроликMQ).
Если вы хотите реализовать знание статуса изображения в режиме реального времени, вы можете добавить использование веб-сокет, где при загрузке изображения в ответ вы получаете URL-адрес, который является одним из веб-сокетов, где вы будете получать информацию о изображение после обработки. Вы можете использовать Джанго-каналы для этого
Вы имеете в виду CNN или CDN?