使用 TensorFlow 对多标签图像进行分类

数据挖掘 张量流 图像分类 多标签分类 图像识别 标签
2022-03-12 09:14:54

我使用 TensorFlow ML 库分类的数据集包含每个图像的多个标签。内容是从外部拍摄的不动产图像,分析了各种图像特征。

问题是如何分配标签,最直接的方法是使用许多长标签或少量短标签。

分类:

Building type ("house", "apartment building", "condominium")
Build year ("old", "new")
Garage (boolean) - only for house
Floors (1, 2) - only for house
Construction ("standalone", "row house") - only for house
  1. 许多长标签(softmax_classifier):

    house_old_nogarage_onefloor_standalone
    house_old_nogarage_onefloor_row
    house_old_nogarage_twofloor_standalone
    ...43 more
    apartment_old
    apartment_new
    
  2. 几个短标签(类似于 a Multiclass Support Vector Machine):

    house
    apartment
    condominium
    new
    old
    ...7 more
    
  3. 替代方法是使用多标签分类器,将 的默认值替换softmax_classifier.Inception Model v3sequence_classifier

我想准确地表示数据,但如果准确性可以接受,我也不介意进行简单的分类。

建议的 3 种标签解决方案中的哪一种适合该问题?

1个回答

我建议您尝试构建多个网络:一个网络用于构建类型(输出“房屋”、“公寓”或“公寓”),另一个网络用于构建年份,另一个网络用于车库(是与否),等等。这使每个网络的类数量保持较少,并允许每个网络针对其关注的特定任务进行自我调整。

如果要避免使用多个网络:

从概念上讲,共享前 n-1 层,并为每个任务设置一个单独的第 n 层。换句话说,最后一层变得更宽,包含建筑类型元素、建筑年份元素等等。你以多个 softmax 元素结束。一个简单的例子是一个用于建筑类型输出(“house”、“apartment”或“condominum”)的softmax和一个用于构建年份(“new”或“old”)的softmax。因此,您将有 5 条输出线。

您当然可以尝试其他拆分,例如,共享前 n-3 层,然后对于后 3 层,您有多个并行的不同网络。