Переглянути як Markdown

Поширені запитання

Відповіді на запитання, які не стосуються окремого сімейства моделей. Відомості про конкретне сімейство наведено на його сторінці.

З якої моделі почати?

YOLOv9 для детектора CNN і RF-DETR для детектора-трансформера. Обидві належать до основного рівня, тобто функції проєктують і перевіряють на GPU насамперед для них. Перегляньте YOLOv9 і RF-DETR або всі моделі.

Чи потрібен GPU?

Ні. Кожна модель працює на CPU, і всі приклади у швидкому старті розраховані на роботу з ним. GPU впливає на тривалість навчання та інференсу відео, а не на саму можливість роботи.

Як LibreYOLO вибирає пристрій?

Стандартне значення, device="auto". Воно використовує CUDA, коли PyTorch повідомляє про її доступність, потім Metal Performance Shaders, якщо вони доступні, інакше CPU. Щоб зафіксувати пристрій, передайте device моделі або функціям predict, train, val і export. Аргумент приймає "cpu", "cuda", "cuda:0", "mps", окреме ціле число, як-от 0, або рядок із цифрою; два останні варіанти розгортаються до cuda:<n>.

libreyolo checks показує збірку Torch, її версії CUDA й cuDNN і кожен видимий GPU. Якщо команда не показує CUDA, пакет wheel PyTorch є збіркою для CPU; його заміну описано в розділі встановлення.

Куди потрапляють завантажені ваги?

До weights/ відносно робочого каталогу. Посилання на модель без компонента каталогу визначається там і завантажується під час першого використання; посилання з каталогом використовується буквально й ніколи не завантажується. Дивіться контрольні точки й ваги.

Чи можна працювати без доступу до мережі?

Так. Один раз отримайте контрольні точки на підключеній машині, перенесіть каталог weights/, і наступні запуски не звертатимуться до мережі. Також працює спільний каталог лише для читання, оскільки посилання з каталогом сприймається буквально. Датасети визначаються в ~/datasets або в каталозі LIBREYOLO_DATASETS_DIR.

Чи можна використовувати LibreYOLO комерційно?

Код ліцензовано за MIT. Для попередньо навчених ваг відповідь окрема: вони можуть успадковувати умови проєкту або датасету походження, і ці умови неоднакові навіть у межах одного сімейства. Визначальною є ліцензія конкретного репозиторію Hugging Face, а кожна сторінка моделі має розділ ліцензування, що відтворює її. Якщо ваги обмежено, LibreYOLO показує обмеження перед початком завантаження.

Чи можна завантажити контрольну точку з іншого проєкту?

Зазвичай так, якщо передати її шлях до LibreYOLO(). Розпізнані структури upstream перетворюються під час завантаження зі збереженням кількості та назв класів, а контрольна точка LibreYOLO записується поруч із джерелом. У розділі імпорт наявних ваг описано підтримувані структури й випадки, для яких потрібен скрипт перетворення.

Чому train спричиняє NotImplementedError?

Тому що це сімейство постачає лише інференс, а виняток пояснює причину. Передбачення, валідація та, де підтримується, експорт працюють; циклу навчання для цієї архітектури в LibreYOLO немає. Рівень підтримки в заголовку сторінки моделі повідомляє про це заздалегідь. Дивіться основні поняття.

Що повертає val?

Звичайний словник, а не об'єкт. Ключі виявлення містять metrics/precision, metrics/recall, metrics/mAP50 і metrics/mAP50-95. Інші задачі повертають відповідні їм ключі, як-от metrics/accuracy_top1 для класифікації або metrics/PQ, metrics/SQ і metrics/RQ для паноптичної сегментації.

Як запустити обробку каталогу, відео чи вебкамери?

Передайте їх як джерело. Шлях до файла означає одне зображення, каталог означає всі зображення в ньому, шлях до відео означає відео, ціле число означає індекс вебкамери, а URL RTSP, RTMP, TCP, UDP чи HLS означає пряму трансляцію. Файл .streams перелічує кілька джерел одночасно. Для живих джерел потрібен stream=True, який видає по одному Results на кадр замість побудови списку; цей прапорець також варто використовувати для довгих відео й великих каталогів. Лише URL сторінок YouTube потребують додаткової залежності libreyolo[stream].

Як залишити лише деякі класи?

Передайте classes до predict з потрібними індексами класів, наприклад classes=[0, 2]. conf задає поріг упевненості зі стандартним значенням 0.25, а max_det обмежує кількість виявлень на зображення зі стандартним значенням 300.

Чи використовує CLI прапорці або пари key=value?

Для кожної команди ключ і значення з'єднуються знаком рівності:

bash
libreyolo predict model=yolo9-t source=my-image.jpg save=True
libreyolo train model=yolo9-t data=coco8.yaml epochs=50 imgsz=640

model приймає шлях або коротке ім'я у формі family-size, за потреби із суфіксом задачі, а libreyolo models показує всі припустимі варіанти. Команди діагностики й інвентаризації також приймають --json, що виводить ті самі дані у вигляді машинозчитуваного об'єкта до stdout.

Чи кожну модель можна експортувати в кожен формат?

Ні. Підтримка визначається для кожного сімейства й кожної задачі окремо, а кожен формат має власну додаткову залежність. На сторінці кожної моделі наведено матрицю експорту сімейства; самі формати описано в розділі експорт.

Чим відрізняються segment, semantic і panoptic?

Це три окремі задачі. segment створює по одній масці для кожного виявленого об'єкта. semantic позначає класом кожен піксель і не розділяє об'єкти на екземпляри. panoptic дає кожному пікселю рівно одну мітку, поєднуючи злічувані предмети з безформним тлом. Вони мають різні еталонні дані, поля результатів і метрики, а сімейство підтримує ті з них, які зазначено в його списку задач.

Як навчати на власних класах?

Створіть YAML датасету з train, val і names. Мітки розташовуються поруч із зображеннями в паралельному дереві labels/, по одному файлу .txt на зображення, з нормалізованими координатами. nc є необов'язковим і за наявності має відповідати names. Спочатку запустіть libreyolo doctor <data.yaml>: команда перевіряє датасет на проблеми й завершується з ненульовим кодом, якщо знаходить помилки, тому її можна використовувати як запобіжник CI.

Чому під час завантаження показується попередження про метадані?

Тому що контрольна точка не містить повних метаданих v1.0. Завантаження продовжується через шлях сумісності, а попередження точно називає відсутні ключі. Запустіть libreyolo metadata path=<file>, щоб переглянути вміст, і зверніться до розділу контрольні точки й ваги, щоб дізнатися про вимоги схеми.

Імпорт перестав працювати після оновлення. Що змінилося?

Для узгодженості перейменовано два класи: LibreYOLORTDETR став LibreRTDETR, а LibreYOLORFDETR став LibreRFDETR. Старі назви й далі визначаються та показують DeprecationWarning із новою назвою, тому наявний код працюватиме, доки ви його оновлюєте.

Перевірено з LibreYOLO v1.5.0.