DETR
O DETR é o transformer de detecção original: ele prevê um conjunto fixo de objetos com um decoder transformer casado por matching húngaro, em vez de âncoras ou de uma grade densa. O LibreYOLO traz quatro tamanhos para detecção, apenas para inferência.
- Tarefas
- detection
- Tamanhos
- r50, r50dc5, r101, r101dc5 at 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
- DETR por Meta AI (FAIR), Apache-2.0. Artigo, código-fonte
- Licenças
- Código Apache-2.0, pesos Apache-2.0. Uso comercial
Instalação
O DETR 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 local.
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreDETRr50.pt")result = model(SAMPLE_IMAGE, save=True) for box in result.boxes: print(box.cls, box.conf, box.xyxy)libreyolo predict model=LibreDETRr50.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=TrueO objeto Results devolvido é o mesmo que todas as famílias devolvem, então
trocar por outro detector é uma mudança de uma linha. conf e max_det filtram
a seleção de queries; iou é aceito por paridade de API, mas não tem efeito,
porque o decoder é um preditor de conjunto, sem etapa de NMS. Veja
predição para fontes, streaming e tratamento de resultados.
No LibreYOLO, o DETR é apenas para inferência. O projeto original treina por 500
épocas com matching húngaro; essa receita não está implementada aqui, então
train() levanta NotImplementedError.
Variantes
Quatro checkpoints combinam duas profundidades de backbone, ResNet-50 ou ResNet-101, com um estágio C5 dilatado opcional: as variantes DC5 mantêm o último estágio do backbone em resolução plena em vez de reduzir a escala mais uma vez, então o decoder lê um mapa de características (feature map) mais fino a partir do mesmo tamanho de entrada. As quatro compartilham 100 object queries aprendidas e um encoder-decoder transformer de seis camadas, e todas rodam na mesma resolução de entrada.
Validação
val() devolve um dicionário de chaves metrics/ cobrindo precisão, recall,
mAP 50 e mAP 50-95, medidos sobre qualquer dataset no formato em que você
treinou.
from libreyolo import LibreYOLO model = LibreYOLO("LibreDETRr50.pt") # val() devolve um dict simples, não um objetometrics = model.val(data="my-dataset.yaml") print(metrics["metrics/mAP50-95"])print(metrics["metrics/mAP50"])print(metrics["metrics/precision"], metrics["metrics/recall"])libreyolo val model=LibreDETRr50.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: compatível | Detection to ExecuTorch: compatível | Detection to TensorRT: compatível | Detection to OpenVINO: compatí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 |
Um artefato exportado é carregado de volta pelo LibreYOLO() a partir da
extensão do arquivo, então um arquivo .onnx ou .engine se comporta como um
checkpoint e devolve o mesmo Results. Exportação lista os
argumentos que todo formato aceita.
from libreyolo import LibreYOLO model = LibreYOLO("LibreDETRr50.pt")model.export(format="onnx", imgsz=800)model.export(format="tensorrt", imgsz=800, half=True)libreyolo export model=LibreDETRr50.pt format=onnx imgsz=800libreyolo export model=LibreDETRr50.pt format=tensorrt imgsz=800 half=Truefrom libreyolo import LibreYOLO, SAMPLE_IMAGE # A factory decide pela extensão do arquivo, então um artefato exportado# carrega como qualquer checkpoint e devolve o mesmo objeto Results.model = LibreYOLO("LibreDETRr50.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 | ||
| LibreDETRr50dc5.pt | 800 | apache-2.0 |
| LibreDETRr50.pt | 800 | apache-2.0 |
| LibreDETRr101dc5.pt | 800 | apache-2.0 |
| LibreDETRr101.pt | 800 | apache-2.0 |
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
- DETR, Meta AI (FAIR)
- Licença original
- Apache-2.0
- Código-fonte original
- github.com/facebookresearch/detr
- Código do LibreYOLO
- MIT
- Pesos
- Apache-2.0, republicado em huggingface.co/LibreYOLO
- Interpretação
- Apache-2.0 is a permissive license, so these weights can be used in commercial and closed-source products. It asks you to keep its license text and attribution notices with any copy of the weights you redistribute, and it grants a patent license. It places no obligation on your own application code, and weights you train yourself on your own data are yours. The four checkpoints are the official releases linked from the Apache-2.0 repository's model zoo, and the official Hugging Face DETR card independently declares the same license.