Florence-2
O Florence-2 é o modelo fundacional de visão da Microsoft, guiado por um token de tarefa em vez de passar por uma cabeça de detecção fixa. O LibreYOLO o envolve como detector de objetos de vocabulário aberto: a lista de classes é informada na hora de predizer.
- Tarefas
- detection
- Tamanhos
- base, large at 768 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
- Florence-2 por Microsoft, MIT. Artigo, código-fonte
- Licenças
- Código MIT, pesos MIT. Uso comercial
Instalação
O Florence-2 pertence ao nível VLM-como-detector do LibreYOLO, uma superfície de
produto separada das famílias baseadas em checkpoints e com sua própria fábrica.
Ele precisa do extra vlm.
pip install "libreyolo[vlm]"Predição
Os pesos são baixados do Hugging Face no primeiro uso e ficam em cache
localmente. O LibreYOLO baixa o reenvio do checkpoint feito pela
florence-community em vez do repositório original microsoft/Florence-2-*; veja
Licenciamento para saber por quê.
from libreyolo import LibreVLM, SAMPLE_IMAGE model = LibreVLM("florence-2-base")model.set_classes(["car", "person", "traffic light"])result = model.predict(SAMPLE_IMAGE, save=True) for box in result.boxes: print(box.cls, box.conf, box.xyxy)from libreyolo import LibreVLM model = LibreVLM("florence-2-base")model.set_classes(["car", "person", "traffic light"]) # Qualquer fonte que a biblioteca aceita: arquivo, pasta, URL, índice# de webcam, stream RTSP ou uma lista .streamsfor result in model.predict("clip.mp4", stream=True, save=True): print(len(result.boxes))Esta família é carregada pela fábrica LibreVLM(), e não por LibreYOLO(): as
famílias VLM não declaram nenhum carregador de checkpoint, então o roteamento por
sufixo de arquivo descrito em outras páginas de modelos não se aplica aqui.
set_classes() define o vocabulário que o Florence-2 deve procurar na imagem;
ele é persistente, então continua valendo em todas as chamadas posteriores a
predict()/track() até você defini-lo de novo. O Results devolvido traz
boxes no mesmo formato de qualquer outra família, mas toda detecção carrega a
mesma confiança de placeholder, então filtrar por conf é tudo ou nada em vez de
uma ordenação, e iou não tem efeito: o wrapper do Florence-2 monta a lista de
detecções diretamente a partir da saída parseada do token de tarefa, sem nenhuma
etapa de deduplicação. Aqui chat() lança NotImplementedError, porque o
Florence-2 é guiado pelo token de tarefa <OPEN_VOCABULARY_DETECTION> e não por
um template de chat. A CLI do LibreYOLO não cobre este nível: não existe uma
forma libreyolo predict model=... para ele. Veja predição para
fontes, streaming e tratamento de resultados.
Variantes
Dois tamanhos: Florence-2-base e Florence-2-large, ambos a 768 px, carregados
como LibreVLM("florence-2-base") ou LibreVLM("florence-2-large"). O LibreYOLO
não publicou nenhum benchmark comparando a acurácia entre eles.
O LibreYOLO não treina, valida nem exporta o Florence-2: train(), val() e
export() lançam NotImplementedError em todas as famílias deste nível (veja o
nível de suporte acima). Faça fine-tuning do Florence-2 upstream e carregue os
pesos resultantes se você precisar de um vocabulário personalizado embutido;
confira a olho a saída de predict() em vez de recorrer a uma passada de
validação no estilo COCO, já que toda detecção carrega a mesma confiança de
placeholder.
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
- Florence-2, Microsoft
- Licença original
- MIT
- Código-fonte original
- huggingface.co/microsoft/Florence-2-large
- Código do LibreYOLO
- MIT
- Pesos
- MIT, distribuído pelos autores. O LibreYOLO não hospeda nem espelha esses pesos.
- Interpretação
- MIT is a permissive license, so these weights can be used in commercial and closed-source products, provided the copyright notice and license text travel with any copy you redistribute. LibreYOLO downloads the florence-community re-upload of the checkpoint (florence-community/Florence-2-base and florence-community/Florence-2-large) rather than the original microsoft/Florence-2-* repositories, because those ship with custom remote code that no longer loads on current transformers releases. florence-community republishes the same weights through the native Florence2ForConditionalGeneration class, also under MIT, so nothing about the license changes.
Citação
@article{xiao2023florence,
title={Florence-2: Advancing a unified representation for a variety of vision tasks},
author={Xiao, Bin and Wu, Haiping and Xu, Weijian and Dai, Xiyang and Hu, Houdong and Lu, Yumao and Zeng, Michael and Liu, Ce and Yuan, Lu},
journal={arXiv preprint arXiv:2311.06242},
year={2023}
}Copiado do bloco de citação dos autores em huggingface.co/microsoft/Florence-2-large#bibtex.