您的位置 首页 FPGA

教程详解:用卷积神经网络检测脸部要害点(一)

这是一个手把手教你学习深度学校的教程。一步一步,我们将要尝试去解决Kaggle challenge中的脸部关键点的检测问题。这份教程介绍了Lasagne,一个比较新

这是一个手把手教你学习深度校园的教程。一步一步,咱们即将测验去处理Kaggle challenge中的脸部要害点的检测问题。

这份教程介绍了Lasagne,一个比较新的依据Python和Theano的神经网络库。咱们将用Lasagne去模仿一系列的神经网络结构,讨论一下数据增强(data augmentaTIon)、丢失(dropout)、结合动量(momentum)和预先练习(pre-training)。这儿有许多办法能够将咱们的成果改进不少。

我假定诸位现已知道了一些关于神经网络的仅仅。所以咱们就不介绍神经网络的布景常识了。这儿也供给一些好的介绍神经网络的书本和视频,如Neural Networks and Deep Learning online book。Alec Radford的讲演Deep Learning with Python’s Theano library也是一个快速介绍的好比方。以及ConvNetJS Browser Demos

预先预备

假如你只需求看懂的话,则不需求自己写一个代码然后去履行。这儿供给一些装置的教程给那些装备好CUDA的GPU而且想要运转实验的那些人。

我假定你们现已装置了CUDA toolkit, Python 2.7.x, numpy, pandas, matplotlib, 和scikit-learn。装置剩余的依靠包,比方Lasagne和Theano都能够运转下面的指令

pip install -r https://raw.githubusercontent.com/dnouri/kfkd-tutorial/master/requiremen…

留意,为了简练起见,我没有在指令中创立虚拟环境,可是你需求的。

译者:我是在windows10上面装备这个环境的,装置anaconda(再用此环境装置依靠包)、VS2013(不引荐2015)、CUDA东西即可。

假如一切都顺畅的话,你将会在你的虚拟环境下的src/lasagne/examples/目录中找到mnist.py并运转MNIST比方。这是一个关于神经网络的“Hello world”程序。数据中有十个分类,分别是0~9的数字,输入时28TImes;28的手写数字图片。

cd src/lasagne/examples/

python mnist.py

此指令将在三十秒左右后开端打印输出。 这需求一段时刻的原因是,Lasagne运用Theano做重型起重; Theano反过来是一个“优化GPU元编程代码生成面向数组的优化Python数学编译器”,它将生成需求在练习发生前编译的C代码。 走运的是,咱们组需求在第一次运转时付出这个开支的价格。

译者:假如没有装备GPU,用的是CPU的话,应该是不必这么久的编译时刻,可是履行时刻有一些长。假如用GPU,在第一次跑一些程序的时分,会有提示正在编译的内容。

当练习开端的时分,你会看到

Epoch 1 of 500

training loss: 1.352731

validaTIon loss: 0.466565

validaTIon accuracy: 87.70 %

Epoch 2 of 500

training loss: 0.591704

validation loss: 0.326680

validation accuracy: 90.64 %

Epoch 3 of 500

training loss: 0.464022

validation loss: 0.275699

validation accuracy: 91.98 %

假如你让练习运转满足长,你会留意到,在大约75代之后,它将到达大约98%的测验精度。

假如你用的是GPU,你想要让Theano去运用它,你要在用户的主文件夹下面创立一个.theanorc文件。你需求依据自己装置环境以及自己操作系统的装备运用不同的装备信息:

[global]

floatX = float32

device = gpu0

[lib]

cnmem = 1

译者:这是我的装备文件。

[cuba]

root = C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0

[global]

openmp = False

device = gpu

floatX = float32

allow_input_downcast = True

[nvcc]

fastmath = True

flags = -IC:\Anaconda2\libs

compiler_bindir = C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin

base_compiledir = path_to_a_directory_without_such_characters

[blas]

ldflags =

[gcc]

cxxflags = -IC:\Anaconda2\MinGW

数据

面部要害点检测的练习数据集包括7049(96×96)个灰度图画。 关于每个图画,咱们应该学习找到15个要害点的正确方位(x和y坐标),例如

left_eye_center

right_eye_outer_corner

mouth_center_bottom_lip

一个脸部标记出三个要害点的比方。

数据集的一个风趣的改变是,关于一些要害点,咱们只要大约2,000个标签,而其他要害点有7,000多个标签可用于练习。

让咱们编写一些Python代码,从所供给的CSV文件加载数据。 咱们将编写一个能够加载练习和测验数据的函数。 这两个数据集的差异在于测验数据不包括方针值; 这是猜测这些问题的方针。 这儿是咱们的load()函数:

# file kfkd.py

import os

import numpy as np

from pandas.io.parsers import read_csv

from sklearn.utils import shuffle

FTRAIN = ‘~/data/kaggle-facial-keypoint-detection/training.csv’

FTEST = ‘~/data/kaggle-facial-keypoint-detection/test.csv’

def load(test=False, cols=None):

Loads data from FTEST if *test* is True, otherwise from FTRAIN.

Pass a list of *cols* if you’re only interested in a subset of the

target columns.

fname = FTEST if test else FTRAIN

df = read_csv(os.path.expanduser(fname)) # load pandas dataframe

# The Image column has pixel values separated by space; convert

# the values to numpy arrays:

df[‘Image’] = df[‘Image’].apply(lambda im: np.fromstring(im, sep=’ ‘))

if cols: # get a subset of columns

df = df[list(cols) + [‘Image’]]

print(df.count()) # prints the number of values for each column

df = df.dropna() # drop all rows that have missing values in them

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/fangan/fpga/149295.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部