深度学习与人脸识别系列(5)__vgg人脸识别模型测试
来源:互联网 发布:农村淘宝服务中心电话 编辑:程序博客网 时间:2024/06/05 17:55
作者:wjmishuai
出处:http://blog.csdn.net/wjmishuai/article/details/50854168
声明:版权所有,转载请注明出处
代码下载地址:https://github.com/PatienceKai/VGG_Face_Caffe_Model
运行代码之前请把你的caffe环境配置好.
可以实现成C++版本的,由于项目是合作的,我不能上传.python版是我自己写的,流程是一样的.
注意啊,有人反映代码运行速度慢,主要原因是考虑到大部分人的电脑没有支持cuda的独显,所以这里使用的是cpu跑程序,如果你有独显并安装了cuda,速度是飞快的....
代码详解:
# -*- coding: utf-8 -*-#想要加中文注释就必须将字符编码格式设置为utf8#作者:郭开import numpy as npimport osimport cv2import cv2.cv as cvfrom skimage import transform as tffrom PIL import Image, ImageDrawimport threadingfrom time import ctime,sleepimport timeimport sklearnimport matplotlib.pyplot as pltimport skimagecaffe_root = '/home/gk/caffe-master/'import syssys.path.insert(0, caffe_root + 'python')import caffeimport sklearn.metrics.pairwise as pw#我把GPU加速注释掉了,所以没有GPU加速,速度有点慢,你要在学校有条件找个有GeForce显卡的电脑#caffe.set_mode_gpu()#加载caffe模型global netnet=caffe.Classifier('/home/gk/caffe-master/examples/VGG_net/deploy.prototxt', '/home/gk/caffe-master/examples/VGG_net/VGG_face.caffemodel')def compar_pic(path1,path2): global net #加载验证图片 X=read_image(path1) test_num=np.shape(X)[0] #X 作为 模型的输入 out = net.forward_all(data = X) #fc7是模型的输出,也就是特征值 feature1 = np.float64(out['fc7']) feature1=np.reshape(feature1,(test_num,4096)) #加载注册图片 X=read_image(path2) #X 作为 模型的输入 out = net.forward_all(data=X) #fc7是模型的输出,也就是特征值 feature2 = np.float64(out['fc7']) feature2=np.reshape(feature2,(test_num,4096)) #求两个特征向量的cos值,并作为是否相似的依据 predicts=pw.cosine_similarity(feature1,feature2) return predictsdef read_image(filelist): averageImg = [129.1863,104.7624,93.5940] X=np.empty((1,3,224,224)) word=filelist.split('\n') filename=word[0] im1=skimage.io.imread(filename,as_grey=False) #归一化 image =skimage.transform.resize(im1,(224, 224))*255 X[0,0,:,:]=image[:,:,0]-averageImg[0] X[0,1,:,:]=image[:,:,1]-averageImg[1] X[0,2,:,:]=image[:,:,2]-averageImg[2] return Xif __name__ == '__main__': #设置阈值,大于阈值是同一个人,反之 thershold=0.85 #加载注册图片与验证图片 #注意:人脸图像必须是N*N的!!!如果图片的高和宽不一样,进行归一化的时候会对图片进行拉伸,影响识别效果 reg_path="./2-1.png" rec_path="./3-1.png" #计算注册图片与验证图片的相似度 result=compar_pic(reg_path,rec_path) print "%s和%s两张图片的相似度是:%f\n\n"%(reg_path,rec_path,result) if result>=thershold: print '是一个人!!!!\n\n' else: print '不是同一个人!!!!\n\n'
运行结果:
./1-1.png和./1-2.png两张图片的相似度是:0.917091
是一个人!!!!
./2-1.png和./2-2.png两张图片的相似度是:0.942353
是一个人!!!!
./3-1.png和./3-2.png两张图片的相似度是:0.890270
是一个人!!!!
./1-1.png和./2-1.png两张图片的相似度是:0.714049
不是同一个人!!!!
./1-1.png和./3-1.png两张图片的相似度是:0.790391
不是同一个人!!!!
./2-1.png和./3-1.png两张图片的相似度是:0.773282
不是同一个人!!!!
是一个人!!!!
./2-1.png和./2-2.png两张图片的相似度是:0.942353
是一个人!!!!
./3-1.png和./3-2.png两张图片的相似度是:0.890270
是一个人!!!!
./1-1.png和./2-1.png两张图片的相似度是:0.714049
不是同一个人!!!!
./1-1.png和./3-1.png两张图片的相似度是:0.790391
不是同一个人!!!!
./2-1.png和./3-1.png两张图片的相似度是:0.773282
不是同一个人!!!!
算法性能:
2 0
- 深度学习与人脸识别系列(5)__vgg人脸识别模型测试
- 深度学习与人脸识别系列(4)__vgg人脸识别模型测试
- 深度学习与人脸识别系列(4)__利用caffe训练深度学习模型
- 深度学习与人脸识别系列(4)__利用caffe训练深度学习模型
- 深度学习与人脸识别系列(3)__利用caffe训练深度学习模型
- 深度学习与人脸识别系列(5)__利用训练好的vgg模型进行人脸识别(利用摄像头)
- 深度学习与人脸识别系列(6)__利用训练好的vgg模型进行人脸识别(利用摄像头)
- 深度学习与人脸识别系列(7)__人脸识别算法简要说明与总结
- 深度学习与人脸识别系列(6)__人脸识别算法简要说明与总结
- 深度学习与人脸识别系列(3)__基于VGGNet的人脸识别系统
- 深度学习与人脸识别系列(2)__基于VGGNet的人脸识别系统
- 深度学习与人脸识别系列(2)__基于VGGNet的人脸识别系统
- 深度学习与人脸识别系列(2)__深度学习的环境搭建(ubuntu+caffe)
- 深度学习-人脸识别
- 【深度学习】基于深度学习的人脸识别系统系列(Caffe+OpenCV+Dlib)
- 基于深度学习的人脸识别AI技术谜与思(十四)--脸型识别
- 深度学习与人脸识别系列(1)__算法流程和教程大纲(基于caffe)
- 深度学习与人脸识别系列(1)__算法流程和教程大纲(基于caffe)
- 深度学习与人脸识别系列(4)__利用caffe训练深度学习模型
- ios 下创建,删除文件夹的方法
- 虚拟机跨主机RESIZE和迁移时候报错的问题
- java基础之泛型
- 从尾到头打印链表每个节点的值。
- 深度学习与人脸识别系列(5)__vgg人脸识别模型测试
- layout_marginLeft和layout_marginStart
- Android实现开机自动运行程序
- Android具有system权限为什么不可以访问SDcard
- Linux中常用命令——查找命令对比分析
- RHEL5.5配置SFTP-ONLY访问
- bzoj1800
- Android消息机制之 Looper、Handler、Message的关系和运行
- typeof