Ver como markdown

Deformable DETR

O Deformable DETR troca a cross-attention densa do DETR por uma amostragem esparsa e multiescala ao redor de cada ponto de referência, o que foi o que tornou os detectores transformer viáveis de treinar. O LibreYOLO traz cinco tamanhos para detecção, apenas inferência.

Tarefas
detection
Tamanhos
r50ss, r50ssdc5, r50, r50refine, r50twostage 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
Deformable DETR por SenseTime, Apache-2.0. Artigo, código-fonte
Licenças
Código Apache-2.0, pesos Apache-2.0. Uso comercial

Instalação

O Deformable DETR não precisa de nenhum extra opcional. Tudo o que ele importa está na instalação base, com um núcleo de atenção deformável multiescala em PyTorch puro.

bash
pip install libreyolo

Instalar libreyolo[hub-kernels] é opcional. Com o pacote kernels presente, o LibreYOLO baixa em tempo de execução um kernel compilado de atenção deformável multiescala do Hugging Face Hub e o usa no lugar do núcleo em PyTorch puro; LIBREYOLO_HUB_KERNELS=0 desativa isso de novo.

Predição

Os pesos são baixados do Hugging Face no primeiro uso e ficam em cache localmente.

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

O 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 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 conjuntos sem etapa de NMS. Veja predição para fontes, streaming e tratamento de resultados.

No LibreYOLO, o Deformable DETR é apenas para inferência. O upstream treina com matching húngaro e uma focal loss de classificação; essa receita não está implementada aqui, então train() levanta NotImplementedError.

Variantes

Cinco checkpoints cobrem as configurações publicadas, todas na mesma resolução de entrada. O r50ss restringe a atenção a uma única escala de características; o r50ssdc5 acrescenta a isso um estágio C5 dilatado no backbone. O r50 é a configuração multiescala padrão, que amostra em quatro níveis de mapas de características. O r50refine adiciona refinamento iterativo dos bounding boxes ao longo das camadas do decoder, e o r50twostage gera suas propostas de região iniciais a partir da saída do encoder em vez de usar queries aprendidas.

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.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreDeformableDETRr50.pt") # val() retorna 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"])
CLI
libreyolo val model=LibreDeformableDETRr50.pt data=my-dataset.yaml

Exportação

TarefaONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
DetectionDetection to ONNX: compatívelDetection to TorchScript: compatívelDetection to ExecuTorch: compatívelDetection to TensorRT: compatívelDetection to OpenVINO: compatívelDetection to Paddle: incompatívelDetection to MNN: incompatívelDetection to RKNN: incompatívelDetection to ncnn: incompatívelDetection to TFLite: incompatívelDetection to CoreML: incompatívelDetection to Core AI: incompatível

Um artefato exportado é recarregado por LibreYOLO() pelo sufixo do arquivo, então um arquivo .onnx ou .engine se comporta como um checkpoint e retorna o mesmo Results. Exportação lista os argumentos que todo formato aceita.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreDeformableDETRr50.pt")model.export(format="onnx", imgsz=800)model.export(format="tensorrt", imgsz=800, half=True)
CLI
libreyolo export model=LibreDeformableDETRr50.pt format=onnx imgsz=800libreyolo export model=LibreDeformableDETRr50.pt format=tensorrt imgsz=800 half=True
Usar o arquivo exportado
from 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("LibreDeformableDETRr50.onnx")result = model(SAMPLE_IMAGE) print(result.boxes.xyxy)

Checkpoints

Todos os arquivos de pesos publicados desta família.

ArquivoEntrada (px)Licença dos pesos
Detection
LibreDeformableDETRr50ss.pt800apache-2.0
LibreDeformableDETRr50ssdc5.pt800apache-2.0
LibreDeformableDETRr50.pt800apache-2.0
LibreDeformableDETRr50twostage.pt800apache-2.0
LibreDeformableDETRr50refine.pt800apache-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
Deformable DETR, SenseTime
Licença original
Apache-2.0
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 five checkpoints are converted from SenseTime's own Hugging Face mirrors, each of which declares apache-2.0 in its model card; that declaration, not the original repository's Google Drive release links, is the redistribution basis.

Citação

@article{zhu2020deformable,
  title={Deformable DETR: Deformable Transformers for End-to-End Object Detection},
  author={Zhu, Xizhou and Su, Weijie and Lu, Lewei and Li, Bin and Wang, Xiaogang and Dai, Jifeng},
  journal={arXiv preprint arXiv:2010.04159},
  year={2020}
}

Copiado do bloco de citação dos autores em github.com/fundamentalvision/Deformable-DETR#citing-deformable-detr.

Verificado com o LibreYOLO v1.5.0. As tabelas de suporte, os checkpoints e os números de benchmark desta página são gerados a partir da biblioteca lançada e dos pesos publicados, não escritos à mão.