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.

bash
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ê.

Python
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)
Vídeo
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 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.

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.