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 сверх базового пакета.
pip install libreyoloПредсказание
Это семейство доступно только для инференса: train() выбрасывает
NotImplementedError, поэтому на этой странице нет раздела про обучение.
Предсказание, валидация и экспорт поддерживаются. Веса скачиваются с Hugging
Face при первом запуске и кэшируются локально.
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)libreyolo predict model=LibreYOLO3b.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=Truefrom 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, измеренные на любом датасете в том формате, в
котором вы проводите валидацию.
from libreyolo import LibreYOLO model = LibreYOLO("LibreYOLO3b.pt")metrics = model.val(data="my-dataset.yaml") print(metrics["metrics/mAP50-95"])print(metrics["metrics/mAP50"])libreyolo val model=LibreYOLO3b.pt data=my-dataset.yamlЭкспорт
| Задача | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Detection | Detection 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, тоже поддерживается, но тогда предобработку и
постобработку придётся писать самостоятельно.
from libreyolo import LibreYOLO model = LibreYOLO("LibreYOLO3b.pt")model.export(format="onnx")model.export(format="tensorrt", half=True)libreyolo export model=LibreYOLO3b.pt format=onnxlibreyolo export model=LibreYOLO3b.pt format=tensorrt half=Truefrom libreyolo import LibreYOLO, SAMPLE_IMAGE # Фабрика выбирает путь по суффиксу файла, поэтому экспортированный# артефакт загружается как любой чекпойнт и возвращает тот же Results.model = LibreYOLO("LibreYOLO3b.onnx")result = model(SAMPLE_IMAGE) print(result.boxes.xyxy)Чекпойнты
Все опубликованные файлы весов этого семейства.
| Файл | Вход (пикс.) | Лицензия весов |
|---|---|---|
| Detection | ||
| LibreYOLO3t.pt | 416 | other |
| LibreYOLO3b.pt | 416 | other |
| LibreYOLO3spp.pt | 608 | other |
Все перечисленные выше файлы уже доступны в организации 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.