2015-01-21 69 views
11

我按照kaggle facialkeypoints比赛从输入图像中提取30个面部关键点(x,y)。Caffe中的多标签回归

我如何设置咖啡来运行回归并生成30维输出??。

Input: 96x96 image 
Output: 30 - (30 dimensions). 

我该如何设置caffe?我使用EUCLIDEAN_LOSS(平方和)来得到回归输出。这是一个简单的使用caffe的逻辑回归模型,但它不起作用。看起来准确性层不能处理多标签输出。

I0120 17:51:27.039113 4113 net.cpp:394] accuracy <- label_fkp_1_split_1 
I0120 17:51:27.039135 4113 net.cpp:356] accuracy -> accuracy 
I0120 17:51:27.039158 4113 net.cpp:96] Setting up accuracy 
F0120 17:51:27.039201 4113 accuracy_layer.cpp:26] Check failed: bottom[1]->channels() == 1 (30 vs. 1) 
*** Check failure stack trace: *** 
    @  0x7f7c2711bdaa (unknown) 
    @  0x7f7c2711bce4 (unknown) 
    @  0x7f7c2711b6e6 (unknown) 

这里是层的文件:

name: "LogReg" 
layers { 
    name: "fkp" 
    top: "data" 
    top: "label" 
    type: HDF5_DATA 
    hdf5_data_param { 
    source: "train.txt" 
    batch_size: 100 
    } 
    include: { phase: TRAIN } 

} 

layers { 
    name: "fkp" 
    type: HDF5_DATA 
    top: "data" 
    top: "label" 
    hdf5_data_param { 
    source: "test.txt" 
    batch_size: 100 
    } 

    include: { phase: TEST } 
} 

layers { 
    name: "ip" 
    type: INNER_PRODUCT 
    bottom: "data" 
    top: "ip" 
    inner_product_param { 
    num_output: 30 
    } 
} 
layers { 
    name: "loss" 
    type: EUCLIDEAN_LOSS 
    bottom: "ip" 
    bottom: "label" 
    top: "loss" 
} 

layers { 
    name: "accuracy" 
    type: ACCURACY 
    bottom: "ip" 
    bottom: "label" 
    top: "accuracy" 
    include: { phase: TEST } 
} 
+0

请将工作模型定义(.prototxt)更新为原始文章或答案。 – mrgloom 2015-09-03 10:02:54

+1

精度图层在回归设置中不起作用。这只适用于分类问题 – curio1729 2017-02-14 17:00:17

回答

4

我发现它:)

我取代SOFTLAYER到EUCLIDEAN_LOSS功能和改变的输出的数量。有效。

layers { 
    name: "loss" 
    type: EUCLIDEAN_LOSS 
    bottom: "ip1" 
    bottom: "label" 
    top: "loss" 
} 

HINGE_LOSS也是另一种选择。

+0

您的输出数量发生了什么变化? – nayef 2015-02-18 13:25:47

+0

我对输入进行了重新设置(总数为1,96,96),输出标签为(总数为30) – pbu 2015-02-18 18:45:56

+0

您能否详细解释一下?为什么你要避免批量模式,只举一个例子,你为什么要将标签更改为30? – thetna 2015-06-24 16:17:59