Florence-2:推进多种视觉任务的统一表征

Florence-2:推进多种视觉任务的统一表征

Florence-2:推进多种视觉任务的统一表征

模型摘要

该 Hub 存储库包含来自微软的 Florence-2 模型的 HuggingFacetransformers实现。

Florence-2 是一种先进的视觉基础模型,它使用基于提示的方法来处理各种视觉和视觉语言任务。Florence-2 可以解释简单的文本提示来执行字幕、对象检测和分割等任务。它利用我们的 FLD-5B 数据集(包含 1.26 亿张图像中的 54 亿条注释)来掌握多任务学习。该模型的序列到序列架构使其能够在零样本和微调设置中表现出色,证明是一个具有竞争力的视觉基础模型。

资源和技术文档:

模型模型大小模型描述
佛罗伦萨-2-基0.23亿使用 FLD-5B 进行预训练的模型
佛罗伦萨-2-大0.77亿使用 FLD-5B 进行预训练的模型
佛罗伦萨-2-基-英尺0.23亿在一系列下游任务上对模型进行微调
佛罗伦萨-2-大-英尺0.77亿在一系列下游任务上对模型进行微调

如何开始使用该模型

使用以下代码开始使用该模型。所有模型均使用 float16 进行训练。  import requests import torch from PIL import Image from transformers import AutoProcessor, AutoModelForCausalLM device = "cuda:0" if torch.cuda.is_available() else "cpu"torch_dtype = torch.float16 if torch.cuda.is_available() else torch.float32 model = AutoModelForCausalLM.from_pretrained("microsoft/Florence-2-large", torch_dtype=torch_dtype, trust_remote_code=True).to(device) processor = AutoProcessor.from_pretrained("microsoft/Florence-2-large", trust_remote_code=True) prompt = "<OD>" url = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/transformers/tasks/car.jpg?download=true"image = Image.open(requests.get(url, stream=True).raw) inputs = processor(text=prompt, images=image, return_tensors="pt").to(device, torch_dtype) generated_ids = model.generate( input_ids=inputs["input_ids"], pixel_values=inputs["pixel_values"], max_new_tokens=1024, num_beams=3, do_sample=False) generated_text = processor.batch_decode(generated_ids, skip_special_tokens=False)[0] parsed_answer = processor.post_process_generation(generated_text, task="<OD>", image_size=(image.width, image.height)) print(parsed_answer)

任务

该模型能够通过改变提示来执行不同的任务。

首先,让我们定义一个函数来运行提示。

点击展开  import requests import torch from PIL import Image from transformers import AutoProcessor, AutoModelForCausalLM device = "cuda:0" if torch.cuda.is_available() else "cpu"torch_dtype = torch.float16 if torch.cuda.is_available() else torch.float32 model = AutoModelForCausalLM.from_pretrained("microsoft/Florence-2-large", torch_dtype=torch_dtype, trust_remote_code=True).to(device) processor = AutoProcessor.from_pretrained("microsoft/Florence-2-large", trust_remote_code=True) url = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/transformers/tasks/car.jpg?download=true"image = Image.open(requests.get(url, stream=True).raw) def run_example(task_prompt, text_input=None): if text_input is None: prompt = task_prompt else: prompt = task_prompt + text_input inputs = processor(text=prompt, images=image, return_tensors="pt").to(device, torch_dtype) 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] parsed_answer = processor.post_process_generation(generated_text, task=task_prompt, image_size=(image.width, image.height)) print(parsed_answer)

以下是可以执行的任务Florence-2

点击展开

标题  prompt = "<CAPTION>"run_example(prompt)

详细标题  prompt = "<DETAILED_CAPTION>"run_example(prompt)

更详细的说明  prompt = "<MORE_DETAILED_CAPTION>"run_example(prompt)

字幕到短语基础

标题到短语基础任务需要额外的文本输入,即标题。

字幕到短语基础结果格式:{'<CAPTION_TO_PHRASE_GROUNDING>': {'bboxes': [[x1, y1, x2, y2], ...], 'labels': ['', '', ...]}}  task_prompt = "<CAPTION_TO_PHRASE_GROUNDING>"results = run_example(task_prompt, text_input="A green car parked in front of a yellow building.")

物体检测

OD 结果格式:{'<OD>': {'bboxes': [[x1, y1, x2, y2], ...], 'labels': ['label1', 'label2', ...]} }  prompt = "<OD>"run_example(prompt)

密集区域标题

密集区域标题结果格式:{'<DENSE_REGION_CAPTION>' : {'bboxes': [[x1, y1, x2, y2], ...], 'labels': ['label1', 'label2', ...]}}  prompt = "<DENSE_REGION_CAPTION>"run_example(prompt)

区域提案

密集区域标题结果格式:{'<REGION_PROPOSAL>': {'bboxes': [[x1, y1, x2, y2], ...], 'labels': ['', '', ...]}}  prompt = "<REGION_PROPOSAL>"run_example(prompt)

光学字符识别 (OCR)  prompt = "<OCR>"run_example(prompt)

带区域的 OCR

带区域输出格式的 OCR:{'<OCR_WITH_REGION>': {'quad_boxes': [[x1, y1, x2, y2, x3, y3, x4, y4], ...], 'labels': ['text1', ...]}}  prompt = "<OCR_WITH_REGION>"run_example(prompt)

更多详细示例,请参阅

基准

Florence-2 零样本性能

下表展示了通用视觉基础模型在图像字幕和物体检测评估任务上的零样本性能。这些模型在训练阶段没有接触过评估任务的训练数据。

方法#参数COCO Cap. 测试 CIDErNoCaps val CIDErTextCaps val CIDErCOCO Det. val2017 mAP
火烈鸟80B84.3---
佛罗伦萨-2-基地0.23亿133.0118.770.134.7
佛罗伦萨-2-大0.77亿135.6120.872.837.5

下表继续与其他视觉语言评估任务的表现进行比较。

方法Flickr30k 测试 R@1Refcoco val 准确度Refcoco 测试-A 准确度Refcoco 测试-B 准确度Refcoco+ val 准确度Refcoco+ 测试-A 准确度Refcoco+ test-B 准确度参考认知值准确度Refcocog 测试准确度Refcoco RES 值
科斯莫斯-278.752.357.447.345.550.742.260.661.7-
佛罗伦萨-2-基地83.653.958.449.751.556.447.966.365.134.6
佛罗伦萨-2-大84.456.361.651.453.657.949.968.067.035.8

佛罗伦萨-2号微调性能

我们通过一系列下游任务对 Florence-2 模型进行微调,得到了两个通用模型Florence-2-base-ftFlorence-2-large-ft,可以执行广泛的下游任务。

下表比较了专家模型和通才模型在各种字幕和视觉问答 (VQA) 任务上的表现。专家模型针对每项任务进行了专门的微调,而通才模型则以与任务无关的方式在所有任务上进行了微调。符号“▲”表示使用外部 OCR 作为输入。

方法# 参数COCO Caption Karpathy 测试 CIDErNoCaps val CIDErTextCaps val CIDErVQAv2 测试-dev 加速TextVQA 测试-dev 权限VizWiz VQA 测试开发 Acc
专业模特
科卡2.1B143.6122.4-82.3--
BLIP-27.8亿144.5121.6-82.2--
吉特25.1B145.0126.9148.681.767.371.0
火烈鸟80B138.1--82.054.165.7
巴利17B149.1127.0160.0▲84.358.8 / 73.1▲71.6 / 74.4▲
帕利一X55B149.2126.3147.0 / 163.7▲86.071.4 / 80.8▲70.9 / 74.6▲
通才模型
统一IO2.9亿-100.0-77.9-57.4
佛罗伦萨-2-基-英尺0.23亿140.0116.7143.979.763.663.6
佛罗伦萨-2-大-英尺0.77亿143.3124.9151.181.773.572.6
方法# 参数COCO Det. val2017 mAPFlickr30k 测试 R@1RefCOCO val 准确率RefCOCO 测试-A 准确率RefCOCO 测试-B 准确率RefCOCO+ val 准确率RefCOCO+ 测试-A 准确率RefCOCO+ 测试-B 准确率RefCOCOg 值准确度RefCOCOg 测试准确度RefCOCO RES 值 mIoU
专业模特
序列TR---83.786.581.271.576.364.974.974.2-
聚合成型机---90.492.987.285.089.878.085.885.976.9
联合国际电信联盟0.74亿60.6-92.694.391.585.289.679.888.789.4-
雪貂13B--89.592.484.482.888.175.285.886.3-
通才模型
联合技术咨询委员会---88.691.183.881.085.471.684.684.7-
佛罗伦萨-2-基-英尺0.23亿41.484.092.694.891.586.891.782.289.882.278.0
佛罗伦萨-2-大-英尺0.77亿43.485.293.495.392.088.392.983.691.291.780.5

BibTex 和引文信息  @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} }

Read more

决策树算法介绍:原理与案例实现

决策树算法介绍:原理与案例实现

决策树算法介绍:原理与案例实现 决策树算法介绍:原理与案例实现 一、决策树算法概述 决策树是一种基本的分类与回归方法,它基于树形结构进行决策。决策树的每一个节点都表示一个对象属性的测试,每个分支代表该属性测试的一个输出,每个叶节点则代表一个类别或值。决策树学习通常包括三个步骤:特征选择、决策树的生成和决策树的剪枝。 二、决策树算法原理 1. 特征选择 特征选择是决策树学习的核心。它决定了在树的每个节点上选择哪个属性进行测试。常用的特征选择准则有信息增益、增益比和基尼不纯度。 * 信息增益:表示划分数据集前后信息的不确定性减少的程度。选择信息增益最大的属性作为当前节点的测试属性。 * 增益比:在信息增益的基础上考虑了属性的取值数量,避免了对取值数量较多的属性的偏好。 * 基尼不纯度:在CART(分类与回归树)算法中,使用基尼不纯度作为特征选择的准则。基尼不纯度越小,表示纯度越高。 2. 决策树的生成 根据选择的特征选择准则,从根节点开始,递归地为每个节点选择最优的划分属性,并根据该属性的不同取值建立子节点。直到满足停止条件(如所有样本属于同一类,

By Ne0inhk
他给女朋友做了个树莓派复古相机,算法代码可自己编写,成本不到700元

他给女朋友做了个树莓派复古相机,算法代码可自己编写,成本不到700元

手机拍照不够爽,带个单反又太重? 试试做个树莓派复古相机,还能自己编写处理算法的那种—— 成本不到700元。 没错,颜值很高,拍出来的照片也能打: 你也可以快速上手做一个。 如何制作一个树莓派复古相机 目前,这部相机的代码、硬件清单、STL文件(用于3D打印)和电路图都已经开源。 首先是硬件部分。 这部复古相机的硬件清单如下: 树莓派Zero W(搭配microSD卡)、树莓派高清镜头模组、16mm 1000万像素长焦镜头、2.2英寸TFT显示屏、TP4056微型USB电池充电器、MT3608、2000mAh锂电池、电源开关、快门键、杜邦线、3D打印相机外壳、黑色皮革贴片(选用) 至于3D打印的相机外壳,作者已经开源了所需的STL文件,可以直接上手打印。 材料齐全后,就可以迅速上手制作了~ 内部的电路图,是这个样子的: 具体引脚如下: 搭建好后,整体电路长这样: 再加上3D外壳(喷了银色的漆)和镜头,一部简易的树莓派复古相机就做好了。 至于软件部分,

By Ne0inhk
🚀Zeek.ai一款基于 Electron 和 Vite 打造的跨平台(支持 Windows、macOS 和 Linux) AI 浏览器

🚀Zeek.ai一款基于 Electron 和 Vite 打造的跨平台(支持 Windows、macOS 和 Linux) AI 浏览器

是一款基于 Electron 和 Vite 打造的跨平台(支持 Windows、macOS 和 Linux) AI 浏览器。 集成了 SearXNG AI 搜索、开发工具集合、 市面上最流行的 AI 工具门户,以及代码编写和桌面快捷工具等功能, 通过模块化的 Monorepo 架构,提供轻量级、可扩展且高效的桌面体验, 助力 AI 驱动的日常工作流程。

By Ne0inhk