Введение

В сфере компьютерного зрения алгоритм «Вы только посмотрите один раз» (YOLO) стал переломным моментом. Он обещает обнаружение объектов в реальном времени с поразительной точностью, что делает его мощным инструментом для самых разных приложений — от наблюдения и автономных транспортных средств до анализа изображений и видео. Однако истинный потенциал YOLO можно использовать только тогда, когда он легко интегрирован в практические, реальные системы. Именно здесь FastAPI, современная и быстрая веб-инфраструктура для создания API с помощью Python, выступает в качестве вашего партнера в легком развертывании моделей YOLO.

Представьте себе возможность развернуть модель YOLO в веб-приложении, позволяя пользователям выполнять обнаружение объектов в реальном времени с помощью простого вызова API. Независимо от того, создаете ли вы интеллектуальную систему безопасности, приложение для мониторинга дикой природы или платформу розничной аналитики, это руководство проведет вас через весь процесс: от настройки среды разработки до развертывания полнофункциональной модели YOLO с использованием FastAPI.

Углубившись в это руководство, вы раскроете магию YOLO — как он может идентифицировать объекты на изображениях и видео в мгновение ока. Вы также овладеете искусством интеграции этого мощного алгоритма с FastAPI — платформой, предназначенной для разработчиков, которые ценят скорость и простоту. К концу этого пути у вас будут инструменты и знания для создания собственных API-интерфейсов обнаружения объектов в реальном времени, которые можно будет развернуть в облаке, на локальном сервере или даже на периферийных устройствах.

Итак, независимо от того, являетесь ли вы опытным инженером по компьютерному зрению или любопытным разработчиком, стремящимся изучить мир YOLO и FastAPI, пристегните ремни безопасности. Мы собираемся начать шаг за шагом путь к профессиональному развертыванию моделей YOLO. Готовы воплотить свои мечты об обнаружении объектов в реальность? Давайте начнем!

Раздел 1: Настройка среды

Прежде чем мы погрузимся в мир развертывания моделей YOLO с помощью FastAPI, нам необходимо убедиться, что наша среда разработки настроена правильно. Этот раздел проведет вас через весь процесс шаг за шагом.

1.1. Установить Python

Прежде всего, убедитесь, что в вашей системе установлен Python. Вы можете скачать последнюю версию Python с официального сайта (https://www.python.org/downloads/) или использовать менеджер пакетов, например Anaconda.

Чтобы проверить, установлен ли уже Python, откройте терминал или командную строку и запустите:

python - version

1.2. Создайте виртуальную среду

Чтобы изолировать зависимости нашего проекта, рекомендуется создать виртуальную среду. Таким образом, вы сможете избежать конфликтов между разными проектами.

Давайте создадим виртуальную среду, используя встроенный в Python модуль venv. Откройте терминал и перейдите в корневой каталог вашего проекта. Выполните следующие команды:

# Create a virtual environment (replace 'myenv' with your preferred environment name)
python -m venv myenv
# Activate the virtual environment (Windows)
myenv\Scripts\activate
# Activate the virtual environment (macOS/Linux)
source myenv/bin/activate

Вы должны увидеть изменение приглашения терминала, указывающее, что виртуальная среда активна.

1.3. Установить зависимости

Теперь, когда вы работаете в своей виртуальной среде, пришло время установить необходимые зависимости. К ним относятся FastAPI, Uvicorn (для обслуживания приложений FastAPI), библиотеки, связанные с YOLO, и любые дополнительные пакеты, которые могут вам понадобиться для вашего проекта.

Используйте pip для установки этих зависимостей:

pip install fastapi uvicorn opencv-python-headless numpy

1.4. Настройка модели YOLO

Для работы с YOLO вам потребуется установить библиотеку yolov8 от ultralytics.

pip install ultralytics

После настройки среды разработки вы готовы погрузиться в захватывающий мир YOLO и FastAPI. В следующих разделах мы рассмотрим, как использовать возможности YOLO для обнаружения объектов в реальном времени и создать приложение FastAPI для его обслуживания. Давайте продолжим!

Примечание. Не забудьте заменить «myenv» на предпочитаемое имя виртуальной среды.

Раздел 2. Создание приложения FastAPI

Теперь пришло время засучить рукава и приступить к созданию приложения FastAPI для развертывания модели. Этот раздел проведет вас через процесс настройки основы вашего API обнаружения объектов.

2.1. Структура проекта

Начнем с организации структуры нашего проекта. Создайте каталог для вашего проекта FastAPI и перейдите в него:

mkdir object_detection_api
cd object_detection_api

В этом каталоге проекта вы будете создавать файлы и папки для различных компонентов вашего приложения FastAPI.

2.2. Инициализируйте приложение FastAPI

FastAPI значительно упрощает начало создания веб-приложений. Создайте скрипт Python для вашего приложения FastAPI, обычно с именем main.py:

touch main.py

Теперь давайте начнем писать код. Откройте main.py в вашем любимом текстовом редакторе или IDE и импортируйте FastAPI:

from fastapi import FastAPI
app = FastAPI()

Поздравляем! Вы только что инициализировали приложение FastAPI. Это приложение послужит основой для вашего API обнаружения объектов.

2.3. Создание вашего первого маршрута

В FastAPI вы определяете маршруты с помощью функций Python. Давайте создадим простой «Hello, World!» Маршрут как отправная точка. Добавьте следующий код в main.py:

@app.get("/")
async def read_root():
 return {"message": "Hello, World!"}

Этот код определяет маршрут, который отвечает на запрос GET по корневому URL-адресу («/») и возвращает ответ JSON с «сообщением».

2.4. Запуск приложения FastAPI локально

Теперь пришло время протестировать ваше приложение FastAPI локально. Откройте терминал и перейдите в каталог проекта, содержащий main.py. Активируйте свою виртуальную среду, если вы еще этого не сделали:

source myenv/bin/activate # Replace 'myenv' with your environment name

Затем используйте Uvicorn для запуска приложения FastAPI:

uvicorn main:app - reload

Эта команда сообщает Uvicorn запустить объект app из модуля main.py и включает автоматическую перезагрузку для разработки.

Вы должны увидеть выходные данные, указывающие, что ваше приложение FastAPI работает локально. По умолчанию он работает по адресу http://127.0.0.1:8000.

4.5. Доступ к маршруту Hello World

Откройте веб-браузер или используйте такой инструмент, как «curl», чтобы получить доступ к «Hello, World!» маршрут:

curl http://127.0.0.1:8000/

Вы должны получить ответ в формате JSON с текстом «Hello, World!» сообщение.

Когда ваше приложение FastAPI запущено и работает, вы готовы перейти к самой захватывающей части: интеграции модели YOLOv8 для обнаружения объектов. В следующих разделах мы рассмотрим, как подготовить модель YOLOv8 и легко интегрировать ее с FastAPI. Продолжим наше путешествие!

Раздел 3. Интеграция YOLOv8 с FastAPI

Теперь, когда у нас есть приложение FastAPI, давайте углубимся в процесс интеграции модели YOLOv8 для обнаружения объектов в реальном времени. Этот раздел проведет вас через шаги, необходимые для беспрепятственного объединения YOLOv8 с FastAPI.

3.1. Загрузка модели YOLOv8

Давайте начнем с загрузки модели YOLOv8 в ваше приложение FastAPI. Откройте main.py и добавьте следующий код в начало файла, чтобы импортировать необходимые модули:

import cv2
import numpy as np
from ultralytics import YOLO

3.2. Создание маршрута обнаружения объектов

Теперь давайте создадим маршрут в FastAPI, который будет принимать изображение для обнаружения объекта. Определите новую функцию маршрута следующим образом:

from fastapi import File, UploadFile
model = YOLO("yolov8n.pt")

@app.post("/detect/")
async def detect_objects(file: UploadFile):
 # Process the uploaded image for object detection
 image_bytes = await file.read()
 image = np.frombuffer(image_bytes, dtype=np.uint8)
 image = cv2.imdecode(image, cv2.IMREAD_COLOR)
 
 # Perform object detection with YOLOv8
 detections = model.predict(image)
 
 return {"detections": detections}

Здесь мы создаем маршрут с именем `/detect/`, который принимает загруженный файл изображения. Мы будем использовать model.predict() для обнаружения объектов на загруженном изображении.

3.3. Тестирование маршрута обнаружения объектов

После завершения интеграции YOLOv8 вы можете протестировать свой маршрут обнаружения объектов. Запустите приложение FastAPI с помощью Uvicorn:

uvicorn main:app - reload

Затем выполните POST-запрос к маршруту `/detect/`, загрузив файл изображения для обнаружения объектов. Для этой цели вы можете использовать такие инструменты, как Curl или Postman.

curl -X POST -F "[email protected]" http://127.0.0.1:8000/detect/

Вы получите ответ в формате JSON с результатами обнаружения объекта.

Поздравляем! Вы успешно интегрировали YOLOv8 с FastAPI для обнаружения объектов в реальном времени. В следующих разделах мы улучшим API, добавим документацию и рассмотрим варианты развертывания. Продолжим строительство!

Раздел 4. Развертывание приложения FastAPI

Теперь, когда вы создали приложение FastAPI, пришло время развернуть его, чтобы сделать ваш API обнаружения объектов доступным для пользователей. В этом разделе мы рассмотрим различные варианты развертывания, включая локальное развертывание для тестирования и облачное развертывание для производственного использования.

4.1. Локальное развертывание для тестирования

Перед развертыванием в рабочей среде важно протестировать приложение FastAPI локально, чтобы убедиться, что все работает должным образом.

Чтобы запустить приложение FastAPI локально, откройте терминал, перейдите в каталог проекта, содержащий main.py, и активируйте свою виртуальную среду, если она еще не активирована:

source myenv/bin/activate # Replace 'myenv' with your environment name

Затем запустите приложение FastAPI с помощью Uvicorn:

uvicorn main:app - reload

Ваше приложение FastAPI теперь должно быть доступно по адресу http://127.0.0.1:8000/. Вы можете использовать такие инструменты, как Curl, Postman или веб-браузер, для тестирования конечных точек API.

4.2. Облачное развертывание для производства

Когда вы будете готовы развернуть приложение FastAPI для использования в рабочей среде, у вас появится несколько вариантов развертывания в облаке. Некоторые популярные варианты включают в себя:

  • AWS (Amazon Web Services). Вы можете развернуть свое приложение FastAPI на AWS с помощью таких сервисов, как AWS Elastic Beanstalk, AWS Lambda или Amazon EC2.
  • Облачная платформа Google (GCP): GCP предлагает варианты развертывания с использованием Google App Engine, Google Cloud Functions или Google Kubernetes Engine (GKE).
  • Microsoft Azure: Azure предоставляет варианты развертывания с использованием Службы приложений Azure, Функций Azure или Службы Azure Kubernetes (AKS).
  • Heroku: Heroku — это удобная платформа, которая упрощает развертывание веб-приложений, включая приложения FastAPI.

Конкретный метод развертывания может различаться в зависимости от выбранного вами поставщика облачных услуг. Как правило, вам необходимо:

а. Создайте учетную запись и настройте проект на выбранной облачной платформе.

б. Настройте параметры развертывания, например указав среду выполнения и зависимости.

в. Разверните приложение FastAPI в облаке с помощью инструментов развертывания платформы или интерфейса командной строки.

д. Отслеживайте и масштабируйте развернутое приложение по мере необходимости.

4.3. Выбор правильного сервера

При развертывании на облачном сервере у вас может быть возможность выбрать тип сервера. Общие варианты включают в себя:

  • HTTP-сервер. Вы можете развернуть свое приложение FastAPI на традиционном HTTP-сервере, таком как Nginx или Apache. Эта настройка может помочь повысить производительность и безопасность.
  • Сервер ASGI: Для развертывания ASGI (интерфейс асинхронного серверного шлюза) вы можете использовать Uvicorn, Hypercorn или Daphne. Uvicorn часто рекомендуется для приложений FastAPI.
  • Бессерверное развертывание. Если вы выберете бессерверное развертывание, вы можете использовать AWS Lambda, функции Azure или облачные функции Google. Этот подход является экономически эффективным и автоматически масштабируется в зависимости от спроса.

4.4. Непрерывная интеграция и непрерывное развертывание (CI/CD)

Рассмотрите возможность внедрения конвейеров CI/CD для автоматизации процесса развертывания. Такие инструменты, как Jenkins, Travis CI, GitLab CI/CD и GitHub Actions, могут помочь вам автоматизировать тестирование и развертывание всякий раз, когда вы вносите изменения в свой репозиторий кода.

Следуя передовым практикам CI/CD, вы можете обеспечить плавный и надежный процесс развертывания, снижая риск ошибок в вашей производственной среде.

Не забудьте защитить свое производственное развертывание с помощью надлежащей аутентификации, авторизации и настроек брандмауэра для защиты вашего API и данных.

После успешного развертывания вашего приложения FastAPI оно теперь доступно пользователям, и вы можете начать включать обнаружение объектов в реальном времени в свои приложения и сервисы.

Сталкиваетесь с проблемами ИИ? Свяжитесь со мной для получения решений, ориентированных на результат. Ваш следующий прорыв находится на расстоянии одного сообщения.

Фиверр

UpWork

Если вы хотите узнать больше о Python, подписывайтесь на меня:

Github
Средний
Linkedin