记Caffe版本的mtcnn进行训练时的一个隐形的BUG

MTCNN在人脸检测上有着广泛的应用,而Caffe有着良好的C++接口,为了实现MTCNN训练自己的数据集,于是下载了Caffe版本的MTCNN代码,并且开始按照教程并部署训练

MTCNN的Caffe源码比较简单,除了通用层使用C++就有的借口外,还使用了Python写了自己的层(可以大胆推测出看出,Caffe源码贡献者对Caffe的C++不太熟悉,并且还有优性能优化空间)。但在部署过程中出现如下BUG,

I1108 19:35:14.153951  8442 layer_factory.hpp:77] Creating layer PythonLayer
*** Aborted at 1541676914 (unix time) try "date -d @1541676914" if you are using GNU date ***
PC: @     0x7fb65ae70ba3 google::protobuf::FindPtrOrNull<>()
*** SIGSEGV (@0x3f800170) received by PID 8442 (TID 0x7fb6eee5d680) from PID 1065353584; stack trace: ***
    @     0x7fb6ece49f20 (unknown)
    @     0x7fb65ae70ba3 google::protobuf::FindPtrOrNull<>()
    @     0x7fb65ae6c890 google::protobuf::DescriptorPool::FindFileByName()
    @     0x7fb65ae429e5 google::protobuf::python::cdescriptor_pool::AddSerializedFile()
    @     0x7fb6cddc7dad PyEval_EvalFrameEx
    @     0x7fb6cdef8278 PyEval_EvalCodeEx
    @     0x7fb6cde7d6dd (unknown)
    @     0x7fb6cdd6d333 PyObject_Call
    @     0x7fb6cde3e3f5 (unknown)
    @     0x7fb6cde55895 (unknown)
    @     0x7fb6cdd6d333 PyObject_Call
    @     0x7fb6cddc43a1 PyEval_EvalFrameEx
    @     0x7fb6cdef8278 PyEval_EvalCodeEx
    @     0x7fb6cddc0029 PyEval_EvalCode
    @     0x7fb6cdee81cc PyImport_ExecCodeModuleEx
    @     0x7fb6cdeed462 (unknown)
    @     0x7fb6cdeeda3e (unknown)
    @     0x7fb6cde6ae91 (unknown)
    @     0x7fb6cde6b176 (unknown)
    @     0x7fb6cde6b565 PyImport_ImportModuleLevel
    @     0x7fb6cddcdde4 (unknown)
    @     0x7fb6cdd6d333 PyObject_Call
    @     0x7fb6cdef77a7 PyEval_CallObjectWithKeywords
    @     0x7fb6cddc3ac9 PyEval_EvalFrameEx
    @     0x7fb6cdef8278 PyEval_EvalCodeEx
    @     0x7fb6cddc0029 PyEval_EvalCode
    @     0x7fb6cdee81cc PyImport_ExecCodeModuleEx
    @     0x7fb6cdeed462 (unknown)
    @     0x7fb6cdeeda3e (unknown)
    @     0x7fb6cde6ae91 (unknown)
    @     0x7fb6cde6b176 (unknown)
    @     0x7fb6cde6b565 PyImport_ImportModuleLevel
Segmentation fault (core dumped)

通过查找终于找到原因了,具体解决方法在此链接,可以对应其中一个回答,
添加链接描述,正如回答中,C++的protobuf的lib使用的是3.0.0,python版本的Lib照理来说也应该安装3.0.0但,python通过安装protobuf的版本为3.1.0.post1,解决了此问题。最终成功训练网络

MTCNN的Caffe源码并没有训练人脸关键点。所以,如果需要实现训练人脸关键点,需要自己做数据集,并且还要自己添加关键点的线性回归,可以参考此处

猜你喜欢

转载自blog.csdn.net/qq_31261509/article/details/83867159