OWLv2
O OWLv2 é um detector de objetos de vocabulário aberto, desenvolvido pela Google Research, que pontua regiões da imagem contra embeddings de texto vindos de um codificador no estilo CLIP. O LibreYOLO o encapsula como uma família somente de predição no seu tier de detectores de vocabulário aberto.
- Tarefas
- detection
- Tamanhos
- b16, l14 at 960 to 1008 px
- Instalação
pip install libreyolo- Nível de suporte
- Nível irmão, desde a v. Uma superfície de produto separada, com sua própria fábrica e seu próprio contrato.
- Origem
- OWLv2 por Google Research, Apache-2.0. Artigo, código-fonte
- Licenças
- Código MIT, pesos Apache-2.0. Uso comercial
Instalação
O OWLv2 é carregado pelo tier de detectores de vocabulário aberto do LibreYOLO,
que precisa do extra openvocab:
pip install "libreyolo[openvocab]"Esse extra traz junto transformers e timm, as bibliotecas da Hugging Face
que este tier chama.
Predição
O OWLv2 não é um checkpoint que o LibreYOLO carrega por meio de LibreYOLO().
Ele é carregado pela factory irmã LibreOpenVocab, que baixa um snapshot da
Hugging Face no primeiro uso e o guarda em cache em weights/.
from libreyolo import LibreOpenVocab, SAMPLE_IMAGE model = LibreOpenVocab("owlv2-b16")model.set_classes(["person", "dog", "skateboard"]) result = model.predict(SAMPLE_IMAGE, conf=0.1)for box in result.boxes: print(box.cls, box.conf, box.xyxy)from libreyolo import LibreOpenVocab, SAMPLE_IMAGE # Não chamar set_classes() mantém o vocabulário COCO-80 padrão do tier.model = LibreOpenVocab("owlv2-l14")result = model.predict(SAMPLE_IMAGE, conf=0.1)print(result.names)set_classes() define um vocabulário de texto persistente: chame de novo para
substituir a lista, ou não chame para manter os rótulos COCO-80 padrão. Cada
label é envolvida em um template de prompt fixo antes de chegar à torre de
texto, do mesmo jeito que o Owlv2ForObjectDetection do transformers foi
treinado.
O OWLv2 não tem limiar de token de texto: só conf filtra as detecções, e
passar text_threshold levanta erro. iou é aceito por compatibilidade de API,
mas emite um aviso e não faz nada, já que nada aqui roda non-maximum
suppression. imgsz e augment=True são rejeitados de saída: o processador do
transformers é quem cuida do redimensionamento, e o data augmentation em tempo
de teste está fora do escopo deste tier. predict() em uma única imagem retorna
um Results, não uma lista; passe um diretório, uma lista de imagens ou
stream=True com uma fonte de vídeo para obter vários. Não há caminho de CLI
para esta família, libreyolo predict só carrega checkpoints .pt por meio de
LibreYOLO(), então as famílias de LibreOpenVocab rodam a partir do Python.
Veja predição para tipos de fonte e streaming.
Variantes
Dois checkpoints, b16 (base, patch size 16) e l14 (large, patch size 14).
b16 é o tamanho padrão deste tier quando nenhum é informado. Ambos espelham o
release oficial da Google Research por meio do Owlv2ForObjectDetection do
transformers, baixado uma vez para um snapshot da Hugging Face hospedado pelo
LibreYOLO que preserva os arquivos originais. Ainda não há números publicados de
acurácia ou de latência para esta família.
Treinamento, validação de dataset e exportação estão todos fora do escopo deste
tier: train(), val() e export() levantam NotImplementedError de forma
incondicional. Este é um wrapper somente de predição em volta de um checkpoint
publicado.
Checkpoints
Todos os arquivos de pesos publicados desta família.
| Arquivo | Entrada (px) | Licença dos pesos |
|---|---|---|
| Detection | ||
| LibreOWLv2b16.pt | 960 | apache-2.0 |
| LibreOWLv2l14.pt | 1008 | 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
- OWLv2, Google Research
- Licença original
- Apache-2.0
- Código-fonte original
- github.com/google-research/scenic/tree/main/scenic/projects/owl_vit
- 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 checkpoints can be used in commercial and closed-source products. It asks you to keep the license text and attribution notices with any copy of the weights you redistribute, and it grants a patent license. LibreYOLO vendors no OWLv2 model source of its own: LibreOWLv2 calls the Apache-2.0 `transformers` implementation, `Owlv2ForObjectDetection`, directly, and downloads the official checkpoints into a LibreYOLO-hosted mirror repository that preserves the upstream snapshot files.
Citação
@article{minderer2023scaling,
title={Scaling Open-Vocabulary Object Detection},
author={Matthias Minderer, Alexey Gritsenko, Neil Houlsby},
journal={NeurIPS},
year={2023},
}Copiado do bloco de citação dos autores em github.com/google-research/scenic/blob/main/scenic/projects/owl_vit/README.md#references.