首页 文章

带有多标签图像的咖啡

提问于
浏览
19

我有一个有多个标签的图像数据集;数据集中有100个类,每个图像都有1到5个与之关联的标签 .

我正在按照以下URL中的说明操作:

https://github.com/BVLC/caffe/issues/550

它说我需要生成一个文本文件,列出图像及其标签,如

/home/my_test_dir/picture-foo.jpg 0
/home/my_test_dir/picture-foo1.jpg 1

在我的情况下,由于我有多标签图像,它是否可以简单地添加标签,如下所示?

/home/my_test_dir/picture-foo.jpg 0 2 5
/home/my_test_dir/picture-foo1.jpg 1 4

我有一种感觉,它可能不会那么简单,如果我是对的,在什么步骤,我应该如何在设置Caffe的过程中整合数据集的多标签?

3 回答

  • 21

    我相信Shai的回答不再是最新的 . Caffe supports multi-label/matrix ground truth用于HDF5和LMDB格式 . this github评论中的python片段演示了如何构建多标签LMDB基础事实(请参阅Shai's answer for HDF5格式) . 与单标签图像数据集的构造不同,为图像构造lmdb,而为多标签地面实况数据构建第二单独的lmdb . 该片段处理空间多标签基础事实,可用于像素标记图像 .

    将数据写入lmdb的顺序至关重要 . 基础事实的顺序必须与图像的顺序相匹配 .

    诸如SOFTMAX_LOSS,EUCLIDEAN_LOSS,SIGMOID_CROSS_ENTROPY_LOSS等损失层也支持多标签数据 . 但是,精度层仍限于单标签数据 . 您可能希望按照this github issue跟踪此功能何时添加到Caffe .

  • 3

    caffe支持多标签 . 您可以将标签放入n-hot向量中,例如[0,1,1,0,0,1,...] . 您需要将标签重新整形为n * k * 1 * 1张量并使用sigmoid cross-entropy或euclidean,而不是softmax(强制sum(输出)= 1)

  • 5

    AFAIK,当前的Caffe版本不支持具有多标签的图像的lmdb / leveldb数据集 . 但是,您可以(也可能应该)以HDF5格式准备输入 . Caffe HDF5输入层更灵活,每个输入可以有多个标签 .
    This answer简要介绍了如何为caffe创建HDF5输入 .

    您必须解决的另一个问题是,您不仅对每个图像的 multi -label感兴趣,而且每个图像的标签数量为 varying . 如何根据标签定义每张图像的损失?可能是您必须编写自己的损失层 .
    有些损耗图层支持"ignore label":也就是说,如果为图像指定了特定的输入标签,则不会计算相应图像的损失 . 见,例如, AccuracyLayerSoftmaxWithLossLayer .

相关问题