DRML(2016-CVPR)重现过程记录---(1)caffe+DRML源码编译
2017-05-03 11:38
274 查看
参考资料和说明
1,DRML论文:http://www.cv-foundation.org/openaccess/content_cvpr_2016/papers/Zhao_Deep_Region_and_CVPR_2016_paper.pdf
Zhao K, Chu W S, Zhang H. Deep Region and Multi-label Learning for Facial Action Unit Detection[C]// IEEE Conference on Computer Vision and Pattern Recognition. IEEE, 2016:3391-3399.
作者定义了自己的新的层结构做区域学习多标签检测,来提升AU检测的效果。文章对12类AU的检测进行了训练和测试,分别是AU1,AU12,AU15,AU17,AU2,AU20,AU25,AU26,AU4,AU5,AU6,AU9
2,作者提供了部分源码:https://github.com/zkl20061823/DRML
该源码包含作者新定义的网络层结构和prototxt
重现文章的思路:在现有caffe基础上添加作者自定义的层
本文讲解caffe+DRML源码编译,后续处理我会在后面的博文中讲到。
注意:作者的DRML源码是在caffe-master_20150520_1版本(有点像caffe rc2版本,但是不是完全的caffe rc2, 所以我邮件找作者问了,作者提供了他们当时用的Caffe版本)基础上做的,但是新版本中很多函数和变量已经变了,我现在用新的caffe版本+DRML源码编译,所以需要知道DRML在原来caffe版本上有什么改变,以及如何在caffe中添加新的层定义。
感谢作者提供了他们当时用的caffe源码!
作者使用的caffe版本与DRML源码对比(beyondcompare结果)
(注:caffe.proto是我自己修改的,作者没有提供。作者提供了common_layers.hpp,data_layers.hpp,loss_layers.hpp以及box_layer.cpp,box_layer.cu,image_data_layer_multilabel.cpp,multi_sigmoid_cross_entropy_loss_layer.cpp,
multi_sigmoid_cross_entropy_loss_layer.cu,splice.cpp,cplice.cu)
作者在common_layers.hpp中增加了BoxLayer和SpliceLayer的声明,这些在后来的caffe版本中专门提出来作为.hpp单独存在,不再直接在common_layers.hpp中添加。
作者在data_layers.hpp中增加了MultilabelImageDataLayer的定义和两个变量
作者在loss_layers.hpp中增加了MultiSigmoidCrossEntropyLossLayer层定义
我在caffe.proto中的修改(新增加层必须要在caffe.proto中有相应的增加,否则编译会出错说找不到这个层)
以上部分主要目的是指出作者在原本的caffe上做出的修改,下面讲我在新的caffe上合入作者的代码
我用的caffe版本:2017-4-21在https://github.com/BVLC/caffe/上下载的
liunx版本:Ubuntu 14.04.4 LTS (GNU/Linux 3.19.0-47-generic x86_64)
带GPU
1,先把caffe本身编译通过
2,修改代码
修改caffe.proto文件
.hpp中的新增加的每一层代码单独提出来作为该层的hpp文件
.cpp和.cu文件添加到src/layers/目录下
其中的每一层的hpp文件是从作者在common_layers.hpp,data_layers.hpp,loss_layers.hpp添加的每一层。
比如:multilabel层
作者添加为:
修改为multilabel_imagedata_layer.hpp
上述这些工作做好之后,就可以重新编译caffe了
进入到caffe根目录下
make clean
make all -j8
编译时可能遇到的问题:
fatal error: caffe/proto/caffe.pb.h: No such file or directory
解决办法
首先需要进入 caffe 根目录
protoc src/caffe/proto/caffe.proto --cpp_out=.
sudo mkdir include/caffe/proto
sudo mv src/caffe/proto/caffe.pb.h include/caffe/proto
不想重新挨着修改代码的同学可以直接看我的另一篇博文,我上传了最终的代码:http://blog.csdn.net/u011668104/article/details/77412332
1,DRML论文:http://www.cv-foundation.org/openaccess/content_cvpr_2016/papers/Zhao_Deep_Region_and_CVPR_2016_paper.pdf
Zhao K, Chu W S, Zhang H. Deep Region and Multi-label Learning for Facial Action Unit Detection[C]// IEEE Conference on Computer Vision and Pattern Recognition. IEEE, 2016:3391-3399.
作者定义了自己的新的层结构做区域学习多标签检测,来提升AU检测的效果。文章对12类AU的检测进行了训练和测试,分别是AU1,AU12,AU15,AU17,AU2,AU20,AU25,AU26,AU4,AU5,AU6,AU9
2,作者提供了部分源码:https://github.com/zkl20061823/DRML
该源码包含作者新定义的网络层结构和prototxt
重现文章的思路:在现有caffe基础上添加作者自定义的层
本文讲解caffe+DRML源码编译,后续处理我会在后面的博文中讲到。
注意:作者的DRML源码是在caffe-master_20150520_1版本(有点像caffe rc2版本,但是不是完全的caffe rc2, 所以我邮件找作者问了,作者提供了他们当时用的Caffe版本)基础上做的,但是新版本中很多函数和变量已经变了,我现在用新的caffe版本+DRML源码编译,所以需要知道DRML在原来caffe版本上有什么改变,以及如何在caffe中添加新的层定义。
感谢作者提供了他们当时用的caffe源码!
作者使用的caffe版本与DRML源码对比(beyondcompare结果)
(注:caffe.proto是我自己修改的,作者没有提供。作者提供了common_layers.hpp,data_layers.hpp,loss_layers.hpp以及box_layer.cpp,box_layer.cu,image_data_layer_multilabel.cpp,multi_sigmoid_cross_entropy_loss_layer.cpp,
multi_sigmoid_cross_entropy_loss_layer.cu,splice.cpp,cplice.cu)
作者在common_layers.hpp中增加了BoxLayer和SpliceLayer的声明,这些在后来的caffe版本中专门提出来作为.hpp单独存在,不再直接在common_layers.hpp中添加。
作者在data_layers.hpp中增加了MultilabelImageDataLayer的定义和两个变量
作者在loss_layers.hpp中增加了MultiSigmoidCrossEntropyLossLayer层定义
我在caffe.proto中的修改(新增加层必须要在caffe.proto中有相应的增加,否则编译会出错说找不到这个层)
以上部分主要目的是指出作者在原本的caffe上做出的修改,下面讲我在新的caffe上合入作者的代码
我用的caffe版本:2017-4-21在https://github.com/BVLC/caffe/上下载的
liunx版本:Ubuntu 14.04.4 LTS (GNU/Linux 3.19.0-47-generic x86_64)
带GPU
1,先把caffe本身编译通过
2,修改代码
修改caffe.proto文件
.hpp中的新增加的每一层代码单独提出来作为该层的hpp文件
.cpp和.cu文件添加到src/layers/目录下
其中的每一层的hpp文件是从作者在common_layers.hpp,data_layers.hpp,loss_layers.hpp添加的每一层。
比如:multilabel层
作者添加为:
修改为multilabel_imagedata_layer.hpp
上述这些工作做好之后,就可以重新编译caffe了
进入到caffe根目录下
make clean
make all -j8
编译时可能遇到的问题:
fatal error: caffe/proto/caffe.pb.h: No such file or directory
解决办法
首先需要进入 caffe 根目录
protoc src/caffe/proto/caffe.proto --cpp_out=.
sudo mkdir include/caffe/proto
sudo mv src/caffe/proto/caffe.pb.h include/caffe/proto
不想重新挨着修改代码的同学可以直接看我的另一篇博文,我上传了最终的代码:http://blog.csdn.net/u011668104/article/details/77412332
相关文章推荐
- DRML(2016-CVPR)重现过程记录---(9)问题解决与最终结果
- DRML(2016-CVPR)重现过程记录---(3)训练模型
- DRML(2016-CVPR)重现过程记录---(8)问题定位_3
- DRML(2016-CVPR)重现过程记录---(4)问题与反思
- DRML(2016-CVPR)重现过程记录---(7)问题定位_2
- DRML(2016-CVPR)重现过程记录---(10)代码上传
- DRML(2016-CVPR)重现过程记录---(5)问题定位_1
- DRML(2016-CVPR)重现过程记录---(6)新的尝试与思考-tensorflow?
- DRML(2016-CVPR)重现过程记录---(2)数据预处理
- 将gdal源码转化为VS工程编译过程记录
- vlc-android源码编译过程记录
- vlc-android源码编译过程记录
- IDEA下openfire源码编译过程记录
- 源码编译mysql 5.5+ 安装过程全记录
- vlc-android源码编译过程记录
- spring-core-4.04 源码编译过程记录
- nifi源码汉化重新编译过程记录
- BingObjectnessCVPR14源码编译环境由vs2012+64位转换为vs2012+32位机过程
- Semi-Automatic 3D Annotation3D源码编译过程记录
- Android Octa源码编译和下载过程详细记录