资源简介
这是基于cnn深度卷积神经网络算法的人脸识别程序代码,用的是Python
代码片段和文件信息
# -*-coding:utf8-*-#
“““
本程序基于python+numpy+theano+PIL开发,采用类似LeNet5的CNN模型,应用于olivettifaces人脸数据库,
实现人脸识别的功能,模型的误差降到了5%以下。
本程序只是个人学习过程的一个toy implement,模型可能存在overfitting,因为样本小,这一点也无从验证。
但是,本程序意在理清程序开发CNN模型的具体步骤,特别是针对图像识别,从拿到图像数据库,到实现一个针对这个图像数据库的CNN模型,
我觉得本程序对这些流程的实现具有参考意义。
@author:wepon(http://2hwp.com)
讲解这份代码的文章:http://blog.csdn.net/u012162613/article/details/43277187
“““
import os
import sys
import time
import numpy
from PIL import Image
import theano
import theano.tensor as T
from theano.tensor.signal import downsample
from theano.tensor.nnet import conv
“““
加载图像数据的函数dataset_path即图像olivettifaces的路径
加载olivettifaces后,划分为train_datavalid_datatest_data三个数据集
函数返回train_datavalid_datatest_data以及对应的label
“““
def load_data(dataset_path):
img = Image.open(dataset_path)
img_ndarray = numpy.asarray(img dtype=‘float64‘)/256
faces=numpy.empty((4002679))
for row in range(20):
for column in range(20):
faces[row*20+column]=numpy.ndarray.flatten(img_ndarray [row*57:(row+1)*57column*47:(column+1)*47])
label=numpy.empty(400)
for i in range(40):
label[i*10:i*10+10]=i
label=label.astype(numpy.int)
#分成训练集、验证集、测试集,大小如下
train_data=numpy.empty((3202679))
train_label=numpy.empty(320)
valid_data=numpy.empty((402679))
valid_label=numpy.empty(40)
test_data=numpy.empty((402679))
test_label=numpy.empty(40)
for i in range(40):
train_data[i*8:i*8+8]=faces[i*10:i*10+8]
train_label[i*8:i*8+8]=label[i*10:i*10+8]
valid_data[i]=faces[i*10+8]
valid_label[i]=label[i*10+8]
test_data[i]=faces[i*10+9]
test_label[i]=label[i*10+9]
#将数据集定义成shared类型,才能将数据复制进GPU,利用GPU加速程序。
def shared_dataset(data_x data_y borrow=True):
shared_x = theano.shared(numpy.asarray(data_x
dtype=theano.config.floatX)
borrow=borrow)
shared_y = theano.shared(numpy.asarray(data_y
dtype=theano.config.floatX)
borrow=borrow)
return shared_x T.cast(shared_y ‘int32‘)
train_set_x train_set_y = shared_dataset(train_datatrain_label)
valid_set_x valid_set_y = shared_dataset(valid_datavalid_label)
test_set_x test_set_y = shared_dataset(test_datatest_label)
rval = [(train_set_x train_set_y) (valid_set_x valid_set_y)
(test_set_x test_set_y)]
return rval
#分类器,即CNN最后一层,采用逻辑回归(softmax)
class LogisticRegression(object):
def __init__(self input n_in n_out):
self.W = theano.shared(
value=numpy.zeros(
(n_in n_out)
dtype=theano.config.floatX
)
name=‘W‘
borrow=True
)
self.b = theano.shared(
value=numpy.zeros(
(n_out)
dtype=theano.config.floatX
)
name=‘b‘
borrow=True
)
self.p_y_given_x = T.nnet.softm
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2017-06-15 22:53 基于卷积神经网络的人脸识别\
文件 1182905 2015-01-27 10:53 基于卷积神经网络的人脸识别\olivettifaces.gif
文件 14750086 2015-01-29 15:30 基于卷积神经网络的人脸识别\params.pkl
文件 15554 2015-01-30 07:21 基于卷积神经网络的人脸识别\train_CNN_olivettifaces.py
文件 7042 2015-01-30 07:21 基于卷积神经网络的人脸识别\use_CNN_olivettifaces.py
相关资源
- Python数据处理 Data Wrangling with Python 中
- rhino.python 教程 英文
- Introduction to Computation and Programming Us
- Python书籍
- Advanced Algorithmic Trading
- python-2.7.10.amd64.msi
- Python2.6.6 绿色版
- Python-3.7.1.tgz
- bayer图像raw文件转DNG文件
- python最新安装包
- Python Machine Learning 2nd Edition [Sebastian
- 机器学习——推荐系统python实现
- Python3源代码.rar
- 基于卷积神经网络的手势识别
- Sublime Text238239
- Python 强化学习 DQN Flappy Bird
- python2环境的opencv库
- zw_hljwkwm-10721414-零基础入门学习Pytho
- Python for Finance.中文版(Yves Hilpisch)
- opencv_python-3.3.0-cp35-cp35m-win_amd64.whl
- 《贝叶斯思维:统计建模的Python学习法
- Python程序设计_车万翔译_课后全部答案
- CNN用于图像分类以外的数字序列.rar
- opencv_python-4.1.0.25-cp37-cp37m-win_amd64.wh
- Python-利用TensorFlow中的深度学习进行图
- python深度学习pdf+源码案例
- simplecv实用机器视觉+OpenCV-Python-Totur
- Python3.7 免安装版
- 冲顶大会/芝士超人/花椒直播...答题助
- Serial assistant.rar
评论
共有 条评论