Ориентация: что такое CV сегодня

Инструменты и окружение CV-инженера

Содержание курса

Окружение или контейнер

Окружение мы собрали в venv, и на своей машине этого хватает: пакеты проекта отделены от системных, версии зафиксированы, всё повторяется командой pip install -r requirements.txt. Вопрос возникает, когда тот же код нужно запустить не у себя — на сервере с камерами, на машине коллеги, в системе сборки.

Тогда выясняется, что venv фиксирует меньше, чем кажется. Он держит список пакетов Python — и всё. За его границей остаются три вещи, и каждая из них в CV регулярно ломает запуск.

Системные библиотеки. OpenCV — это обёртка вокруг кода на C++, и ему нужны библиотеки операционной системы. Самая известная встреча с этим — запуск на голом серверном Linux, где нет графической подсистемы: import cv2 падает на отсутствующей libGL.so.1, хотя pip отработал без единой жалобы. Лечится сборкой opencv-python-headless — тем же OpenCV без функций показа окон.

Версия Python. venv не устанавливает интерпретатор, а берёт тот, что уже есть. На машине с версией постарше часть закреплённых колёс просто не найдётся.

Видеокарта. Драйвер и его версия — свойство машины, а не проекта. Колесо cu130, собранное под одну версию CUDA, на машине со старым драйвером не заработает, и requirements.txt об этом ничего не знает.

Что меняет контейнер

Контейнер забирает внутрь всё перечисленное, кроме драйвера: системные библиотеки, интерпретатор, пакеты. Образ собирается один раз и запускается одинаково там, где есть Docker. Драйвер при этом остаётся снаружи — он всегда на хозяйской машине, внутрь едет только вычислительная часть CUDA, и контейнеру её показывают отдельным ключом при запуске. На Windows это работает через WSL2.

Плата за это в CV заметнее, чем в обычной веб-разработке. Официальный образ Python весит 44 МБ в варианте slim, а официальный образ PyTorch с CUDA — 4,14 ГБ, в сто раз больше (размеры архивов на Docker Hub, 8 августа 2026). Это ещё без ваших весов, без OpenCV и без данных. Отсюда и все приёмы с многоэтапной сборкой и чисткой кэшей: пятигигабайтный образ, который едет на сервер при каждой выкатке, — обычное состояние CV-сервиса, а не чей-то недосмотр.

Для этого курса вывод простой: учиться и обучать модели удобнее в venv, потому что вы работаете на одной машине, часто меняете код и ничего никуда не выкатываете. Контейнер становится нужен на границе — когда решение переносится с вашей машины на чужую.

Сама сборка образов, слои, кэш и многоэтапная сборка — тема отдельная и к зрению отношения не имеющая; здесь мы её не разбираем. [🔗 ссылка на курс «Docker для ML и AI: упаковать модель в образ и не получить пять гигабайт», когда он выйдет]

Начать заново?

Помощник начнёт новый диалог по этой задаче. Текущая переписка останется в истории до конца срока хранения.

О переписке

Можно приложить до трёх фото PNG, JPEG или WebP по 5 МБ.

Переписка и фото хранятся 90 дней после последнего принятого сообщения. Преподаватель получит доступ к диалогу, когда вы попросите его помочь.

Проверка решения остаётся отдельным действием.