前言

MTCNN是级联卷积网络,原理基本上比较清晰,只是还缺少实战,看到一个CSDN上windows的实现过程,就拿来试试。

操作过程

参考here,某些步骤会添加博主遇到的问题的解释。

第一部分:caffe.binding库的生成
一、安装vs2015,所花时间较长,耐心等待。
二、解压caffe-windows-ms
三、解压thirdparty至windows/thirdparty/下
四、修改commonsetting,cpuonlybuild为true,其他全为false
注意,只是在库的属性时候更改;
五、打开caffe.sln(忽略python,如果需要vs2015安装其他依赖项,则安装),选择debug/x64,编译libcaffe后生成libcaffe.lib
生成libcaffe.lib的位置:
.\MTCNN\caffe-windows-ms\Build\x64\Debug 六、修改caffe.binding为dll编译,同时在预编译处理器中定义CAFFEBINDING_EXPORTS(定义DLL为export,否则会出现链接不一致),编译caffe.binding,生成caffe.binding.lib以及dll
用控制台exe配置类型自己定义函数,并通过主函数调试,
然后可以通过项目——属性——配置属性——常规——项目默认值——配置类型下,
选择动态库(.dll)选项
然后点击生成---生成解决方案,会在工程的Debug目录下生成一个DLL文件(dllTest.dll)
预编译处理器即是预处理器中定义CAFFEBINDING_EXPORTS;
七、选择release/x64,编译libcaffe,生成libcaffe.lib
八、编译caffe.binding生成caffe.binding.lib以及dll 第二部分:mtcnn对caffe.binding的调用测试
九、打开mtcnn的vs,同时打开cascadecnn.sln,跳过python,只用testcascadecnn(第二个工程)
目录:.\MTCNN\MTCNN_face_detection_alignment-master\code\codes\vs
十、选择debug/x64,属性更改如下:vc++的包含目录加入boost、hdf5、opencv(都在thirdparty中)和caffe.binding;库目录中加入opencv_world310d.lib的目录以及caffe.binding.lib的目录;附加依赖项中加入opencv_world310d.lib和caffe.binding.lib
包含目录caffe.binding: E:\code\MTCNN\caffe-windows-ms\windows\caffe.binding;
十一、预处理器中加入_CRT_SECURE_NO_WARNINGS
十二、编译testcascadecnn成功
十三、将缺少的dll库都加入x64/DEBUG文件夹中(所有的库都在thirdparty/bins里面)
十四、修改test.cpp里面的参数:)model_folder修改为现有的mtcnnv2的模型路径,)cascade里面的0改为-(表示要用cpu),)image修改为自己的图片路径
十五、运行,生成结果
十六、选择release/x64,类似第十步,不同之处改debug为release,改opencv_world310d为opencv_world310即可
十七、编译testcascadecnn成功
附加库目录: .\MTCNN\caffe-windows-ms\windows\thirdparty\HDF5\lib
发现有其他的PC没有的目录,查找附加库目录和附加依赖项,发现有以前残留的配置,删除即可;
十八、类似第十三步,不同之处类似第十六步
十九、运行,生成结果 最后结果:
,
detection time:.127ms////The first run is slow because it need to allocate memory.
===========================================================
detection time:.582ms

参考

1. MTCNN的windows-cpu配置

2. MTCNN_paper;

最新文章

  1. Moon.Orm版本维护及下载(跟踪报道)
  2. div+css背景渐变色代码示例
  3. Zookeeper学习笔记
  4. Simple colum formatting in Yii 2 GridView
  5. saltstack学习笔记1 --安装
  6. jQuery基础之(六)jQuery浏览器的兼容性(以CSS3特写兼容举例)
  7. 自制Chrome拓展
  8. mmap直接控制底层【转】
  9. C++抽象机制之二:运算符重载
  10. Rust 学习 0
  11. 将某个组中的账户移动到新的OU下
  12. JDK1.5新特性(二)……Static Import
  13. LAMP网站架构方案分析
  14. css优先级机制说明
  15. SaltStack配置管理和YAML
  16. OLAP多维数据库备份
  17. NHibernate中Session的处理 线程不安全
  18. Python中__repr__和__str__区别(转)
  19. [转帖] 大神 Linus Torvalds 语录
  20. 【LeetCode】Missing Ranges

热门文章

  1. python:pycharm中使用pandas读取中文路径报错问题的解决方案
  2. Python 类和对象(3)
  3. NLP传统基础(2)---LDA主题模型---学习文档主题的概率分布(文本分类/聚类)
  4. C# 之 .net core -- MVC模式的显示、增、删、改
  5. python_面向对象——对象间的组合关系
  6. 第92题:反转链表II
  7. Vue项目搭建流程
  8. Air Raid POJ - 1422 【有向无环图(DAG)的最小路径覆盖【最小不相交路径覆盖】 模板题】
  9. Codeforces Round #583 (Div. 1 + Div. 2, based on Olympiad of Metropolises) A题
  10. 富文本编辑器复制word