在caffe中添加自定义层

Caffe中添加自定义层[6,7]

1)头文件
路径:py-faster-rcnn/caffe-fast-rcnn/include/caffe/layers

2)CPP或者CU文件
fasterrcnn_huawei/py-faster-rcnn/caffe-fast-rcnn/src/caffe/layers
3)caffe.proto定义该层的参数
py-faster-rcnn/caffe-fast-rcnn/src/caffe/proto/caffe.proto
proposal_layer.cpp
3.1)message LayerParameter { } 修改
添加消息函数的ID,设置ID。
message LayerParameter {
optional WindowDataParameter window_data_param = 129; // 目前,唯一的值,不能重复,最大值为143以及另外较大数值
optional ProposalParameter proposal_param = 144;
}
3.2) 添加消息函数(任意位置)
按顺序指明参数。
message ProposalParameter {
optional float diff_scale = 1 [default = 1]; //默认梯度不缩放, 暂时不添加

}

3.3) 添加Layer ID(可能不需要添加)
首先,在 message V1LayerParameter { }中的
enum LayerType {
PROPOSAL=xxx; // 不重复即可
}
然后在继续添加
message V1LayerParameter {
enum LayerType {
WINDOW_DATA = 24;
PROPOSAL=xxx; // 不重复即可
}
optional WindowDataParameter window_data_param = 20
}

3.4) 添加参数定义message V0LayerParameter {}(可能不需要添加)
不再推荐的方式,这个与ProposalParameter 是什么关系??
message V0LayerParameter {
}

3.5 定义一个层
layer{
name: "proposal"
type: "Proposal"
bottom: "" // 与python版本一致
top: "" // 与python版本一致

}

注:可以参考DataLabelParameter

4)注册层
在CPP文件中添加
INSTANTIATE_CLASS(DiffCutoffLayer);
REGISTER_LAYER_CLASS(DiffCutoff);
小结:定义一个新的层,简单来说分为两个步骤:
参考资料[3,4,5,6,712]
1)声明和定义该层的类,分别在hpp和cpp文件中声明和定义该类,并且需要在cpp文件中对该层进行注册,用下面的两行代码(下面所示)注册后,则不需要在layer_factory.cpp文件中
添加构造该新层对象的函数。通常新层会继承子已有的层次,例如layer.cpp层,需要在新层中定义基类中的纯虚函数。例如对于layer层,包括三个虚函数(Backward_cpu, Forward_gpu和Reshape)。
对于只包含测试过程的层,可以通过在Backward_cpu的定义代码中只添加“NOT_IMPLEMENTED;”来表示未定义反向传播函数。
INSTANTIATE_CLASS(DiffCutoffLayer);
REGISTER_LAYER_CLASS(DiffCutoff);
2)配置该层:包括注册和在caffe.proto中设置相关参数。在较新版本的caffe中,用户只需要
在编译caffe的过程中,会根据caffe.proto文件中定义的参数接口来编译相关层的代码。一般只需要做3.1和3.2两部即可。
注意:不需要在layer_factory.cpp文件中添加新层的头文件。

[2] http://blog.csdn.net/anxiaoxi45/article/details/46522155
[3] caffe/src/caffe/proto/caffe.proto
[5] http://caffe.berkeleyvision.org/tutorial/layers.html
[9] https://github.com/shicai/Caffe_Manual // 模型建立过程
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值