Caffe多任务训练时忽略部分无用或未标注类标

Ignore labels in Caffe when using Multi-Task Multi-label training

现在不经常用caffe了,不过临时面临一个问题:多任务训练的时候,假设有N个任务,但部分图片类标不全,或者只对其中x(0<x<N)个任务有用,该怎么训练呢?

这在tensorflow里面很好实现,合并loss的时候加上判断就行了。但为了方便快速实现,回头在原来caffe的基础上修改了一下。参考了官方网站后得到的方法如下:

如果希望忽略某些类标,需要在相应任务对应的SoftmaxWithLoss和Accuracy层添加以下参数,例如:


SoftmaxWithLoss层需要在loss_param里面添加ignore_label,后面写对应的类标

layer {
    bottom: "fc233"
    bottom: "label"
    name: "loss"
    type: "SoftmaxWithLoss"
    top: "loss"
    loss_weight: 0.2
    loss_param {
        ignore_label: 5
    }

}

Accuracy层需要在accuracy_param里面添加ignore_label,后面写对应的类标
layer {
    bottom: "fc233"
    bottom: "label"
    top: "train_acc/top-1"
    name: "train_acc/top-1"
    type: "Accuracy"
    accuracy_param {
        ignore_label: 5
    }

}
这样在这一任务训练和测试的准确率都不会包含这些类标。


在实际操作时,可以在类标文件里把没有的类标用-1或其他没用类标填充,并在训练的prototxt里把相应类标写在ignore_label里即可



参考:
http://caffe.berkeleyvision.org/tutorial/layers/softmaxwithloss.html
http://caffe.berkeleyvision.org/tutorial/layers/accuracy.html
https://github.com/NVIDIA/DIGITS/issues/1251

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值