YOLO Vision 2026:

Начало работы с YOLOv5 🚀 в Docker#

Добро пожаловать в руководство по быстрому старту Ultralytics YOLOv5 в Docker! Это руководство содержит пошаговые инструкции по настройке и запуску YOLOv5 внутри контейнера Docker. Использование Docker позволяет запускать YOLOv5 в изолированной и стабильной среде, упрощая развертывание и управление зависимостями на разных системах. Этот подход использует контейнеризацию для совместной упаковки приложения и его зависимостей.

Для альтернативных способов настройки обрати внимание на наши руководства для ноутбука Colab Open In Colab Open In Kaggle, виртуальной машины GCP Deep Learning или Amazon AWS. Общий обзор использования Docker с моделями Ultralytics см. в руководстве по быстрому старту Ultralytics Docker.

Предварительные требования#

Перед началом убедись, что у тебя установлено следующее:

  1. Docker: скачай и установи Docker с официального сайта Docker. Docker необходим для создания контейнеров и управления ими.
  2. Драйверы NVIDIA (требуются для поддержки GPU): убедись, что у тебя установлены драйверы NVIDIA версии 455.23 или выше. Ты можешь скачать последние версии драйверов с сайта NVIDIA.
  3. NVIDIA Container Toolkit (требуется для поддержки GPU): этот инструментарий позволяет контейнерам Docker получать доступ к GPU NVIDIA на твоей хост-машине. Следуй официальному руководству по установке NVIDIA Container Toolkit для получения подробных инструкций.

Настройка NVIDIA Container Toolkit (для пользователей GPU)#

Сначала проверь правильность установки драйверов NVIDIA, выполнив:

nvidia-smi

Эта команда должна вывести информацию о твоем GPU (GPU) и версии установленного драйвера.

Затем установи NVIDIA Container Toolkit. Приведенные ниже команды характерны для систем на базе Debian, таких как Ubuntu, и систем на базе RHEL, таких как Fedora/CentOS. Однако обратись к официальному руководству, ссылка на которое приведена выше, для получения инструкций, специфичных для твоего дистрибутива:

curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
  && curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list \
  | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' \
    | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list

Обнови списки пакетов и установи NVIDIA Container Toolkit:

sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit

Проверь CDI-устройства с помощью Docker#

Запусти nvidia-ctk cdi list, чтобы убедиться в доступности устройств CDI GPU (служба nvidia-cdi-refresh в toolkit автоматически генерирует и поддерживает спецификацию на версиях toolkit >= 1.18):

nvidia-ctk cdi list

Ты должен увидеть записи вроде nvidia.com/gpu=0 и nvidia.com/gpu=all. В Linux запросы устройств CDI требуют Docker >= 28.2.0 и NVIDIA Container Toolkit >= 1.18. Устаревший флаг --gpus all может потерять доступ к GPU после перезагрузки демона хоста, поэтому обнови старые хосты Linux и используй --device вместо него.

Шаг 1: Загрузка Docker-образа YOLOv5#

Ultralytics предоставляет официальные образы YOLOv5 на Docker Hub. Тег latest отслеживает последний коммит репозитория, гарантируя, что ты всегда получаешь самую свежую версию. Получи образ с помощью следующей команды:

# Define the image name with tag
t=ultralytics/yolov5:latest

# Pull the latest YOLOv5 image from Docker Hub
sudo docker pull $t

Ты можешь просмотреть все доступные образы в репозитории Ultralytics YOLOv5 на Docker Hub.

Шаг 2: Запуск контейнера Docker#

После загрузки образа ты можешь запустить его как контейнер.

Использование только CPU#

Чтобы запустить интерактивный экземпляр контейнера только с использованием CPU, используй флаг -it. Флаг --ipc=host позволяет совместно использовать пространство имен IPC хоста, что важно для доступа к разделяемой памяти.

# Run an interactive container instance using CPU
sudo docker run -it --ipc=host $t

Использование GPU#

Чтобы включить доступ к GPU внутри контейнера, используй флаг CDI --device nvidia.com/gpu=.... Для этого требуется правильно установленный NVIDIA Container Toolkit.

# Run with access to all available GPUs
sudo docker run -it --ipc=host --device nvidia.com/gpu=all $t

# Run with access to specific GPUs (e.g., GPUs 2 and 3)
sudo docker run -it --ipc=host --device nvidia.com/gpu=2 --device nvidia.com/gpu=3 $t

Обратись к справочнику по запуску Docker для получения дополнительной информации о параметрах команд.

Монтирование локальных директорий#

Для работы с локальными файлами (датасетами, весами моделей и т.д.) внутри контейнера используй флаг -v, чтобы подключить каталог хоста к контейнеру:

# Mount /path/on/host (your local machine) to /path/in/container (inside the container)
sudo docker run -it --ipc=host --device nvidia.com/gpu=all -v /path/on/host:/path/in/container $t

Замени /path/on/host на фактический путь на твоем компьютере, а /path/in/container — на желаемый путь внутри контейнера Docker (например, /usr/src/datasets).

Шаг 3: Используй YOLOv5 🚀 внутри контейнера Docker#

Теперь ты находишься внутри запущенного контейнера YOLOv5 Docker! Отсюда ты можешь выполнять стандартные команды YOLOv5 для различных задач шинного обучения и глубокого обучения, таких как обнаружение объектов.

# Train a YOLOv5 model on your custom dataset (ensure data is mounted or downloaded)
python train.py --data your_dataset.yaml --weights yolov5s.pt --img 640 # Start training

# Validate the trained model's performance (Precision, Recall, mAP)
python val.py --weights path/to/your/best.pt --data your_dataset.yaml # Validate accuracy

# Run inference on images or videos using a trained model
python detect.py --weights yolov5s.pt --source path/to/your/images_or_videos # Perform detection

# Export the trained model to various formats like ONNX, CoreML, or TFLite for deployment
python export.py --weights yolov5s.pt --include onnx coreml tflite # Export model

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

Узнай больше о метриках оценки, таких как Precision, Recall и mAP. Разберись с различными форматами экспорта, такими как ONNX, CoreML и TFLite, и изучи различные варианты развертывания моделей. Не забывай эффективно управлять весами модели.

Running YOLOv5 inside a Docker container on GCP

Ты успешно настроил и запустил YOLOv5 внутри контейнера Docker.

Комментарии