caffe中编译自定义或修改后的层

1. 背景

最近需要训练人脸识别里面的CombinedMargin Loss方法,这个loss里面有一些新定义的层,并且对一个全连接层进行了源码修改。因此需要在官方的caffe源码基础上把这些新加的或修改的层添加进去到官方caffe源码里面,并重新编译,下面记录具体的编译步骤

参考链接:https://blog.csdn.net/rainforestgreen/article/details/85232657

2. 修改caffe.proto文件

2.1 我下载的caffe代码为官方链接,这里。然后我把官方链接git到了ubuntu下面

2.1 下载CombinedMargin loss的新定义层和新修改层的文件,这里。可以看到都是新修改的层

caffe中编译自定义或修改后的层_第1张图片

并且这里作者给出了如何添加新修改层到官方caffe中并进行重新编译的方法,如下图。

caffe中编译自定义或修改后的层_第2张图片

2.3  按照作者的方法,我首先把toadd.proto中的全部内容全选复制,然后粘贴到了$CAFFE_ROOT/src/caffe/proto/caffe.proto里面。当然光复制粘贴还是不够的,需要下面的修改

2.3.1 将 optional CombinedMarginParameter combined_margin_param = 149;
  optional NormalizeParameter normalize_param = 150;两个放到 message LayerParameter{}下面(注意149和150必须是和前面数字不重复的数字,我的note提示下一个可用的为149,所以我就使用149了,你可以修改成任何和前面不重复的其他数字).

2.3.2 将CombinedMarginParameter和NormalizeParameter放到程序最后,并在message InnerProductParameter {}中增加

 optional bool normalize = 7 [default = false];即可。

caffe中编译自定义或修改后的层_第3张图片

 caffe中编译自定义或修改后的层_第4张图片

2.4 按照作者的方法,我把CombinedMargin工程中所有 .hpp 文件复制到 $CAFFE_ROOT/include/caffe/layers/ 文件夹,如果出现同名的,我进行了覆盖。

2.5 按照作者的方法,我把CombinedMargin工程中所有 .cpp and .cu 文件复制到 $CAFFE_ROOT/src/caffe/layers/ 文件夹,如果出现同名的,我进行了覆盖。

2.6 然后编译修改后的caffe官方版本,接下来 enjoy CombinedMargin Loss with youself  !!!

你可能感兴趣的:(深度学习)