最近,物体识别已经成为计算机视觉和AI最令人激动的领域之一。即时地识别出场景中所有的物体的能力似乎已经不再是秘密。随着卷积神经网络架构的发展,以及大型训练数据集和高级计算技术的支持,计算机现在可以在某些特定设置(例如人脸识别)的任务中超越人类的识别能力。
分类: 神经网络
Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks
目前为止发现的性能最好,效果最好的人脸探测以及对齐的论文就是MTCNN
了。
完整论文如下
继续阅读Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks
Ubuntu 16.04开启dlib对于AVX或者CUDA的支持
最近在使用openface
来测试人脸识别,实际过程中发现识别速度非常缓慢,平均每帧的识别速度达到了秒级水平,这个是不可接受的。跟踪代码性能,发现是dlib
部分非常缓慢。
根据dlib
的文档,默认使用
安装的dlib
库,由于对具体硬件的要求(CPU
需要支持AVX
指令集),是没有开启AVX
指令加速的,另外由于显卡的要求,也是默认不开启CUDA
的支持。
如果想要开启这部分加速,需要手工编译安装才可以,具体操作如下:
上面的命令是使用AVX
指令加速功能的,如果机器上安装了CUDA
,则需要正确安装cuDNN 5.0
以上的版本,否在编译的时候会报告
对于使用
安装的CUDA-7.5
来说,可以从这里下载cuDNN v6.0 (April 27, 2017), for CUDA 7.5,下载完成后,整个目录中的include
目录中的文件解压缩到/usr/local/include/
目录下,lib64
目录中的内容整个解压缩到/usr/lib/
目录下,并且在/usr/local/lib/
目录下建立libcudnn.so
的软链接
都配置正确后,使用如下编译命令安装:
参考链接
Easily Create High Quality Object Detectors with Deep Learning
执行"luarocks install cutorch"发生错误"error: implicit declaration of function 'THLongStorage_calculateExpandGeometry'"
执行
发生如下错误:
解决方法为:
参考链接
error: implicit declaration of function ‘THLongStorage_calculateExpandGeometry’
编译Torch 7时遇到错误"make[2]: *** [lib/THNN/CMakeFiles/THNN.dir/init.c.o] Error 1"
编译Torch 7时执行luarocks install提示"Error: No results matching query were found."
编译Torch 7
时执行luarocks install
提示错误信息:
这个是由于系统上安装了多个luarocks
而执行安装命令的并不是Torch 7
代码目录下自带的luarocks
导致的。
修正的办法就是设置搜索路径,把Torch 7
代码目录下的install/bin/
放到搜索目录(PATH
)的最前面。
参考链接
luarocks install *错误之Error: No results matching query were found.
ubuntu 16.04 LTS使用开源面部识别库Openface
Openface
是一个基于深度神经网络的开源人脸识别系统。该系统基于谷歌的文章FaceNet: A Unified Embedding for Face Recognition and Clustering。Openface
是卡内基梅隆大学的Brandon Amos主导的。
1.准备系统环境
如果是服务器版本的ubuntu
,可能默认Python
都没有安装
2.下载代码
3.安装opencv
4.安装依赖的python
库
5.安装Torch7
参考链接 ubuntu 16.04 LTS上安装Torch7
编译完成后,路径变量被加入了.bashrc
,我们需要刷新一下Shell
的环境变量
6.安装依赖的lua
库
7.编译代码
8.下载预训练后的数据
9.执行测试Demo
执行的脚本face_detect.py
代码如下:
在Shell
中如下执行代码:
识别完成后会弹出识别到的面部图片。
ubuntu 16.04 LTS上安装Torch7
1.安装luarocks
2.安装torch
如果要使用NVIDIA CUDA
加速版本的Torch7
则使用如下方法
1.安装luarocks
2.下载NVIDIA CUDA
适配的代码
3.安装编译依赖的库
4.编译代码
参考链接
macOS Sierra (10.12.4)系统上Caffe借助现有的模型训练自己的数据集
Caffe
代码中自带一些模型的例子,这些例子在源代码的models
目录下,这些都是其他项目中用来训练的配置文件,学习的时候,我们没有必要完全自己从头到尾搭建自己的网络模型,而是直接使用例子中的模型,后期在这些模型上简单调整一下,一般可以满足大多数的需求。
下面我们以models/bvlc_alexnet
目录下的模型配置文件为例子,训练我们自己的神经网络。
Caffe用训练好的caffemodel来进行分类
caffe
程序自带有一张小猫图片,存放路径为caffe
根目录下的examples/images/cat.jpg
, 如果我们想用一个训练好的caffemodel
来对这张图片进行分类,那该怎么办呢? 如果不用这张小猫图片,换一张别的图片,又该怎么办呢?如果学会了小猫图片的分类,那么换成其它图片,程序实际上是一样的。
开发caffe
的贾大牛团队,利用imagenet
图片和caffenet
模型训练好了一个caffemodel
,供大家下载。要进行图片的分类,这个caffemodel
是最好不过的了。所以,不管是用C++
来进行分类,还是用python
接口来分类,我们都应该准备这样三个文件:
1. caffemodel
文件
可以直接在浏览器里输入地址下载,也可以运行脚本文件下载。下载地址:http://dl.caffe.berkeleyvision.org/bvlc_reference_caffenet.caffemodel
文件名称为:bvlc_reference_caffenet.caffemodel
,文件大小为230M左右,为了代码的统一,将这个caffemodel
文件下载到caffe
根目录下的models/bvlc_reference_caffenet/
文件夹下面。也可以运行脚本文件进行下载:
2. 均值文件
有了caffemodel
文件,就需要对应的均值文件,在测试阶段,需要把测试数据减去均值。这个文件我们用脚本来下载,在caffe根目录下执行:
执行并下载后,均值文件放在 data/ilsvrc12/ 文件夹里。
3. synset_words.txt
文件
在调用脚本文件下载均值的时候,这个文件也一并下载好了。里面放的是1000个类的名称。
数据准备好了,我们就可以开始分类了,我们给大家提供两个版本的分类方法:
一. C++
方法
在caffe
根目录下的examples/cpp-classification/
文件夹下面,有个classification.cpp
文件,就是用来分类的。当然编译后,放在/build/examples/cpp_classification/
下面
我们就直接运行命令:
命令很长,用了很多的\符号来换行。可以看出,从第二行开始就是参数,每行一个,共需要4个参数
运行成功后,输出top-5
结果:
即有0.3134的概率为tabby cat, 有0.2380的概率为tiger cat ......
二. python
方法
python
接口可以使用jupyter notebook
来进行可视化操作,因此推荐使用这种方法。
在这里我就不用可视化了,编写一个py
文件,命名为py-classify.py
对于macOS Sierra (10.12.3)
来说,需要设置python
环境,(参考源代码中的python/requirements.txt
),如下:
执行这个文件,输出:
caffe开发团队实际上也编写了一个python版本的分类文件,路径为 python/classify.py
运行这个文件必需两个参数,一个输入图片文件,一个输出结果文件。而且运行必须在python
目录下。假设当前目录是caffe
根目录,则运行:
分类的结果保存为当前目录下的result.npy文件里面,是看不见的。而且这个文件有错误,运行的时候,会提示
的错误。因此,要使用这个文件,我们还得进行修改:
1.修改均值计算:
定位到
这一行,在下面加上一行:
则可以解决报错的问题。
2.修改文件,使得结果显示在命令行下:
定位到
这个地方,在后面加上几行,如下所示:
就样就可以了。运行不会报错,而且结果会显示在命令行下面。