Начало работы с YOLOv5 🚀 в Docker#
Добро пожаловать в руководство по быстрому старту Ultralytics YOLOv5 в Docker! Это руководство содержит пошаговые инструкции по настройке и запуску YOLOv5 внутри контейнера Docker. Использование Docker позволяет запускать YOLOv5 в изолированной и стабильной среде, упрощая развертывание и управление зависимостями на разных системах. Этот подход использует контейнеризацию для совместной упаковки приложения и его зависимостей.
Для альтернативных способов настройки обрати внимание на наши руководства для ноутбука Colab
, виртуальной машины GCP Deep Learning или Amazon AWS. Общий обзор использования Docker с моделями Ultralytics см. в руководстве по быстрому старту Ultralytics Docker.
Предварительные требования#
Перед началом убедись, что у тебя установлено следующее:
- Docker: скачай и установи Docker с официального сайта Docker. Docker необходим для создания контейнеров и управления ими.
- Драйверы NVIDIA (требуются для поддержки GPU): убедись, что у тебя установлены драйверы NVIDIA версии 455.23 или выше. Ты можешь скачать последние версии драйверов с сайта NVIDIA.
- 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 updatesudo 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, и изучи различные варианты развертывания моделей. Не забывай эффективно управлять весами модели.

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