查看 Markdown

Florence-2

Florence-2 是微软的视觉基础模型,靠一个任务 token 来提示,而不是走一个固定的检测 head。LibreYOLO 把它包装成一个开放词汇目标检测器:类别列表在预测时给出。

任务
detection
尺寸
base, large at 768 px
安装
pip install libreyolo
支持层级
兄弟层级,自 v 起。一个独立的产品面,有自己的工厂和契约。
上游
Florence-2,由 Microsoft 发布,采用 MIT 许可。论文源码
许可
代码采用 MIT,权重采用 MIT。商用

安装

Florence-2 属于 LibreYOLO 的「VLM 当检测器」这一层,它和那些基于检查点 (checkpoint)的家族是相互独立的两块产品面,有自己的工厂。它需要 vlm extra。

bash
pip install "libreyolo[vlm]"

预测

权重在首次使用时从 Hugging Face 下载,并缓存在本地。LibreYOLO 下载的是 florence-community 对这个检查点的重新上传版本,而不是原始的 microsoft/Florence-2-* 仓库;原因见许可证一节。

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)
视频
from libreyolo import LibreVLM model = LibreVLM("florence-2-base")model.set_classes(["car", "person", "traffic light"]) # 库接受的任何数据源:文件、文件夹、URL、摄像头索引、# RTSP 流,或者一个 .streams 列表for result in model.predict("clip.mp4", stream=True, save=True):    print(len(result.boxes))

这个家族通过 LibreVLM() 工厂加载,而不是 LibreYOLO():VLM 家族不声明检查点 加载器,所以其他模型页面上讲的那套按文件后缀路由在这里不适用。set_classes() 设定要让 Florence-2 在图像里找的词汇表;它粘住不放,会在之后每一次 predict()/track() 调用里一直生效,直到你再设一次。返回的 Results 带的 boxes 和其他任何家族形状相同,但每个检测结果带的都是同一个占位置信度,所以按 conf 过滤是全有或全无,而不是一种排序,iou 也没有任何作用:Florence-2 的封装 直接用解析后的任务 token 输出构建检测列表,中间没有去重这一步。这里 chat() 会 抛出 NotImplementedError,因为 Florence-2 是由 <OPEN_VOCABULARY_DETECTION> 这个任务 token 驱动的,而不是靠一套 chat 模板。LibreYOLO 的 CLI 不覆盖这一层: 它没有 libreyolo predict model=... 这种形式。数据源、流式处理和结果处理见 预测

变体

两种尺寸:Florence-2-base 和 Florence-2-large,都是 768 px,分别用 LibreVLM("florence-2-base")LibreVLM("florence-2-large") 加载。LibreYOLO 还没有发布过比较两者精度的基准测试。

LibreYOLO 不训练、不验证、也不导出 Florence-2:train()val()export() 对这一层里的每个家族都抛出 NotImplementedError(见上面的支持层级)。如果你需要 把一份自定义词汇表固化进模型,就在上游微调 Florence-2,再加载得到的权重;用肉眼 检查 predict() 的输出,而不是跑一遍 COCO 式的验证,因为每个检测结果带的都是同 一个占位置信度。

许可证

请检查你所下载的具体权重在 Hugging Face 仓库中的许可。LibreYOLO 组织里的每个检查点都附有许可,同一家族内也不一定相同。该仓库是权威来源;以下摘要说明本页上次验证时适用的情况。

这里只说明涉及的许可证,不构成法律意见。如果答案对商用很重要,请自行阅读许可证并咨询法律顾问。

原始工作
Florence-2, Microsoft
上游许可
MIT
LibreYOLO 代码
MIT
权重
采用 MIT 许可,由作者分发。LibreYOLO 不托管或镜像这些权重。
解读
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.

引用

@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}
}

复制自作者在 huggingface.co/microsoft/Florence-2-large#bibtex 上提供的引用块。

已针对 LibreYOLO v1.5.0 验证。本页的支持表、检查点和基准测试数据由已发布的库和权重生成,并非手工编写。