【深度学习】基于caffe的表情识别(五):使用python接口测试_caffemodel 五类表情识别-程序员宅基地

技术标签: 【深度学习】基于caffe的表情识别  Expression recognition  deeplearning  caffe  ai  

《基于caffe的表情识别》系列文章索引:http://blog.csdn.net/pangyunsheng/article/details/79434263


一、编译pycaffe

    caffe提供了python、matlab、C++等语言的接口,这里我们使用python进行测试就需要先编译python接口,也就是编译pycaffe,我在之前给出的安装编译caffe的教程中,包含了编译pycaffe的内容,如果读者是在ubuntu16.04下编译,可以直接看我的教程:http://mp.blog.csdn.net/postedit/79418896,如果是其他操作系统或其他版本,百度解决一下,这里就不多介绍了。只有编译了pycaffe,才能使用python接口。

二、编写用于测试的网络结构deploy.prototxt

    在第三篇文章【深度学习】基于caffe的表情识别(三)中讲到:在搭建网络结构时,需要用到3个文件,我们现在只用到了其中的两个,还有一个deploy.prototxt文件就是今天要介绍的,测试时用到的网络结构。
    deploy.prototxt与train_val.prototxt的内容基本一致,只是结构稍微有点不同,因为是同一个模型的两个网络结构,一个用于训练阶段,一个用于测试,所以两者不会有太大区别。
    在第三篇文章给出的链接https://pan.baidu.com/s/146EWRldMfRcyvIxtPYeceA中也给出了deploy.prototxt文件,大家可以下下来看一下它与train_val.prototxt文件的区别。

三、使用python测试

  1.把caffemodel模型下载到本地

    之前我们在DevCloud上已经训练好了用于表情识别的模型,现在要把它下载到本地,用于一会儿的测试。
    1)首先用ssh colfax指令登陆到DevCloud
    2)查看训练好的caffemodel模型

    3)在本地使用scp命令将DevCloud上的caffemodel文件下载到本地,用下面指令:

scp colfax:/home/u12067/faceR/myfacialnet_iter_200000.caffemodel faceR/predict/

    其中/home/u12067/faceR/myfacialnet_iter_200000.caffemodel是我caffemodel在DevCloud上的路径,testpy是我在本地根目录下创建的一个文件夹。

  2.编写python程序,测试模型

    创建一个名为testfn.py的python文件,加入下面代码:

#coding=utf-8

import caffe
import numpy as np

def faceRecognition(imagepath):
	root='faceR/'   #根目录
	deploy=root + 'model/deploy.prototxt'    #deploy文件
	caffe_model=root + 'predict/myfacialnet_iter_200000.caffemodel'   #训练好的 caffemodel
	img=root + 'predict/' + imagepath
	labels_filename = root + 'data/labels.txt'  #类别名称文件,将数字标签转换回类别名称
	net = caffe.Net(deploy,caffe_model,caffe.TEST)   #加载model和network

	#图片预处理设置
	transformer = caffe.io.Transformer({'data': net.blobs['data'].data.shape})  #设定图片的shape格式(1,1,42,42)
	transformer.set_transpose('data', (2,0,1))    #改变维度的顺序,由原始图片(42,42,1)变为(1,42,42)
	#transformer.set_mean('data', np.load(mean_file).mean(1).mean(1))    #减去均值,前面训练模型时没有减均值,这儿就不用
	transformer.set_raw_scale('data', 255)    # 缩放到【0,255】之间
	net.blobs['data'].reshape(1,1,42,42)
	im=caffe.io.load_image(img,False)#加载图片
	net.blobs['data'].data[...] = transformer.preprocess('data',im)#执行上面设置的图片预处理操作,并将图片载入到blob中

	#执行测试
	out = net.forward()
	labels = np.loadtxt(labels_filename, str, delimiter='\t')   #读取类别名称文件
	prob= net.blobs['prob'].data[0].flatten() #取出最后一层(Softmax)属于某个类别的概率值,并打印
	order=prob.argsort()[-1]  #将概率值排序,取出最大值所在的序号 
	face=labels[order]
	return face #face是最终识别的表情

face=faceRecognition('00014.jpg')
print("您的表情是:"+face)

  3.运行程序,测试结果

    运行刚刚编写的python程序:

python faceR/predict/testfn.py
    得到输出结果:

    
    再来看我刚刚测试的图片:

 这个图片是我在测试集的第7个文件夹中随机抽取的,也就是说它的真实表情应该是中性,与我们的模型预测出的结果一致!!

    到这里,整个基于caffe的表情识别实验就已经完成了,但是就目前的实验来讲,这并不是最好的模型,还要再加入一些算法上和技巧上的改变才能进一步提高该模型的准确率,但是这就是基于caffe的深度学习模型的完整流程,希望能对一些刚刚入门caffe的新手起到一些帮助,如果有错误还请大家原谅并指出,希望与大家共同学习!
    下一篇我还将要介绍一个小方法,即使用opencv中的人脸检测,检测出一张图片的人脸部分并裁剪,然后输入到我们的模型中进行预测。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/pangyunsheng/article/details/79481447

智能推荐

info级别日志与debug_debug中的计算是否在info级别也会跑-程序员宅基地

文章浏览阅读6.3k次。日志默认info级别debug日志不会打印,但是会执行日志填充的数据例如:logger.debug("日志输出",2*10); 1. 2*10会先执行出结果,然后继续往下走2. 在ch.qos.logback.classic.Logger#filterAndLog_1方法中判断是否符合级别要求是否需要输出3.如图:..._debug中的计算是否在info级别也会跑

Third calibration example - Calibration using Heikkil�'s data (planar and non-planar calibration rig-程序员宅基地

文章浏览阅读1.4k次。Similarly to the previous example, let us apply our calibration engine onto the data that comes with the originalcalibration toolbox of Heikkil� from the University of Oulu. Once again. do not bothe_non-planar calibration

物联网常用的网络协议:MQTT、AMQP、HTTP、CoAP、LwM2M_lmm2m和mqtt-程序员宅基地

文章浏览阅读1w次,点赞10次,收藏63次。物联网常用的网络协议:MQTT、AMQP、HTTP、CoAP、LwM2M物联网设备间沟通的语言,就是网络协议。设备间想相互交流,通信双方必须使用同一种“语言”。比如说你和中国人问好说’你好‘、日本人问好要说‘こんにちは’、和英国人问好要说‘hello’.说起网络协议,你可能马上就想到了 HTTP 协议。是的,在日常的 Web 开发中,我们总是需要跟它打交道,因为 HTTP 协议是互联网的主流网络协议。类似地,应用在互联网中的网络协议,还有收发电子邮件的 POP3 、SMTP 和 IMAP 协议,以及_lmm2m和mqtt

fortran使用MKL函数库中的geev计算一般矩阵的特征值与特征向量_fortran求矩阵特征值-程序员宅基地

文章浏览阅读7.4k次,点赞4次,收藏20次。这篇博文简要记录一下使用MKL函数库计算一般矩阵的特征值与特征向量对形如对称矩阵或是埃尔米特等特殊矩阵有其对应的子程序,在这里先不涉及。有需求的可以自行查阅MKL官方文档下面给出本次示例代码:代码使用f95接口。f77借口参数太多,笔者太懒<不过懒惰是创新的原动力^_^>program testGeev use lapack95 implicit..._fortran求矩阵特征值

Numpy, Scipy, Matplotlib基本用法_np.imresize-程序员宅基地

文章浏览阅读147次。学习内容来自:Numpy Tutorial文章目录Array SlicingArray IndexingMathematical ManipulationBroadcastingImage Processing基本的用法课程里面说的挺详细了。 特别记录一些需要关注的点。Array Slicing使用固定数字进行array寻址会导致数组降维。y = np.random.random((3,..._np.imresize

蓝桥杯 历届试题 回文数字 C++_c++蓝桥杯 回文数-程序员宅基地

文章浏览阅读355次。题目阅览 观察数字:12321,123321 都有一个共同的特征,无论从左到右读还是从右向左读,都是相同的。这样的数字叫做:回文数字。  本题要求你找到一些5位或6位的十进制数字。满足如下要求:  该数字的各个数位之和等于输入的整数。  输入格式  一个正整数 n (10<n<100), 表示要求满足的数位和。  输出格式若干行,每行包含一个满足要求的5位或6位整数。  数字按从小到大的顺序排列。  如果没有满足条件的,输出:-1样例输入144样例输出199899_c++蓝桥杯 回文数

随便推点

Java生成二维码,扫描并跳转到指定的网站_java扫二维码进入自己制作的网页-程序员宅基地

文章浏览阅读6.2k次,点赞3次,收藏13次。需要的pom文件 &lt;dependency&gt; &lt;groupId&gt;com.google.zxing&lt;/groupId&gt; &lt;artifactId&gt;core&lt;/artifactId&gt; &lt;version&gt;3.1.0&lt;/version&gt;_java扫二维码进入自己制作的网页

python:多波段遥感影像分离成单波段影像_一个多波段影像分解成多个单波段影像-程序员宅基地

文章浏览阅读650次。在遥感图像处理中,我们经常需要将多波段遥感影像拆分成多个单波段图像,以便进行各种分析和后续处理。本篇博客将介绍一个用Python编写的程序,该程序可以读取多波段遥感影像,将其拆分为单波段图像,并保存为单独的文件。本程序使用GDAL库来处理遥感影像数据,以及NumPy库来进行数组操作。结果如下图所示,选中的影像为输入的多波段影像,其他影像分别为拆分后的多波段影像。_一个多波段影像分解成多个单波段影像

移动硬盘突然在电脑上无法显示_电脑无法显示移动硬盘-程序员宅基地

文章浏览阅读5.1k次,点赞2次,收藏4次。0前言一直用的好好的移动硬盘突然不显示了,前段时间因为比较忙,一直没顾得上管它,趁这个假期,好好捅咕了一番,总算是弄好了,特此将解决的过程记录如下:1.问题描述 1.我的移动硬盘在其他人的电脑上能够正常显示和使用 2.其他移动硬盘在我电脑上能够正常的显示和使用 3.在我的电脑上,该移动硬盘,既不显示盘符,磁盘管理 又不显示该磁盘2.问题分析1.我的移动硬盘能够在其他人电脑上_电脑无法显示移动硬盘

Linux开机启动过程(16):start_kernel()->rest_init()启动成功_linux 标志着kernel启动完成-程序员宅基地

文章浏览阅读1k次。Kernel initialization. Part 10.在原文的基础上添加了5.10.13部分的源码解读。End of the linux kernel initialization processThis is tenth part of the chapter about linux kernel initialization process and in the previous part we saw the initialization of the RCU and stopped o_linux 标志着kernel启动完成

Scala安装和开发环境配置教程_scala安装及环境配置-程序员宅基地

文章浏览阅读5.3k次,点赞5次,收藏23次。Scala语言概述:Scala语言是一门以Java虚拟机为运行环境,支持面向对象和函数式编程的静态语言,java语言是面向对象的,所以代码写起来就会相对比较模块儿,而函数式编程语言相对比较简洁_scala安装及环境配置

深扒人脸识别60年技术发展史_人脸识别发展历史-程序员宅基地

文章浏览阅读2.4k次。“他来听我的演唱会,门票换了手铐一对”。最近歌神张学友变阿SIR,演唱会上频频抓到罪犯,将人脸识别技术又一次推到了大众的视线中。要说人脸识别技术的爆发,当属去年9月份苹果iPhone x的发布,不再需要指纹,只需要扫描面部就可以轻松解锁手机。任何技术一旦进入智能手机这个消费市场,尤其是被苹果这个标志性的品牌采用,就意味着它将成为一种趋势,一个智能设备的标配。在智能手机快速崛起的这几年,其密码锁..._人脸识别发展历史

推荐文章

热门文章

相关标签