基于深度学习的人脸识别系统系列(Caffe+OpenCV+Dlib)——【一】如何在Visual Studio中像使用OpenCV一样使用Caffe
来源:互联网 发布:钢结构cad软件 编辑:程序博客网 时间:2024/06/08 05:17
前言
基于深度学习的人脸识别系统,一共用到了5个开源库:OpenCV(计算机视觉库)、Caffe(深度学习库)、Dlib(机器学习库)、libfacedetection(人脸检测库)、cudnn(gpu加速库)。
用到了一个开源的深度学习模型:VGG model。
最终的效果是很赞的,识别一张人脸的速度是0.039秒,而且最重要的是:精度高啊!!!
CPU:intel i5-4590
GPU:GTX 980
系统:Win 10
OpenCV版本:3.1(这个无所谓)
Caffe版本:Microsoft caffe (微软编译的Caffe,安装方便,在这里安利一波)
Dlib版本:19.0(也无所谓
CUDA版本:7.5
cudnn版本:4
libfacedetection:6月份之后的(这个有所谓,6月后出了64位版本的)
这个系列纯C++构成,有问题的各位朋同学可以直接在博客下留言,我们互相交流学习。
====================================================================
本篇是该系列的第一篇博客,介绍我如何在Visual Studio中像使用OpenCV一样使用Caffe。
思路
我们都知道在Visual Studio中使用OpenCV是非常方便的,只要配置好相关的路径,建立一个属性表就可以了。接触过Caffe的可能会知道,在Caffe的例程中并没有怎么说如何建立一个属性表,就能够使用Caffe提供的一些函数去构造程序。话说一个月前刚刚在Github上帮一个老外解决了这个问题,所以这里也写一下我的方法。
要用Caffe,就是 include 、lib 、dll,和OpenCV一样,搞好这三个即可,推荐大家配置Release版本的,所以在编译Caffe的时候,换成Release模式也编译一次。
实现
观察caffe-master的第三方程序包,毫无疑问,这个与caffe-master本文件夹都需要加上去的。
所以在属性表里,先后需要include以下这些:(路径请自行修改)
D:\caffe-master\includeD:\NugetPackages\boost.1.59.0.0\lib\native\includeD:\NugetPackages\glog.0.3.3.0\build\native\includeD:\NugetPackages\gflags.2.1.2.1\build\native\includeD:\NugetPackages\protobuf-v120.2.6.1\build\native\includeC:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\includeD:\NugetPackages\OpenBLAS.0.2.14.1\lib\native\includeD:\caffe-master\include\caffe\layersD:\NugetPackages\OpenCV.2.4.10\build\native\includeD:\NugetPackages\OpenCV.2.4.10\build\native\include\opencvD:\NugetPackages\OpenCV.2.4.10\build\native\include\opencv2
我们可以看到,这个第三方程序包里面已经有OpenCV了,所以我们没必要把OpenCV的属性表添加。
然后,我们需要添加lib:(路径请自行修改)
D:\NugetPackages\boost_date_time-vc120.1.59.0.0\lib\native\address-model-64\libD:\NugetPackages\boost_filesystem-vc120.1.59.0.0\lib\native\address-model-64\libD:\NugetPackages\boost_system-vc120.1.59.0.0\lib\native\address-model-64\libD:\caffe-master\Build\x64\ReleaseD:\NugetPackages\boost_thread-vc120.1.59.0.0\lib\native\address-model-64\libD:\NugetPackages\boost_chrono-vc120.1.59.0.0\lib\native\address-model-64\libD:\NugetPackages\protobuf-v120.2.6.1\build\native\lib\x64\v120\ReleaseD:\NugetPackages\OpenCV.2.4.10\build\native\lib\x64\v120\ReleaseD:\NugetPackages\glog.0.3.3.0\build\native\lib\x64\v120\Debug\dynamicD:\NugetPackages\gflags.2.1.2.1\build\native\x64\v120\dynamic\LibD:\NugetPackages\hdf5-v120-complete.1.8.15.2\lib\native\lib\x64D:\NugetPackages\OpenBLAS.0.2.14.1\lib\native\lib\x64C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\lib\x64
最后一项是CUDA的配置路径,找一下应该就可以找到。
那么我们的附加依赖项需要添加:
libcaffe.liblibprotobuf.libopencv_highgui2410.libopencv_core2410.libopencv_imgproc2410.liblibglog.libgflags.liblibopenblas.dll.ahdf5.libhdf5_hl.libcublas.libcublas_device.libcuda.libcudadevrt.libcudnn.libcudart.libcufft.libcudart_static.libcudnn_static.libcufftw.libcusparse.libcusolver.libcurand.libnppc.libOpenCL.lib
对了,最后别忘了配置环境变量哟,配置完之后重启一遍:
D:\NugetPackages\gflags.2.1.2.1\build\native\x64\v120\dynamic\LibD:\NugetPackages\hdf5-v120-complete.1.8.15.2\lib\native\bin\x64D:\NugetPackages\glog.0.3.3.0\build\native\bin\x64\v120\Release\dynamicD:\NugetPackages\OpenBLAS.0.2.14.1\lib\native\bin\x64D:\NugetPackages\gflags.2.1.2.1\build\native\x64\v120\dynamic\LibD:\NugetPackages\OpenCV.2.4.10\build\native\bin\x64\v120\Release
这里还是建议大家建立一个属性表,方便后面的程序添加,就像这样:
那么在做完这些之后,我们就可以在新建工程里使用Caffe的接口了,比如:
不会报错滴。
基于深度学习的人脸识别系统系列:【一】如何在Visual Studio中像使用OpenCV一样使用Caffe完结,如果在配置过程中出现了什么问题,直接留言即可。
=============================================
补充:
好吧..有人问怎么在没有GPU的情况下进行呢?(CPU_ONLY模式)
就是这样:
1、前面都和上面一样配置,在这个地方把cu开头的lib全部删掉,改成如下:
libcaffe.liblibprotobuf.libopencv_highgui2410.libopencv_core2410.libopencv_imgproc2410.liblibglog.libgflags.liblibopenblas.dll.ahdf5.libhdf5_hl.lib
2、运行一下,发现出现错误:
我们打开这个文件:
3、在上面这个地方我们得选择CPU模式。
加一句#define CPU_ONLY
搞定。
- 基于深度学习的人脸识别系统系列(Caffe+OpenCV+Dlib)——【一】如何在Visual Studio中像使用OpenCV一样使用Caffe
- 【深度学习】基于深度学习的人脸识别系统系列(Caffe+OpenCV+Dlib)
- 基于深度学习的人脸识别系统系列(Caffe+OpenCV+Dlib)——【四】使用CUBLAS加速计算人脸向量的余弦距离
- 基于深度学习的人脸识别系统系列(Caffe+OpenCV+Dlib)——【三】使用Caffe的MemoryData层与VGG网络模型提取Mat的特征
- 基于深度学习的人脸识别系统系列(Caffe+OpenCV+Dlib)——【三】使用Caffe的MemoryData层与VGG网络模型提取Mat的特征
- 基于深度学习的人脸识别系统系列(Caffe+OpenCV+Dlib)——【六】设计人脸识别的识别类
- 基于深度学习的人脸识别系统系列(Caffe+OpenCV+Dlib)——【五】设计人脸识别的注册类
- C++实现基于深度学习的人脸识别系统(Dlib+Caffe+Opencv)
- 基于深度学习的人脸识别系统系列(Caffe+OpenCV+Dlib)——【二】人脸检测与预处理接口的设计
- Qt+Caffe+OpenCV——【一个基于VGG网络的人脸识别考勤系统】
- Qt+Caffe+OpenCV——【一个基于VGG网络的人脸识别考勤系统】(一)人脸检测与识别模块
- Dlib+OpenCV深度学习人脸识别
- Qt+Caffe+OpenCV——【一个基于VGG网络的人脸识别考勤系统】(二)创建一个登录界面和主窗口
- 在Visual Studio 2010中使用opencv
- tensorflow74 使用tensorflow dlib opencv做特定人脸识别
- opencv for android:如何在Android studio中成功运行opencv人脸识别的例子
- OpenCV在visual studio 2010使用中相关的设置
- 深度学习与人脸识别系列(4)__利用caffe训练深度学习模型
- Unity 优化
- 正则表达式
- CSU 1811 Tree Intersection(启发式合并)
- Android Studio:正确导入SO相关文件
- 根据线程安全的相关知识,分析以下代码,当调用test方法时i>10时是否会引起死锁?并简要说明理由。
- 基于深度学习的人脸识别系统系列(Caffe+OpenCV+Dlib)——【一】如何在Visual Studio中像使用OpenCV一样使用Caffe
- Unity3D Mesh小课堂(二)为三角形添加纹理
- Java基础
- Java中Final关键字的使用
- CURL
- Java NIO详解
- node.js中获取当前时间
- JZOJ3053. 【NOIP2012模拟10.25】旅行
- [CSU 1803(湖南省赛16)] 2016 (数论+模运算)