带有多标签图像的咖啡

ytr*_*ewq 19 neural-network multilabel-classification deep-learning caffe

我有一个有多个标签的图像数据集; 数据集中有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
Run Code Online (Sandbox Code Playgroud)

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

/home/my_test_dir/picture-foo.jpg 0 2 5
/home/my_test_dir/picture-foo1.jpg 1 4
Run Code Online (Sandbox Code Playgroud)

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

ypx*_*ypx 21

我相信Shai的回答不再是最新的. Caffe支持 HDF5和LMDB格式的多标签/矩阵基础事实.这篇 github评论中的python片段演示了如何构建多标签LMDB基础事实(参见Shai对HDF5格式的回答).与单标签图像数据集的构造不同,为图像构造lmdb,而为多标签地面实况数据构建第二单独的lmdb.该片段处理空间多标签基础事实,可用于像素标记图像.

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

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

  • 由于我有100个类,并且每个图像被标记为100个类中的1到5个类,如果图像具有该类作为其标签,则可能需要具有条目1的1x100矩阵,否则为0.代码中的Python代码段处理按像素标记,但如果您希望每个图像上都有多个标签,该怎么办呢? (5认同)

jer*_*man 5

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