大语言模型也可以进行图像分割:使用Gemini实现工业异物检测完整代码示例
Gemini模型在大语言模型市场中展现出独特的优势,特别是在计算机视觉领域具有显著的技术潜力。与其他主流大语言模型相比,Gemini在目标检测和图像分割方面具备原生支持能力。较大规模的Gemini模型经过专门训练,能够直接输出边界框坐标和分割掩码,这一特性在当前的大语言模型生态中较为罕见。虽然Qwen-VL和Moondream等模型也具备类似功能,但从性能表现来看,Gemini Pro系列在图像分割任务中具有明显优势。本文将通过一个实际应用场景——工业传送带异物检测,详细介绍如何利用Gemini的图像分割能力构建完整的解决方案。
Gemini图像分割功能机制
Gemini模型具备对图像中目标对象进行精确分割的能力,可同时输出分割掩码和边界框信息。实现这一功能的关键在于构造合适的提示(prompt)。
以下是标准的提示格式:
query="Detect ..."
prompt=f"{query}. Output a JSON list of segmentation masks where each entry contains the 2D bounding box in the key \"box_2d\", the segmentation mask in key \"mask\", and the text label in the key \"label\". Use descriptive labels."
该提示指导模型返回JSON格式的检测结果,其中
mask
字段包含经过base64编码的PNG图像数据,精确描述了识别对象的像素级区域信息:
[
{
"box_2d": [120, 514, 600, 998],
"mask": "data:image/png;base64,iVBORw0KGgoAAA...",
"label": "my label",
},
{
"box_2d": [220, 29, 609, 320],
"mask": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAAAAAB5Gfe6AAAAsElEQVR42....",
"label": "my other label",
},
...
]
项目环境搭建
为了实现完整的图像分割应用,需要建立规范的项目结构。创建名为
gemini_segmentation_project
的项目目录,其组织结构如下:
gemini_segmentation_project/
├── .env
├── main.py
├── image.png
└── requirements.txt
首先配置环境变量文件
.env
,用于安全存储API密钥信息:
#.env
GEMINI_API_KEY="YOUR_GEMINI_API_KEY_HERE"
项目需要一张测试图像,本示例假设使用包含多个物品的传送带图像,将其保存为
image.png
并放置在项目根目录下。
建议为项目创建独立的Python虚拟环境,以确保依赖包管理的隔离性和项目的可重现性。
https://avoid.overfit.cn/post/686368d5afc44b4397c299f1ef97319a