LW-DETR
Um transformer de detecção com ViT puro que a Baidu posicionou como alternativa em tempo real aos detectores YOLO. O LibreYOLO traz cinco tamanhos para detecção, apenas inferência.
- Tarefas
- detection
- Tamanhos
- t, s, m, l, x at 640 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
- LW-DETR por Baidu, Apache-2.0. Artigo, código-fonte
- Licenças
- Código Apache-2.0, pesos Apache-2.0. Uso comercial
Instalação
O LW-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 localmente.
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreLWDETRt.pt")result = model(SAMPLE_IMAGE, save=True) for box in result.boxes: print(box.cls, box.conf, box.xyxy)libreyolo predict model=LibreLWDETRt.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 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 LW-DETR é apenas para inferência. O upstream treina com a
supervisão um-para-muitos do Group-DETR em vários grupos de queries e uma loss
de classificação ciente de IoU; essa receita não está conectada aqui, então
train() levanta NotImplementedError.
Variantes
Cinco tamanhos, todos compartilhando o encoder de ViT puro, o projetor multiescala e o decoder do DETR deformável, e todos rodando na mesma resolução de entrada. Os dois menores compartilham a largura do encoder e se diferenciam pela profundidade em blocos; os dois seguintes compartilham um encoder mais largo e se diferenciam por quantos níveis do projetor alimentam o decoder; o maior sobe para o encoder mais largo de todos.
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("LibreLWDETRt.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"])libreyolo val model=LibreLWDETRt.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 é 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.
from libreyolo import LibreYOLO model = LibreYOLO("LibreLWDETRt.pt")model.export(format="onnx", imgsz=640)model.export(format="tensorrt", imgsz=640, half=True)libreyolo export model=LibreLWDETRt.pt format=onnx imgsz=640libreyolo export model=LibreLWDETRt.pt format=tensorrt imgsz=640 half=Truefrom 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("LibreLWDETRt.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 | ||
| LibreLWDETRt.pt | 640 | apache-2.0 |
| LibreLWDETRs.pt | 640 | apache-2.0 |
| LibreLWDETRm.pt | 640 | apache-2.0 |
| LibreLWDETRl.pt | 640 | apache-2.0 |
| LibreLWDETRx.pt | 640 | 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
- LW-DETR, Baidu
- Licença original
- Apache-2.0
- Código-fonte original
- github.com/Atten4Vis/LW-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 published checkpoints are converted from the upstream Apache-2.0 Hugging Face release (xbsu/LW-DETR) and rehosted under the same license.
Citação
@article{chen2024lw,
title={LW-DETR: A Transformer Replacement to YOLO for Real-Time Detection},
author={Chen, Qiang and Su, Xiangbo and Zhang, Xinyu and Wang, Jian and Chen, Jiahui and Shen, Yunpeng and Han, Chuchu and Chen, Ziliang and Xu, Weixiang and Li, Fanrong and others},
journal={arXiv preprint arXiv:2406.03459},
year={2024}
}Copiado do bloco de citação dos autores em github.com/Atten4Vis/LW-DETR#10-citation.