Посмотреть как Markdown

Faster R-CNN

Faster R-CNN детектирует объекты сетью предложений регионов, которая подаёт их в двухстадийный классификатор, — архитектура, сделавшая предложения регионов частью той же обучаемой сети, а не отдельным шагом. LibreYOLO портирует реализацию из torchvision для детекции.

Задачи
detection
Размеры
n, s, m, l at 320 to 800 px
Установка
pip install libreyolo
Уровень поддержки
Только инференс, начиная с v. Только предсказание, валидация и экспорт. Функции обучения неприменимы.
Исходный проект
Faster R-CNN от PyTorch, BSD-3-Clause. Статья, исходный код
Лицензии
Код: BSD-3-Clause, веса: BSD-3-Clause. Коммерческое использование

Установка

Faster R-CNN не требует опциональных extra. Всё, что он импортирует, входит в базовую установку.

bash
pip install libreyolo

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

Веса скачиваются с Hugging Face при первом запуске и кэшируются локально.

Python
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreFasterRCNNl.pt")result = model(SAMPLE_IMAGE, save=True) for box in result.boxes:    print(box.cls, box.conf, box.xyxy)
CLI
libreyolo predict model=LibreFasterRCNNl.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=True

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

Варианты

Четыре размера, каждый — отдельная конфигурация torchvision, а не масштабированная версия одной и той же: n — это MobileNetV3-Large со входом 320 px, s — тот же бэкбон при 800 px, m — ResNet-50 с пирамидой признаков, а l — ревизия v2, с более глубокой головой предложений регионов и головой рамок из четырёх свёрток вместо той, что у m. n и s меняют точность на более лёгкий бэкбон.

Валидация

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

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreFasterRCNNl.pt")metrics = model.val(data="my-dataset.yaml") print(metrics["metrics/mAP50-95"])print(metrics["metrics/mAP50"])
CLI
libreyolo val model=LibreFasterRCNNl.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: не поддерживается

Faster R-CNN экспортируется только в ONNX и только с размером батча 1. Экспортированный граф содержит внутри шаг изменения размера из оригинальной реализации, поэтому LibreYOLO принудительно ставит dynamic=True независимо от того, что передано, чтобы граф оставался корректным для неквадратных источников. Экспортированный файл .onnx загружается обратно через LibreYOLO() по расширению файла и возвращает тот же Results.

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

Чекпойнты

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

ФайлВход (пикс.)Лицензия весов
Detection
LibreFasterRCNNn.pt320bsd-3-clause
LibreFasterRCNNs.pt800bsd-3-clause
LibreFasterRCNNm.pt800bsd-3-clause
LibreFasterRCNNl.pt800bsd-3-clause

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

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

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

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

Оригинальная работа
Faster R-CNN, PyTorch
Лицензия исходного проекта
BSD-3-Clause
Исходный код проекта
github.com/pytorch/vision
Код LibreYOLO
MIT
Веса
BSD-3-Clause, повторно опубликованы на huggingface.co/LibreYOLO
Толкование
BSD-3-Clause is a permissive license, so this code can be used in commercial and closed-source products with no obligation on your own application code. It asks only that you keep the copyright notice and disclaimer with any copy you redistribute, and it carries no patent grant. The four published checkpoints used for parity testing are not distributed in the LibreYOLO source tree: torchvision's own documentation notes that a pretrained model's terms may depend on its training data, so each Hugging Face mirror ships the BSD text on that implied basis and repeats the caveat rather than issuing an explicit checkpoint-specific grant.

Цитирование

@inproceedings{renNIPS15fasterrcnn,
    Author = {Shaoqing Ren and Kaiming He and Ross Girshick and Jian Sun},
    Title = {Faster {R-CNN}: Towards Real-Time Object Detection
             with Region Proposal Networks},
    Booktitle = {Advances in Neural Information Processing Systems ({NIPS})},
    Year = {2015}
}

Скопировано из блока цитирования авторов на странице github.com/rbgirshick/py-faster-rcnn#citing-faster-r-cnn.

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