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

参考链接


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来进行分类

macOS Sierra (10.12.3)编译Faiss

最近 Facebook AI实验室开源了相似性搜索库 Faiss
Faiss是用于有效的相似性搜索( similarity search)和稠密矢量聚类( clustering of dense vectors)的库。它包含了可在任何大小向量集合里进行搜索的算法,向量集合的大小甚至可达到 RAM容纳不下的地步。另外,它还包含了用于评估和参数调优的支持代码。 FaissC++编写,有 Python/numpy的完整包装。其中最有用的一些算法则在 GPU上实现。

下面,我们介绍一下如何在 macOS Sierra (10.12.3)上编译 Faiss

1.下载 Faiss源代码

2.安装编译需要的工具

3.修改调整源代码,准备编译

4.编译

5.执行测试用例

其余的示例,参考源代码中的 INSTALL文件中的内容即可。

译文 | GAN之父在NIPS 2016上做的报告:两个竞争网络的对抗

作者:Ian Goodfellow
翻译:七月在线DL翻译组
译者:范诗剑 汪识瀚 李亚楠
审校:管博士 寒小阳 加号
责编:翟惠良 July
声明:本译文仅供学习交流,有任何翻译不当之处,敬请留言指正。转载请注明出处。

2016年的NIPS上,Ian Goodfellow做了主题为《生成对抗网络(Generative Adversarial Networks)》的报告,报告包括以下主题:
- 为什么生成式模型是一个值得研究的课题
- 生成式模型的工作原理,以及与其他生成模型的对比
- 生成式对抗网络的原理细节
- GAN相关的研究前沿
- 目前结合GAN与其他方法的主流图像模型

原英文精辟演示文稿请点击——
PDF版:www.iangoodfellow.com/slides/2016-12-04-NIPS.pdf
KeyNote版:www.iangoodfellow.com/slides/2016-12-04-NIPS.key

本站PDF版本:Generative Adversarial Networks (GANs)

本站KeyNote版:Generative Adversarial Networks (GANs)

一句话描述GAN——
GAN之所以是对抗的,是因为GAN的内部是竞争关系,一方叫generator,它的主要工作是生成图片,并且尽量使得其看上去是来自于训练样本的。另一方是discriminator,其目标是判断输入图片是否属于真实训练样本。
更直白的讲,将generator想象成假币制造商,而discriminator是警察。generator目的是尽可能把假币造的跟真的一样,从而能够骗过discriminator,即生成样本并使它看上去好像来自于训练样本一样。

继续阅读译文 | GAN之父在NIPS 2016上做的报告:两个竞争网络的对抗

Sigmoid函数

s

Sigmoid函数是一个S型函数. Sigmoid函数的数学公式为

ed98895481c697b64ae830abb918c6c8

它是常微分方程

951508ebdc86a313bcdfdaadf8fc47d1

的一个解.

Sigmoid函数具有如下基本性质:

  • 定义域为
  • 值域为, 为有界函数
  • 函数在定义域内为连续和光滑函数
  • 函数的导数
  • 不定积分为, 为常数

由于Sigmoid函数所具有的性质, 它常和单位阶跃函数用于构造人工神经网络[1]; 另外心理学中的学习曲线[2]的形状也和Sigmoid函数比较类似.

参考资料

[1]
Ito, Y. (1991). "Representation of functions by superpositions of a step or sigmoid function and their applications to neural network theory." Neural Networks 4(3): 385-394.
[2]
Yelle, L. E. (1979). "The learning curve: Historical review and comprehensive survey." Decision Sciences 10(2): 302-328.