「一图看懂」计算机视觉识别简史:从AlexNet ResNet到Mask RCNN

最近,物体识别已经成为计算机视觉和AI最令人激动的领域之一。即时地识别出场景中所有的物体的能力似乎已经不再是秘密。随着卷积神经网络架构的发展,以及大型训练数据集和高级计算技术的支持,计算机现在可以在某些特定设置(例如人脸识别)的任务中超越人类的识别能力。

继续阅读「一图看懂」计算机视觉识别简史:从AlexNet ResNet到Mask RCNN

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时执行

遇到如下错误信息:

原因是缺少依赖包 torch导致的,在安装 nn之前需要先安装 torch即可解决问题。

如下方式执行:

参考链接


使用torch遇到的一些问题

编译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 ClusteringOpenface是卡内基梅隆大学的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目录下的模型配置文件为例子,训练我们自己的神经网络。

继续阅读macOS Sierra (10.12.4)系统上Caffe借助现有的模型训练自己的数据集

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.修改文件,使得结果显示在命令行下:

定位到

这个地方,在后面加上几行,如下所示:

就样就可以了。运行不会报错,而且结果会显示在命令行下面。

参考链接


Caffe学习系列(20):用训练好的caffemodel来进行分类