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中并进行重新编译的方法,如下图。
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];即可。
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 !!!