图像标注与对象检测指南

在数字时代,图像和视频内容的爆炸性增长使得对这些内容进行有效管理变得至关重要。计算机视觉技术,尤其是图像标注,为提供了一种自动化的方法来识别和分类视觉内容。通过Roboflow图像标注API,可以利用CLIP机器学习模型的强大功能,为图像生成一组建议标签,并找到最能代表图像内容的标签。

本指南将向展示如何使用Roboflow图像标注API为图像打上标签,并讨论如何使用对象检测来识别特定对象。完成本指南后,将能够根据一组标签为图像检索到最相关的标签。例如,给定建议标签“建筑工地”、“繁忙街道”和“其他”,图像被标注为“建筑工地”。

什么是图像标注?

图像标注是指选择一个或多个代表与图像相关属性的标签。有两种方式可以对图像进行标注:手动和自动。手动标注适用于需要为少量图像分配特定标签的情况(例如,网站上的“特色”部分)。对于大量图像,自动标注可以节省时间。

图像标注的一个常见应用是实现更丰富的语义搜索体验。例如,考虑一个项目,正在调查给定旅程中的建筑数量。可以使用图像标签,通过类别轻松搜索图像(即图像是否包含建筑工地、街道或其他)。

使用Roboflow图像标注API

Roboflow维护了一个图像标注API,可以使用它为图像分配标签。这个API由CLIP提供支持,CLIP是由OpenAI开发的开源计算机视觉模型,具有商业和私人使用权限。有了CLIP,可以提供一组标签,CLIP会告诉哪个标签最有可能代表图像中的内容。不需要任何计算机视觉经验即可使用API。

没有允许的标签列表。可以用自己的标签进行实验。要使用API,首先创建一个免费的Roboflow账户。然后,下载入门图像标注脚本。这个脚本包含了需要为图像打标签的所有代码。

git clone https://github.com/roboflow/templates cd examples/image-tagging pip install requests

可以使用以下代码运行脚本:

python tag.py –image=image.jpg –tags="construction site, busy street, something else" –roboflow_api_key="key"

这个脚本接受两个参数:

  • image: 想要处理的图像。
  • tags: 应该评估的建议标签。
  • roboflow_api_key: Roboflow API密钥。

脚本将为每个图像返回一个标签。让在一张图像上尝试一下:

调用图像标注API的脚本返回了以下响应:

Most similar tag: construction site

如果想了解更多关于如何查询API的信息,请查看“app.py”脚本中的Python代码。

在幕后,这个脚本会发出一个带有图像的base64编码版本和建议标签的HTTP POST请求。Roboflow返回显示每个标签代表图像的可能性的概率。概率按照请求中发送的类别顺序返回。然后脚本将每个类别映射到其概率,并找到最高值。

阅读“app.py”脚本中的源代码,了解更多关于脚本如何工作的信息。

寻找特定的标注API

Roboflow图像标注API能够分配与广泛概念相关的标签。话虽如此,图像标注API无法理解标签中的每个概念。这时,提供微调模型的API就派上用场了。

下面,将展示如何找到预构建的标注API,并分享资源,教如何构建自己的自定义系统来检测图像中的对象或为图像打上标签。

在Roboflow Universe中找到检测系统

考虑一个场景,希望能够根据货架是否满或包含空槽来为图像打上标签。通用图像标注API的表现可能不如专门为此目的设计的API。这是因为理想情况下希望能够计算产品和空位的数量。

可以探索Roboflow Universe,找到一个帮助为图像打上标签的API。

Roboflow Universe拥有超过50,000个对象检测和分类API,可以使用这些API为图像打上标签。对象检测API让可以找到图像中特定对象的位置。分类API为整个图像返回一个或多个标签。

可以在Roboflow Universe上搜索“零售冷藏模型”,看看是否有计算机视觉模型可以帮助。

点击模型查看是否有满足需求的模型。如果在默认的“主题”标签上没有找到任何相关结果,请点击“元数据”以探索更多结果。

“元数据”标签上的第一个结果,“零售冷藏”,看起来很有希望。可以在与模型相关的页面上的“类别”列表中看到模型可以识别的类别。

要测试模型,请点击页面左侧的“模型”。将出现一个框,可以在其中上传图像进行测试。还可以从模型训练的数据集中选择测试集中的图像。

这是一个API运行的示例:

在这个示例中,货架上有3个位置没有产品。空位由上图中的紫色边界框表示。空位被分配了“空”类别。模型返回的所有预测都列在左侧的JSON输出中。

可以编写一些逻辑,规定如果有一个或多个“空”类别的实例,就应该给图像一个特殊标签。

在超市中,这样的系统可以与货架编号结合使用,以通知工作人员何时货架上有空产品,或者当货架上的产品数量超过一定数量时。

创建自定义系统为图像打上标签

也可以创建自己的自定义系统来为图像打上标签。主要有两个选项:训练分类模型或训练对象检测模型。

分类模型返回代表整个图像内容的一个或多个标签。另一方面,对象检测模型返回图像中感兴趣对象的确切位置。Roboflow图像标注API使用分类,而上一节中的零售冷藏示例使用对象检测。

要了解更多关于在Roboflow上训练自己的模型的信息,请查看Roboflow入门指南。借助入门指南,可以在没有任何计算机视觉经验的情况下,在下午训练出模型的第一个版本。

由CLIP支持的Roboflow图像标注API使能够提供图像和标签列表。API将返回显示图像与每个标签相关性的值。然后,可以将具有最大对应分数的标签分配给图像。

然而,通用标注API无法识别所有对象。如果需要识别API难以识别的对象,或者如果需要知道对象在图像中的确切位置,建议探索Roboflow Universe以找到微调模型。还可以训练自己的模型,它可以找到想要识别的确切对象。

当准备好开始构建使用标注API的逻辑时,请查看supervision,这是一个开源Python包,包含一系列可以使用的实用工具,用于构建使用计算机视觉的应用程序。

使用supervision,可以:

  • 按类别、边界框区域、置信度等过滤预测。
  • 在图像上绘制对象检测和分割预测。
  • 使用ByteTrack进行对象跟踪。
  • 使用SAHI进行小对象检测
  • 等等。
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485