0


在目标检测数据集上微调Florence-2

    Florence-2是由微软开源的轻量级视觉-语言模型,采用MIT许可。该模型在任务如图像描述、目标检测、定位和分割中展示了强大的零样本和微调能力。

    图1。图示展示了每个任务所表达的空间层次和语义细粒度水平。来源:Florence-2:推进多种视觉任务的统一表示。

    该模型将图像和任务提示作为输入,并以文本格式生成所需结果。它使用DaViT视觉编码器将图像转换为视觉标记嵌入,然后将这些嵌入与BERT生成的文本嵌入连接在一起,并通过基于Transformer的多模态编码器-解码器处理,以生成响应。

            图2。Florence-2架构概览。来源:Florence-2:推进多种视觉任务的统一表示。

1.设置

配置您的API密钥
要微调Florence-2,您需要提供HuggingFace Token和Roboflow API密钥。按照以下步骤操作:

  1. 生成HuggingFace Token:- 打开您的HuggingFace设置页面https://huggingface.co/login?next=%2Fsettings%2Fprofile。- 点击“Access Tokens”,然后点击“New Token”以生成新的令牌。

  2. 获取Roboflow API密钥:- 前往您的Roboflow设置页面。Sign in to Roboflow- 点击“Copy”。这将您的私钥复制到剪贴板。

  3. 在Colab中存储密钥:- 打开Colab,进入左侧面板并点击“Secrets (🔑)”。- 将HuggingFace Access Token存储在名称为HF_TOKEN的密钥中。- 将Roboflow API Key存储在名称为ROBOFLOW_API_KEY的密钥中。

     通过这些步骤,您可以成功配置API密钥并开始微调Florence-2模型。确保替换
    
YOUR_HF_TOKEN

YOUR_ROBOFLOW_API_KEY

YOUR_PROJECT_NAME

YOUR_DATASET_VERSION

为实际值。

选择运行环境

    确保我们有GPU的访问权限。我们可以使用 
nvidia-smi

命令来检查。如果有任何问题,请导航到 Edit -> Notebook settings -> Hardware accelerator,将其设置为 L4 GPU,然后点击 Save

检查GPU可用性

在Colab中,运行以下代码来检查是否有GPU可用:

python

!nvidia-smi

更改硬件加速器设置

如果没有检测到GPU,请按照以下步骤操作:

  1. 在Colab的菜单栏中,点击 Edit
  2. 选择 Notebook settings
  3. Hardware accelerator 下拉菜单中,选择 GPU(特别是L4 GPU,如果有)。
  4. 点击 Save

确认更改后,再次运行

nvidia-smi

命令来确保GPU已经启用。

示例代码

# 检查GPU可用性
!nvidia-smi

# 如果没有GPU,按照上述步骤更改硬件加速器为L4 GPU

这样您就可以确保您的Colab Notebook正在使用GPU,从而加速模型的微调过程。

2.下载数据和模型:

# @title Imports

import io
import os
import re
import json
import torch
import html
import base64
import itertools

import numpy as np
import supervision as sv

from google.colab import userdata
from IPython.core.display import display, HTML
from torch.utils.data import Dataset, DataLoader
from transformers import (
    AdamW,
    AutoModelForCausalLM,
    AutoProcessor,
    get_scheduler
)
from tqdm import tqdm
from typing import List, Dict, Any, Tuple, Generator
from peft import LoraConfig, get_peft_model
from PIL import Image
from roboflow import Roboflow

加载模型和处理器

    您需要使用 
AutoModelForCausalLM

AutoProcessor

类从

transformers

库中加载模型和处理器。请注意,由于这个模型不是标准的

transformers

模型,因此您需要将

trust_remote_code

设置为

True

3.运行预训练的 Florence-2 模型

a.目标检测推理示例

# @title Example object detection inference

image = Image.open(EXAMPLE_IMAGE_PATH)
task = "<OD>"
text = "<OD>"

inputs = processor(text=text, images=image, return_tensors="pt").to(DEVICE)
generated_ids = model.generate(
    input_ids=inputs["input_ids"],
    pixel_values=inputs["pixel_values"],
    max_new_tokens=1024,
    num_beams=3
)
generated_text = processor.batch_decode(generated_ids, skip_special_tokens=False)[0]
response = pro

本文转载自: https://blog.csdn.net/u012374012/article/details/140318321
版权归原作者 cv2016_DL 所有, 如有侵权,请联系我们删除。

“在目标检测数据集上微调Florence-2”的评论:

还没有评论