1. 程式人生 > >基於PYQT編寫一個人臉識別軟體(2)

基於PYQT編寫一個人臉識別軟體(2)

前言

以前在部落格:基於PYQT編寫一個人臉識別軟體 中給出了我自己用PYQT編寫的一個小軟體。鑑於使用的是開源庫——face_recogniton,儘管使用很簡單,但是還有些問題,比如:識別黃種人時效果不好,執行速度較慢等等。
有一點還需要說明,face_recogntion的底層是dlib機器學習庫,換種想法我們也可以使用dlib的一些基礎功能自己編寫出一些類似face_recogntion庫提供的功能。
我自己基於dlib庫重新寫了一個新的軟體,效能上相對會比原來使用face_recognition好一些。

環境依賴

  • OpenCV(python)。影象處理必備,沒什麼說的。
  • PyQt4。GUI介面是基於PYQT編寫的,介面設計上我沒有花太多功夫,直接在QT Designer設計,然後用eric編譯生成的。
  • 一些常用庫:比如numpy、webbrowser、pickle等等,如果少了用pip裝就可以了。
  • 軟體是基於Python2編寫的,儘管儘量注意了py2和py3的相容問題,但在python3不保證一定能執行通過,可能要自行修改一些程式碼才能執行通過。

軟體截圖

下面是部分截圖,總共做了9個功能。
這裡寫圖片描述

最基本的人臉檢測,可以選擇預設模型或者CNN模型,CNN模型執行耗時較長(在筆記本上跑挺慢的)。
這裡寫圖片描述

換臉。
這裡寫圖片描述

訓練目標檢測器,預設會匯入我做好的貓資料集,也可以自行製作資料集。要使用到dlib的imglab工具,生成描述資料集資訊的xml檔案。自己訓練相對也會比較花時間。
這裡寫圖片描述


訓練完成,會列印一些相關資訊,後面控制檯也會列印一些資訊。
這裡寫圖片描述
預設會匯入我訓練好的模型,這個是貓臉識別的模型。
這裡寫圖片描述

下載連結

http://download.csdn.net/download/hongbin_xu/10226813
裡面提供了兩個下載連結。一個是python原始碼,一個是我打包好的exe可執行檔案。
python原始碼,需要自行配置Python環境,安裝dlib、opencv、pyqt等庫;
軟體使用python2編寫,python3不保證一定能執行,需要自己除錯或是修改部分程式碼;
exe檔案,可以直接在Windows下執行,不需要安裝依賴庫;

目錄說明

/app/

下存放的是有關影象處理,後臺功能實現的程式碼。
這裡寫圖片描述

/gui/下存放的是有關GUI介面的檔案,Ui開頭的是在eric下編譯生成的py檔案,用來繪製GUI介面,沒有Ui開頭的是對應GUI介面互動的檔案,定義了一些對應的槽函式來響應使用者操作。
這裡寫圖片描述

/images/資料夾下存放了一些測試圖片。
/images/test_face_clustering/存放了測試人臉聚類功能時使用的一些圖片。
/images/face_clustering_output/儲存了人臉聚類的輸出結果。
/images/test_face_exchange/存放了換臉功能的測試圖片。
/images/test_object_detector/存放了訓練資料集,在使用訓練目標檢測器功能時,會自動匯入。裡面放的是一些貓臉的資料集,預設會匯入我用imglab(dlib提供的工具軟體)做好的xml檔案。
/images/test_shape_predictor/存放了訓練資料集,用於訓練人臉特徵點檢測器,軟體預設會匯入做好的xml檔案,引入資料集。
剩下的幾張圖片,是隨便放的一些測試圖片。
這裡寫圖片描述

/model/資料夾中放了一些官方提供的模型檔案,程式中會用到。
這裡寫圖片描述

/template/資料夾中存放了人臉比對功能中使用的模板圖片,以及我生成好的模板。
這裡寫圖片描述

在main.py中建立了主介面(定義在mainWindow.py中),mainWindow.py匯入了其他所有的程式碼。
這裡寫圖片描述

後記

這個軟體也是斷斷續續地寫的,哪天有多餘時間就來寫幾個功能,也是當做練手用的小專案。用程式碼統計了一下有4000多行Python程式碼,不過除去用軟體生成的畫GUI介面的那些程式碼,差不多加起來也有2000-3000行吧。感覺主要時間都是花在除錯bug上,寫一個功能也花不了多少時間,也許自己還是太菜了。
最近一直在等我的雙目攝像頭,總算到了,正好也把軟體給寫完了,可以開始做實驗了。

相關推薦

基於PYQT編寫一個人臉識別軟體2

前言 以前在部落格:基於PYQT編寫一個人臉識別軟體 中給出了我自己用PYQT編寫的一個小軟體。鑑於使用的是開源庫——face_recogniton,儘管使用很簡單,但是還有些問題,比如:識別黃種人時效果不好,執行速度較慢等等。 有一點還需要說明,face_

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

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

人臉識別API免費

文章來自:原始碼線上https://www.shengli.me/api/58.html;   人臉檢測系統在網際網路上供能多人使用,這樣的話對伺服器的效能要求十分高,要用到GPU服務,這樣不划算,網上租一個月普遍最低價都是每月2500元以上,而且是低配GPU,還不如直接購買介面,

5_人臉檢測和人臉識別綜述調研20181211

5_人臉檢測和人臉識別綜述(調研)(20181211) 一、人臉檢測 1、基於知識的方法 2、基於模板匹配的方法 3、基於統計模型的方法 4、人臉檢測的評價指標 4、人臉識別方法的對比 5、人臉檢測目前和未來的

Android課程設計 人臉識別簽到

得到 bject color stc capture tab string default contex 學習完百度人臉API的調用,現在即可開發自己的人臉識別簽到系統,下面作者先貼上部分功能源碼來給大家參考和學習 (一)百度人臉庫的人臉驗證 1° 獲取待識別的

人臉識別方法轉載

看到j.liu關於人臉識別的帖子,萌發寫這個帖子的念頭。沒有別的意思,就是想拋磚引玉,把問題說的全面一點,希望j.liu和回其帖子的兄弟姐妹們不要介意。如有興趣,歡迎繼續討論。在以下討論中,TPAMI = IEEE Transactions on PAMI 這個雜誌PAMI  是指 pattern analy

OpenCV人臉識別實驗——特徵臉Eigenfaces及其重構的原始碼詳解

1、介紹Introduction 從OpenCV2.4開始,加入了新的類FaceRecognizer,我們可以使用它便捷地進行人臉識別實驗。 本實驗採用的程式設計環境為:opencv3.0+VS2013。人臉識別的實驗已經轉移到face模組中, face模組在我這裡的路徑為

人臉識別系列:FR+FCN

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

SeetaFace編譯使用 中科院人臉識別SDK

中科院人臉識別平臺:  1:編譯face_detector——dll工程  步驟: 1:檔案——新建——專案——win32控制檯程式——dll——空工程。  2:新增cpp檔案,除了TEST檔案下  3:屬性C/C++——附加包含目錄——新增include中的檔案  4:

基於FDC2214感測器的手勢識別裝置MSP430

今年的江蘇省電賽,我們選擇了手勢識別裝置(D題)。 裝置使用MSP430F5529開發板,TI的FDC2214電容感測器,外設使用4*4矩陣按鍵進行功能切換、數碼管顯示感測器數值、LED燈顯示手勢狀態。 FDC2214是4路輸入電容感測器,我們使用覆銅板平均分成八分,構成

深度學習與人臉識別系列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

利用第三方server實現的人臉識別技術1

說明:face.com已經被facebook收購,停止了人臉識別的服務了。       由於專案需要,我研究了下2個第三方的server的人臉識別的提供的API,其中有2個做的還是不錯的,一個是國外的,他提供了各種語言的API,一個是國內盛大的。下面我分別就這2個公司

深度學習與人臉識別系列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

用C語言開發一個BT下載軟體 ------ 程式碼實現-1-種子檔案解析模組

//parse_metafile.h #ifndef PARSE_METAFILE #define PARSE_METAFILE // 儲存從種子檔案中獲取的tracker的URL typedef struct _Announce_list { char ann

ROS學習之tf.2.編寫一個TF廣播器C++

ROS.tf2.編寫一個tf廣播器(C++)宣告:本教程來自於ROS.WIKI,本人在整理過程中可能出現一些錯誤和問題,有問題可以去檢視官網版本也可以諮詢本人1.1在接下來的兩篇教程中,我們將編寫程式碼來重現tf入門教程中的演示。之後,以下教程將重點介紹使用更高階的tf功能擴

人臉識別系列:Webface系列1CASIA-WebFace

這篇文章的亮點在於提出一種半自動的方法來收集網路上的人臉影象,最終組成了國內人臉識別屆頗具盛名的人臉訓練集 CASIA-WebFace,同時還提出了一種11層的CNN最終達到了lfw上的state-of-art。 資料集的構建 構建資料集時,從網路上

人臉識別系列十三:SphereFace

從Center Loss的論文釋出開始,人臉識別技術的研究重心就轉向損失函式的改進了,這篇論文作者從幾種損失函式開始說起。 幾種損失函式 softmax損失僅僅能夠學到分辨性不夠強的特徵,除此之外,還有contrastive loss,center

人臉識別系列:Webface系列2

作者 CASIA 概述 為了得到更好的準確度,深度學習的方法都趨向更深的網路和多個模型ensemble,這樣導致模型很大,計算時間長。本文提出一種輕型的CNN,在取得比較好的效果同時,網路結構簡化,時間和空間都得到了優化,可以跑在嵌入式裝置和移動裝置

基於Theano-MLP的字元識別實驗MNIST

深度學習基礎 - 基於Theano-MLP的手寫字元識別實驗 基礎知識 深度學習回顧 深度學習的概念起源於人工神經網路,本文所採用的包含多隱層的多層感知機(MLP)就是其中的典型模型。長期以來,由模型複雜度所帶來的計算效率低下問題一直是抑制

人臉識別系列:FaceNet

首先可以看一下最終的效果,數字表示兩張圖片經過Facenet提取的特徵之間的歐式距離,可以直接表示兩張圖片的差異: 從圖中可以看出,若取閾值為1.1,可以很輕易的區分出兩張照片是不是同一個人。 網路結構: 上圖是文章中所採用的網路結構,其中