构建一个工具,展示 Gemini Pro 如何为图像中的对象返回边界框

2024 年 8 月 26 日:

  • 作者在研究不同多模型 LLM API 工作时,偶然在 Google Gemini 视觉文档中发现可让模型返回图像中物体边界框坐标的功能,OpenAI 的 GPT-4o 和 Anthropic 的 Claude 3 及 3.5 模型暂不具备此功能。
  • 作者使用 Google 的 Python 库尝试后得到边界框坐标,如[200, 90, 745, 527]和[300, 610, 904, 937],但需验证其有效性。
  • 作者借助 Claude 3.5 Sonnet 构建初始调试工具,可粘贴坐标并选择图像查看渲染结果,新工具https://tools.simonwillison.net/gemini-bbox可直接在浏览器中用图像提示 Gemini 1.5 Pro 并渲染返回的边界框。首次运行需获取 Gemini API 密钥并存储在浏览器本地存储中。
  • 构建此工具主要通过提示 Claude 3.5 Sonnet,从冗长对话开始构建原始工具,后结合其他示例代码实现调用 Gemini API 的功能。
  • 过程中遇到图像方向 bug,某些测试中边界框显示位置不对,经排查是 iPhone 拍摄照片的 TIFF 方向元数据影响,最终通过将用户提供的图像渲染到<canvas>元素再导出为 JPEG 解决,还构建了可读取 JPEG 中 TIFF 方向数据的工具https://tools.simonwillison.net/tiff-orientation。此过程中多次在不同模型间复制代码,如将 GPT-4o 写的 Python 代码粘贴到 Claude 3.5 Sonnet 中帮助写正确的 JavaScript 代码。对于此低风险项目的代码质量,作者不太在意,在探索和原型制作工作中更倾向于根据模型输出进行修改直到达到期望效果。
阅读 7
0 条评论