Florence-2: Dominando Múltiplas Tarefas de Visão com um…

Florence-2: Dominando Múltiplas Tarefas de Visão com um...

Carregando o protótipo Florence-2 e uma imagem de modelo

Depois instalar e importar as bibliotecas necessárias (conforme demonstrado no notebook Colab que acompanha), começamos carregando o protótipo Florence-2, o processador e a imagem de ingresso de uma câmera:

#Load model:
model_id = ‘microsoft/Florence-2-large’
model = AutoModelForCausalLM.from_pretrained(model_id, trust_remote_code=True, torch_dtype='auto').eval().cuda()
processor = AutoProcessor.from_pretrained(model_id, trust_remote_code=True)

#Load image:
image = Image.open(img_path)

Funções Auxiliares

Neste tutorial, utilizaremos diversas funções auxiliares. O mais importante é o run_example função meão, que gera uma resposta do protótipo Florence-2.

O run_example A função combina o prompt de tarefa com qualquer ingresso de texto suplementar (se fornecida) em um único prompt. Usando o processorele gera embeddings de texto e imagem que servem uma vez que entradas para o protótipo. A magia acontece durante o model.generate lanço, onde a resposta do protótipo é gerada. Cá está uma estudo de alguns parâmetros principais:

  • max_new_tokens=1024: define o comprimento sumo da saída, permitindo respostas detalhadas.
  • do_sample=Falso: Garante uma resposta determinística.
  • num_beams=3: implementa a pesquisa de lio com os 3 tokens mais prováveis ​​em cada lanço, explorando múltiplas sequências potenciais para encontrar o melhor resultado universal.
  • early_stopping=Falso: Garante que a pesquisa de lio continue até que todos os feixes atinjam o comprimento sumo ou um token de término de sequência seja gerado.

Por último, a saída do protótipo é decodificada e pós-processada com processor.batch_decode e processor.post_process_generation para produzir a resposta de texto final, que é retornada pelo run_example função.

def run_example(image, task_prompt, text_input=''):

prompt = task_prompt + text_input

inputs = processor(text=prompt, images=image, return_tensors=”pt”).to(‘cuda’, torch.float16)

generated_ids = model.generate(
input_ids=inputs[“input_ids”].cuda(),
pixel_values=inputs[“pixel_values”].cuda(),
max_new_tokens=1024,
do_sample=False,
num_beams=3,
early_stopping=False,
)

generated_text = processor.batch_decode(generated_ids, skip_special_tokens=False)[0]
parsed_answer = processor.post_process_generation(
generated_text,
task=task_prompt,
image_size=(image.width, image.height)
)

return parsed_answer

Outrossim, utilizamos funções auxiliares para visualizar os resultados (draw_bbox ,draw_ocr_bboxes e draw_polygon) e mourejar com a conversão entre formatos de caixas delimitadoras (convert_bbox_to_florence-2 e convert_florence-2_to_bbox). Eles podem ser explorados no caderno Colab dentro.

Florence-2 pode realizar uma variedade de tarefas visuais. Vamos explorar alguns de seus recursos, começando pela legenda de imagens.

1. Tarefas relacionadas à geração de legendas:

1.1 Gerar legendas

Florence-2 pode gerar legendas de imagens em vários níveis de pormenor, usando o '

'

, '' ou '' prompts de tarefas.

print (run_example(image, task_prompt=''))
# Output: 'A black camera sitting on top of a wooden table.'

print (run_example(image, task_prompt=''))
# Output: 'The image shows a black Kodak V35 35mm film camera sitting on top of a wooden table with a blurred background.'

print (run_example(image, task_prompt=''))
# Output: 'The image is a close-up of a Kodak VR35 do dedo camera. The camera is black in color and has the Kodak logo on the top left corner. The body of the camera is made of wood and has a textured grip for easy handling. The lens is in the center of the body and is surrounded by a gold-colored ring. On the top right corner, there is a small LCD screen and a flash. The background is blurred, Sua visita nos ajuda a continuar oferecendo o melhor para você! it appears to be a wooded area with trees and greenery.'

O protótipo descreve com precisão a imagem e seu entorno. Ele ainda identifica a marca e o protótipo da câmera, demonstrando sua capacidade de OCR. No entanto, no '' tarefa existem pequenas inconsistências, o que é esperado de um protótipo zero-shot.

1.2 Gerar legenda para uma determinada caixa delimitadora

Florence-2 pode gerar legendas para regiões específicas de uma imagem definidas por caixas delimitadoras. Para isso, é necessária a localização da caixa delimitadora uma vez que ingresso. Você pode extrair a categoria com '' ou uma descrição com '' .

Para sua conveniência, adicionei um widget ao notebook Colab que permite traçar uma caixa delimitadora na imagem e codificar para convertê-la para o formato Florence-2.

task_prompt = ''
box_str = ''
results = run_example(image, task_prompt, text_input=box_str)
# Output: 'camera lens'
task_prompt = ''
box_str = ''
results = run_example(image, task_prompt, text_input=box_str)
# Output: 'camera'

Neste caso, o '' identificou a lente, enquanto o '' era menos específico. No entanto, esse desempenho pode variar com imagens diferentes.

2. Tarefas relacionadas à detecção de objetos:

2.1 Gerar caixas delimitadoras e texto para objetos

Florence-2 pode identificar regiões densamente compactadas na imagem e fornecer as coordenadas da caixa delimitadora e seus rótulos ou legendas relacionadas. Para extrair caixas delimitadoras com rótulos, use o prompt de tarefa:

Sua visita nos ajuda a continuar oferecendo o melhor para você! bp ru bb bk">results = run_example(image, task_prompt='')
draw_bbox(image, results[''])

Para extrair caixas delimitadoras com legendas, use '' prompt de tarefa:

Sua visita nos ajuda a continuar oferecendo o melhor para você! qw b bg rw rx l ry rz">task_prompt results = run_example(image, task_prompt= '')
draw_bbox(image, results[''])
A imagem à esquerda mostra os resultados do ‘‘prompt de tarefa, enquanto a imagem à direita demonstra’

2.2 Detecção de objetos aterrados em texto

Florence-2 também pode realizar detecção de objetos baseada em texto. Ao fornecer nomes ou descrições de objetos específicos uma vez que ingresso, Florence-2 detecta caixas delimitadoras em torno dos objetos especificados.

task_prompt = ''
results = run_example(image,task_prompt, text_input=”lens. camera. table. logo. flash.”)
draw_bbox(image, results[''])
Tarefa CAPTION_TO_PHRASE_GROUNDING com a ingresso de texto: “lens. câmera. mesa. logotipo. clarão.”

3. Tarefas relacionadas à segmentação:

Florence-2 também pode gerar polígonos de segmentação baseados em texto ('') ou por caixas delimitadoras (''):

results = run_example(image, task_prompt='', text_input=”camera”)
draw_polygons(image, results[task_prompt])
results = run_example(image, task_prompt='', text_input="")
draw_polygons(output_image, results[''])
A imagem à esquerda mostra os resultados da tarefa REFERRING_EXPRESSION_SEGMENTATION com o texto ‘câmera’ uma vez que ingresso. A imagem à direita demonstra a tarefa REGION_TO_SEGMENTATION com uma caixa delimitadora ao volta da lente fornecida uma vez que ingresso.

4. Tarefas relacionadas ao OCR:

Florence-2 demonstra fortes capacidades de OCR. Ele pode extrair texto de uma imagem com o '' prompt de tarefa e extraia o texto e sua localização com '' :

results = run_example(image,task_prompt)
draw_ocr_bboxes(image, results[''])

Florence-2 é um protótipo de linguagem de visão (VLM) versátil, capaz de mourejar com múltiplas tarefas de visão em um único protótipo. Seus recursos de disparo zero são impressionantes em diversas tarefas, uma vez que legendagem de imagens, detecção de objetos, segmentação e OCR. Embora o Florence-2 tenha um bom desempenho repentino, ajustes adicionais podem adequar ainda mais o protótipo a novas tarefas ou melhorar seu desempenho em conjuntos de dados exclusivos e personalizados.

Tags:

Crédito: Nascente Original

Adriano Pina

Adriano Pina

Análise de Sistemas | SEO e Google Ads | Fundador da Loja Script PHP Aqui & Marca Shoslh de tecnologia

Especialista em transformar ideias em soluções digitais e acelerar o crescimento online.

Deixe um comentário

Tem perguntas? Nos envia sua mensagem 24/7!

(17) 99100-0874

Endereço & Contato

Centro, Interior de São Paulo
E-mail: [email protected]

Links Úteis
BAIXAR APP | SCRIPT PHP AQUI
Certificados
0
    0
    Seu carrinho
    Seu carrinho está vazio

    Usamos cookies para garantir que oferecemos a melhor experiência em nosso site. 

       

    X

    Clique em um de nossos representantes abaixo para conversar no WhatsApp ou envie um email para: 📧 [email protected]

    Precisa de ajuda fale conosco?