Faster R-CNN
O Faster R-CNN detecta objetos com uma region proposal network alimentando um classificador de dois estágios, a arquitetura que tornou as propostas de região parte da mesma rede treinada em vez de uma etapa separada. O LibreYOLO porta a implementação do torchvision para detecção.
- Tarefas
- detection
- Tamanhos
- n, s, m, l at 320 to 800 px
- Instalação
pip install libreyolo- Nível de suporte
- Somente inferência, desde a v. Somente predição, validação e exportação. Os recursos de treinamento não se aplicam.
- Origem
- Faster R-CNN por PyTorch, BSD-3-Clause. Artigo, código-fonte
- Licenças
- Código BSD-3-Clause, pesos BSD-3-Clause. Uso comercial
Instalação
O Faster R-CNN não precisa de nenhum extra opcional. Tudo o que ele importa está na instalação base.
pip install libreyoloPredição
Os pesos são baixados do Hugging Face no primeiro uso e ficam em cache localmente.
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)libreyolo predict model=LibreFasterRCNNl.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=TrueO objeto Results retornado é o mesmo que todas as famílias retornam, então
trocar por outro detector é uma mudança de uma linha. conf e iou definem os
limiares de confiança e de NMS; o Faster R-CNN mantém a etapa de NMS do
upstream, diferente de um detector baseado em queries. Veja
predição para fontes, streaming e tratamento de resultados.
Variantes
Quatro tamanhos, cada um uma configuração diferente do torchvision em vez de uma
versão escalada da mesma: n é o MobileNetV3-Large com entrada de 320 px, s é
o mesmo backbone a 800 px, m é o ResNet-50 com uma pirâmide de características,
e l é a revisão v2, com uma cabeça de propostas de região mais profunda e uma
cabeça de box de quatro convoluções no lugar da do m. n e s trocam acurácia
por um backbone mais leve.
Validação
val() retorna um dicionário de chaves metrics/ cobrindo precisão, recall,
mAP 50 e mAP 50-95, medidos contra qualquer dataset no formato em que você
treinou.
from libreyolo import LibreYOLO model = LibreYOLO("LibreFasterRCNNl.pt")metrics = model.val(data="my-dataset.yaml") print(metrics["metrics/mAP50-95"])print(metrics["metrics/mAP50"])libreyolo val model=LibreFasterRCNNl.pt data=my-dataset.yamlExportação
| Tarefa | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Detection | Detection to ONNX: compatível | Detection to TorchScript: incompatível | Detection to ExecuTorch: incompatível | Detection to TensorRT: incompatível | Detection to OpenVINO: incompatível | Detection to Paddle: incompatível | Detection to MNN: incompatível | Detection to RKNN: incompatível | Detection to ncnn: incompatível | Detection to TFLite: incompatível | Detection to CoreML: incompatível | Detection to Core AI: incompatível |
O Faster R-CNN exporta só para ONNX, com tamanho de batch 1. O grafo exportado
mantém dentro dele a etapa de redimensionamento do upstream, então o LibreYOLO
força dynamic=True independentemente do que for passado, para manter o grafo
válido para fontes que não são quadradas. Um arquivo .onnx exportado é
recarregado por LibreYOLO() pelo sufixo do arquivo e retorna o mesmo
Results.
from libreyolo import LibreYOLO model = LibreYOLO("LibreFasterRCNNl.pt")model.export(format="onnx", imgsz=800)libreyolo export model=LibreFasterRCNNl.pt format=onnx imgsz=800from libreyolo import LibreYOLO, SAMPLE_IMAGE # A factory decide o caminho pelo sufixo do arquivo, então um artefato# exportado carrega como qualquer checkpoint e retorna o mesmo Results.model = LibreYOLO("LibreFasterRCNNl.onnx")result = model(SAMPLE_IMAGE) print(result.boxes.xyxy)Checkpoints
Todos os arquivos de pesos publicados desta família.
| Arquivo | Entrada (px) | Licença dos pesos |
|---|---|---|
| Detection | ||
| LibreFasterRCNNn.pt | 320 | bsd-3-clause |
| LibreFasterRCNNs.pt | 800 | bsd-3-clause |
| LibreFasterRCNNm.pt | 800 | bsd-3-clause |
| LibreFasterRCNNl.pt | 800 | bsd-3-clause |
Todos os arquivos acima existem hoje na organização LibreYOLO e são baixados no primeiro uso.
Licenciamento
Confira a licença no repositório do Hugging Face correspondente aos pesos que você baixar. Cada checkpoint na organização LibreYOLO tem uma licença, e ela nem sempre é a mesma em toda a família. Esse repositório é a fonte oficial. O resumo abaixo descreve o que se aplicava na última verificação desta página.
Esta é uma descrição das licenças envolvidas, não uma orientação jurídica. Se a resposta tiver importância comercial, leia as licenças e procure sua própria assessoria.
- Trabalho original
- Faster R-CNN, PyTorch
- Licença original
- BSD-3-Clause
- Código-fonte original
- github.com/pytorch/vision
- Código do LibreYOLO
- MIT
- Pesos
- BSD-3-Clause, republicado em huggingface.co/LibreYOLO
- Interpretação
- 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.
Citação
@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}
}Copiado do bloco de citação dos autores em github.com/rbgirshick/py-faster-rcnn#citing-faster-r-cnn.