1. 程式人生 > >深度學習與人臉識別系列(4)__vgg人臉識別模型測試

深度學習與人臉識別系列(4)__vgg人臉識別模型測試

# -*- coding: utf-8 -*-
#想要加中文註釋就必須將字元編碼格式設定為utf8
#作者:郭開

import numpy as np
import os
import cv2
import cv2.cv as cv
from skimage import transform as tf
from PIL import Image, ImageDraw
import threading
from time import ctime,sleep
import time
import sklearn
import matplotlib.pyplot as plt
import skimage

caffe_root = '/home/gk/caffe-master/'
import sys
sys.path.insert(0, caffe_root + 'python')
import caffe
import sklearn.metrics.pairwise as pw


#我把GPU加速註釋掉了,所以沒有GPU加速,速度有點慢,你要在學校有條件找個有GeForce顯示卡的電腦
#caffe.set_mode_gpu()


#載入caffe模型
global net
net=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  predicts



def 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 X


if __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'


相關推薦

深度學習人臉識別系列4__vgg人臉識別模型測試

# -*- coding: utf-8 -*- #想要加中文註釋就必須將字元編碼格式設定為utf8 #作者:郭開 import numpy as np import os import cv2 import cv2.cv as cv from skimage import transform as tf

深度學習人臉識別系列5__vgg人臉識別模型測試

# -*- coding: utf-8 -*- #想要加中文註釋就必須將字元編碼格式設定為utf8 #作者:郭開 import numpy as np import os import cv2 import cv2.cv as cv from skimage import transform as tf f

深度學習人臉識別系列4__利用caffe訓練深度學習模型

name: "VGG_FACE_16_layers" layer {   top: "data_1"   top: "label_1"   name: "data_1"   type: "Data"   data_param {     source: "/media/gk/9ec75485-26b1-471

吳恩達《深度學習》第一門課4深層神經網絡

加網 分享 傳遞 height 經驗 技術分享 image 進行 sig 4.1深層神經網絡 (1)到底是深層還是淺層是一個相對的概念,不必太糾結,以下是一個四層的深度神經網絡: (2)一些符號定義: a[0]=x(輸入層也叫做第0層) L=4:表示網絡的層數 g:表示激

深度學習tensorflow的小日子

本系列專門用來記錄我的深度學習歷程,其中程式碼大部分均出自於李金洪老師的《深度學習之TensorFlow》,希望所有機器學習的道友都能有所知、有所得。 import tensorflow as tf import numpy as np import matpl

深度學習自然語言處理

自然語言處理主要研究用計算機來處理、理解以及運用人類語言(又稱自然語言)的各種理論和方法,屬於人工智慧領域的一個重要研究方向,是電腦科學與語言學的交叉學科,又常被稱為計算語言學。隨著網際網路的快速發展,網路文字尤其是使用者生成的文字成爆炸式增長,為自然語言處理帶來了巨大的應用

深度學習自然語言處理——深度學習運用到自然語言處理領域的成功案例

目錄 1.全連線前饋神經網路(MLP)的應用 大部分情況下,全連線前饋神經網路(MLP)能被用來替代線性學習器。這包括二分類或多分類問題,以及更復雜的結構化預測問題。網路的非線性以及易於整合預訓練詞嵌入的能力經常帶來更高的分類精度。一系列工作通過簡單地將句

每天學習一算法系列4 (輸入一個整形陣列,數組裡有正數也有負數,陣列中連續的一個或多個整陣列成一個子陣列,每個子陣列都有一個和)

題目: 輸入一個整形陣列,數組裡有正數也有負數,陣列中連續的一個或多個整陣列成一個子陣列,每個子陣列都有一個和。 求所有子陣列的和的最大值。要求時間複雜度為O(n)。 例如輸入的陣列為1, -2, 3, 10, -4, 7, 2, -5,和最大的子陣列為3, 10, -4,

深度學習人臉識別系列3__利用caffe訓練深度學習模型

name: "VGG_FACE_16_layers" layer {   top: "data_1"   top: "label_1"   name: "data_1"   type: "Data"   data_param {     source: "/media/gk/9ec75485-26b1-471

深度學習人臉識別系列3__基於VGGNet的人臉識別系統

作者:wjmishuai 1.引言 本文中介紹的人臉識別系統是基於這兩篇論文: 第一篇論文介紹了海量資料集下的圖片檢索方法。第二篇文章將這種思想應用到人臉識別系統中,實現基於深度學習的人臉識別。 2.關於深度學習的簡要介紹     現階段為止,對

大數據學習系列4-- shell編程

blank tro itl gpo .cn lan 學習 nbsp 系列 http://wiki.ubuntu.org.cn/Shell%E7%BC%96%E7%A8%8B%E5%9F%BA%E7%A1%80#Shell.E9.87.8C.E7.9A.84.E6.B5.

pythonzmq系列4

       今天為大家介紹push/pull模式,這是一個什麼模式呢?戰爭時期,食物緊缺,實行配給制,大家都排好隊,有人專門發放食物,前一個人領取了食物,後一個人跟上繼續領取食物,這個push端就是發放食物的,pull

吳恩達《神經網路深度學習》課程筆記歸納-- 神經網路基礎之邏輯迴歸

上節課我們主要對深度學習(Deep Learning)的概念做了簡要的概述。我們先從房價預測的例子出發,建立了標準的神經網路(Neural Network)模型結構。然後從監督式學習入手,介紹了Standard NN,CNN和RNN三種不同的神經網路模型。接著介紹了兩種不

吳恩達《神經網路深度學習》課程筆記歸納-- 神經網路基礎之Python向量化

上節課我們主要介紹了邏輯迴歸,以輸出概率的形式來處理二分類問題。我們介紹了邏輯迴歸的Cost function表示式,並使用梯度下降演算法來計算最小化Cost function時對應的引數w和b。通過計算圖的方式來講述了神經網路的正向傳播和反向傳播兩個過程。本節課我們將來

機器學習中的數學系列矩陣矩陣乘法

1.對於矩陣的認識應當把它看成是多個向量的排列表或把矩陣看成行向量,該行向量中的每個元素都是一個列向量,即矩陣是複合行向量。如下圖所示。 2.對於下面這個矩陣的乘法有兩種看法: (1)矩陣將向量[b1,b2,b3].T進行了運動變換,這種變換可以是同空間內變

解讀ASP.NET 5 & MVC6系列4:核心技術環境配置

asp.net 5是下一代的asp.net,該版本進行了全部重寫以適用於跨平臺,新新版本中,微軟引入瞭如下工具與命令:DNVM、DNX、DNU。 DNVM(.NET Version Manager):由於要實現跨平臺的目錄,微軟提供了DNVM功能,DNVM是ASP.NET最底層的內容,他是一組Powershe

人臉識別系列:FR+FCN

FR:是指face recovery FCN是指face convolution network 正面人臉重構: 這是一篇14年的論文,比較有意思的是作者採用了一個簡單卷積神經網路來完成正面人臉重構,以對齊人臉,然後基於對齊的人臉進行人臉驗證。 要重構

深度學習計算機視覺系列(10)_細說卷積神經網路

1. 前言 前面九講對神經網路的結構,元件,訓練方法,原理等做了介紹。現在我們回到本系列的核心:計算機視覺,神經網路中的一種特殊版本在計算機視覺中使用最為廣泛,這就是大家都知道的卷積神經網路。卷積神經網路和普通的神經網路一樣,由『神經元』按層級結構組成

深度 | ICCV研討會:實時SLAM的未來以及深度學習SLAM的比較附論文和PPT

選自 Computer Vison Blog 作者:Tomasz Malisiewicz 機器之心編譯 參與:吳攀、杜夏德 深度學習、計算機視覺和演算法正在塑造人工智慧的未來。 上一屆「國際計算機視覺大會(ICCV:International Con

前端框架vue.js系列4:事件修飾符按鍵修飾符

vue修飾符是指在觸發事件或按鍵時額外的觸發條件或回撥。比如點選事件只允許觸發一次,可以使用@click.once。 原生事件物件 vue可以通過以下方式,獲取原生的事件物件: <button @click="getEventDom($event);">