YOLOv3

YOLOv3 — детектор на Darknet-53, который добавил в линейку YOLO многомасштабное предсказание и независимые логистические классификаторы. В LibreYOLO он поставляется как замороженный музейный экспонат только для инференса в размерах tiny, base и SPP.

Задачи
detection
Размеры
t, b, spp at 416 to 608 px
Установка
pip install libreyolo
Уровень поддержки
Музей, начиная с v. Замороженный экспонат. Только исправления ошибок.
Исходный проект
YOLOv3 от Joseph Redmon, Public domain (Darknet "YOLO LICENSE"). Статья, исходный код
Лицензии
Код: MIT, веса: Public domain (Darknet "YOLO LICENSE"). Коммерческое использование

Установка

Для YOLOv3 не нужны дополнительные extra сверх базового пакета.

bash
pip install libreyolo

Предсказание

Это семейство доступно только для инференса: train() выбрасывает NotImplementedError, поэтому на этой странице нет раздела про обучение. Предсказание, валидация и экспорт поддерживаются. Веса скачиваются с Hugging Face при первом запуске и кэшируются локально.

Python
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreYOLO3b.pt")result = model(SAMPLE_IMAGE, save=True) for box in result.boxes:    print(box.cls, box.conf, box.xyxy)
CLI
libreyolo predict model=LibreYOLO3b.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=True
Размер SPP
from libreyolo import LibreYOLO, SAMPLE_IMAGE # Вариант SPP добавляет блок spatial pyramid pooling перед головами# детекции и работает со своим родным размером входа.model = LibreYOLO("LibreYOLO3spp.pt")result = model(SAMPLE_IMAGE)

Возвращаемый объект Results — тот же, что возвращают все семейства, поэтому замена на другой детектор — правка в одну строку. conf фильтрует по порогу уверенности, а iou — по порогу NMS; оба применяются на каждом масштабе до того, как рамки со всех трёх голов объединяются. Про источники, стриминг и обработку результатов — в разделе предсказание.

Валидация

val() возвращает словарь с ключами metrics/, покрывающими точность, полноту, mAP 50 и mAP 50-95, измеренные на любом датасете в том формате, в котором вы проводите валидацию.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreYOLO3b.pt")metrics = model.val(data="my-dataset.yaml") print(metrics["metrics/mAP50-95"])print(metrics["metrics/mAP50"])
CLI
libreyolo val model=LibreYOLO3b.pt data=my-dataset.yaml

Экспорт

ЗадачаONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
DetectionDetection to ONNX: поддерживаетсяDetection to TorchScript: поддерживаетсяDetection to ExecuTorch: поддерживаетсяDetection to TensorRT: поддерживаетсяDetection to OpenVINO: поддерживаетсяDetection to Paddle: не поддерживаетсяDetection to MNN: не поддерживаетсяDetection to RKNN: не поддерживаетсяDetection to ncnn: поддерживаетсяDetection to TFLite: не поддерживаетсяDetection to CoreML: не поддерживаетсяDetection to Core AI: поддерживается

Экспортированный артефакт загружается обратно через LibreYOLO() по суффиксу файла, поэтому файл .onnx или .engine ведёт себя как чекпойнт и возвращает тот же Results. Запуск графа в чистой среде выполнения, без установленной библиотеки LibreYOLO, тоже поддерживается, но тогда предобработку и постобработку придётся писать самостоятельно.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreYOLO3b.pt")model.export(format="onnx")model.export(format="tensorrt", half=True)
CLI
libreyolo export model=LibreYOLO3b.pt format=onnxlibreyolo export model=LibreYOLO3b.pt format=tensorrt half=True
Использование экспортированного файла
from libreyolo import LibreYOLO, SAMPLE_IMAGE # Фабрика выбирает путь по суффиксу файла, поэтому экспортированный# артефакт загружается как любой чекпойнт и возвращает тот же Results.model = LibreYOLO("LibreYOLO3b.onnx")result = model(SAMPLE_IMAGE) print(result.boxes.xyxy)

Чекпойнты

Все опубликованные файлы весов этого семейства.

ФайлВход (пикс.)Лицензия весов
Detection
LibreYOLO3t.pt416other
LibreYOLO3b.pt416other
LibreYOLO3spp.pt608other

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

Лицензирование

Проверяйте лицензию в репозитории конкретных весов на Hugging Face. Она указана для каждого чекпойнта в организации LibreYOLO и может различаться даже внутри одного семейства. Этот репозиторий считается авторитетным источником, а сводка ниже описывает условия на момент последней проверки страницы.

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

Оригинальная работа
YOLOv3, Joseph Redmon
Лицензия исходного проекта
Public domain (Darknet "YOLO LICENSE")
Исходный код проекта
github.com/pjreddie/darknet
Код LibreYOLO
MIT
Веса
Public domain (Darknet "YOLO LICENSE"), повторно опубликованы на huggingface.co/LibreYOLO
Толкование
Darknet's bundled NOTICE quotes its own license in full: "Darknet is public domain. Do whatever you want with it." That covers both the architecture and the pretrained weights LibreYOLO converts from it, with no attribution requirement and no restriction on commercial use. LibreYOLO's own code around this architecture is MIT.

Проверено с LibreYOLO v1.5.0. Таблицы поддержки, чекпойнты и результаты бенчмарков на этой странице сгенерированы из выпущенной библиотеки и опубликованных весов, а не написаны вручную.