tensorflow的object detection api支持multi-class multi-label detection吗?

问题描述 投票:0回答:2

经过数小时的研究,我找不到任何关于使用对象检测 API 进行多标签预测的示例。基本上我想预测图像中每个实例的多个标签。如下图所示:

我想预测服装类别,还要预测颜色和图案等属性。

根据我的理解,我需要将每个属性的更多分类头附加到第二阶段 ROI 特征图,并对每个属性的损失求和?但是,我在对象检测代码中实现它时遇到了麻烦。有人可以给我一些关于我应该开始修改哪些功能的提示吗?谢谢。

tensorflow object-detection-api
2个回答
0
投票

根据性能要求和平台,一种方法可能是通过在管道中使用多个分类器来简化问题。例如,您可以使用多类对象检测器(在您的示例中为“tee”和“pant”)来捕获感兴趣的区域;然后根据边界框裁剪这些区域并将这些裁剪区域输入另一个模型,在这种情况下没有局部性要求(“颜色”和“图案”)。

对于多类对象检测指南,我可能会推荐 Tensorflow Git repo 中的 Eager Few Shot Object Detection Colab。在“Preparing data for training”单元格注释中:

num_classes = 1

category_index = {duck_class_id: {'id': duck_class_id, 'name': 'rubber_ducky'}}

更新它可以在不改变模型的情况下启用多类检测。例如,以下将创建两个类:

num_classes = 2

category_index = {
    1: {'id': 1, 
        'name': 'tee'},
    2: {'id': 2, 
        'name': 'pant'}
}

然后基于这个输出,将这些裁剪区域输入另一个分类器。


0
投票

为了mono-class detection检测教程:Rubber Ducky detectorZombie detector。将其更改为与 multi-class 一起使用。你需要完全改变你获得

gt_classes_one_hot_tensors
的方式,需要做这些改变:

如何对超过 1 个类进行对象检测模型训练?

当然要更改 pipeconfig 文件的配置(如教程所示)

model_config.ssd.num_classes = num_classes


要考虑的教程(可选):

如何实现,检测learning boxes transferred multi-label (cats, dogs and zombies) .

下面的教程是multi labels with boxes,完美的scalabel:

这些教程是基于TF_v1的,如果要使用TF_v2,需要特别注意

~/models/research/object_detection/model_main.py
风格的命令将它们替换为
model_main_tf2.py

开始时要考虑的事项(可选):

  • 单标签教程非常适合加载、预处理、预测 和保存图像(不适用于多标签训练)。特别是僵尸探测器
  • 检查大多数图像的大小并选择具有类似
    long_x_width
    的预训练模型,例如我的图像640x640
    resnet101_v1_640x640
    可以从这里选择和下载Zoo_Models如果您正在寻找更具体的模型https://tfhub.dev/
  • 使用可以轻松传输到 tfRecord 的注释工具。 COCO 格式很容易转移到 tfRecord,检查您的格式转移.
  • 使用一些图像增强(可选)TF_augmentation_official或更简单多标签增强(点图像增强)
  • TF 模型可以通过两种方式保存
    .pb
    可以收集、评估和重新训练或原始
    .h5
    仅用于评估图像。

注意:我想避免使用 API 命令

model_main_tf2.py
,并使用
.fit(x.tfRecord, y.tfRecord)
但今天似乎并不容易。

© www.soinside.com 2019 - 2024. All rights reserved.