技術分享|AI人臉識別?有了這篇詳細教程人人都能實現

2020-12-05 AlphaKnow
數據觀世界

人臉識別是計算機視覺領域中的一項核心技術,對於整個人工智慧技術的發展也是非常重要,目前已經在多個領域中投入使用,相對較為成熟。很多人認為人臉識別技術高深莫測,難以企及,其實也並非如此神秘,本文將通過OpenCV和Python/C++,利用簡短的代碼,幫助每一位讀者實現人臉識別。

人臉識別

OpenCV:是一個主要針對實時計算機視覺的編程函數庫。本文旨在使用OpenCV和Python/C++從圖像中檢測面部。

本文基礎:在機器上安裝Python和C++,了解Python和C ++的編碼基礎知識,代碼編輯器。有了這些,我們就可以開始進行人臉識別了。

為了通過代碼實現人臉識別,我們將使用OpenCV中基於Haar的cascade分類器,這一種有效的對象檢測方法。它是一種基於機器學習的方法,其中cascade函數是通過許多positive和negative圖像得到訓練,然後用於檢測其他圖像中的對象。 OpenCV已經包含許多面部、眼睛、微笑等預先訓練的分類器。這些XML模型文件存儲在opencv / data / haarcascades /的位置。

讓我們先開始在Python上編寫代碼實現人臉識別然後再展示通過C++實現的教程。

Python

首先,導入numpy、OpenCV兩個庫:

import numpy as np

import cv2 as cv

然後,加載OpenCV中自帶的基於Haar的cascade分類器來實現人臉識別。haarcascade_frontalface_default.xml 是OpenCV中已經經過訓練的人臉識別模型文件。

face_cascade = cv.CascadeClassifier('\\cv2\\data\\haarcascade_frontalface_default.xml')

eye_cascade = cv.CascadeClassifier('\\cv2\\data\\haarcascade_eye.xml')

現在,我們需要加載我們想要進行人臉檢測的圖像。對於本文,我們將使用如下OpenCV自帶的'lenna'經典圖像。

lenna

加載我們的圖片,並將其轉化為灰度圖像:

img = cv.imread('lenna.jpg')

gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)

我們已經做好了人臉檢測的準備工作,現在我們通過我們前面加載的cascade分類器的detectMultiScale函數來進行人臉檢測:

faces = face_cascade.detectMultiScale(gray, 1.3, 5)

這裡的1.3表示scaleFactor,5表示minNeighbours。

scaleFactor:在前後兩次相繼的掃描中,搜索窗口的比例係數。例如1.3指將搜索窗口依次擴大30%。

minNeighbors:構成檢測目標的相鄰矩形的最小個數。如果組成檢測目標的小矩形的個數和小於minNeighbors都會被排除。

代碼運行之後面部檢測就完成了,並且在圖像中找到的所有人臉數據都存儲在faces這個數組中。然後,我們還可以在人臉周圍繪製矩形:

for (x,y,w,h) in faces:

cv.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)

roi_gray = gray[y:y+h, x:x+w]

roi_color = img[y:y+h, x:x+w]

我們幾乎已經完成了人臉識別,只需再將得到的帶有人臉標記的圖像顯示出來即可。為此我們使用以下代碼:

cv.imshow('Face_Detect',img)

cv.waitKey(0)

cv.destroyAllWindows()

下圖就是我們得到的最終結果:

Python人臉識別結果

到此,我們已經學會了通過Python實現人臉識別,現在可以嘗試在OpenCV庫中使用不同的分類器來檢測不同的對象。如果你有足夠多的圖片,甚至還可以製作自己的圖片分類器! 接下來我們將展示如何通過C++來實現人臉識別。

C++

代碼頭文件:

#include "opencv2/objdetect.hpp"

#include "opencv2/highgui.hpp"

#include "opencv2/imgproc.hpp"

#include <iostream>

using namespace std;

using namespace cv;

objdetect.hpp:OpenCV中的對象檢測模塊。highgui.hpp提供了簡單的界面操作:創建和操作可以顯示圖像的窗口,將軌跡欄添加到窗口,從磁碟或內存讀取和寫入映像,從相機或文件中讀取視頻並將視頻寫入文件。imgproc.hpp提供了許多處理圖像的功能,如圖像過濾和幾何變換。

現在,我們編寫一個函數,它接受輸入圖像和分類器作為參數,並在應用人臉識別算法後給出輸出圖像。

void detectAndDraw( Mat& img, CascadeClassifier& cascade, double scale)

這是我們的函數定義,我們繼續編寫函數體。首先,我們初始化一個矢量,用於存儲我們的算法將檢測到的所有人臉,並將我們的輸入圖像轉換為灰度圖像。

vector<Rect> faces;

Mat gray;

cvtColor( img, gray, COLOR_BGR2GRAY );

然後在我們的灰度圖像上應用detectMultiScale函數。

cascade.detectMultiScale( gray, faces, 1.1, 2, 0|CASCADE_SCALE_IMAGE, Size(30, 30) );

這個函數類似於我們在Python中使用的函數。人臉檢測現在已經完成,我們需要在檢測到的人臉周圍繪製矩形。

for ( size_t i = 0; i < faces.size(); i++ )

{

Rect r = faces[i];

Scalar color = Scalar(255, 0, 0);

rectangle( img, cvPoint(cvRound(r.x*scale), cvRound(r.y*scale)), cvPoint(cvRound((r.x +

r.width-1)*scale), cvRound((r.y + r.height-1)*scale)), color, 3, 8, 0);

}

結果顯示:

imshow( "Face Detection", img );

現在我們便可以簡單地調用我們構建的人臉檢測函數來實現人臉檢測。

int main()

{

// Load the cascade classifier

cascade.load( "../../haarcascade_frontalcatface.xml" ) ;

double scale=1;

frame = imread('lenna.jpg', CV_LOAD_IMAGE_COLOR);

detectAndDraw( frame, cascade, scale );

return 0;

}

imread()用於加載輸入圖像。這裡同樣使用'lenna'圖像。我們的C ++代碼的結果:

C++人臉識別結果

以上就是我們通過Python/C++幾行簡單的代碼實現人臉識別的所有內容,如果您有更好的建議或有任何問題,歡迎留言評論。

END

相關焦點

  • 目前換臉技術識別人臉的模型是不能更換的
    能否採用ai技術實現真人換臉呢?真人臉動漫人物換臉怎麼做呢?百度前端團隊總結了一些實現ai換臉的工作方法,總結如下。不考慮代碼實現,只考慮從人臉辨識到換臉的全流程。以眼睛為準,將所有參數同步到ai模型。
  • 北師大宿舍使用AI:實現人臉識別技術
    對於人工智慧來說肯定離不開人臉識別技術,它是基於人的臉部特徵信息進行身份識別的一種生物識別技術。用攝像機或攝像頭採集含有人臉的圖像或視頻流,並自動在圖像中檢測和跟蹤人臉,進而對檢測到的人臉進行臉部的一系列相關技術,通常也叫做人像識別、面部識別。
  • 人臉識別技術升級 戴著口罩也能刷臉打卡
    研發人員戴口罩進行人臉識別檢測。受訪者供圖3月6日,在中國中鐵科學研究院門禁口,員工們戴著口罩和安全帽,排隊陸陸續續「刷臉打卡」。他們沒有摘下口罩或帽子,僅在屏幕前簡短停留,員工信息及體溫狀況就出現在了屏幕上,工作人員也實現了安全、快速入場。在人工智慧技術迅猛發展的當下,人臉識別已經不是一件新鮮事。
  • 人臉識別技術原理與工程實踐(10個月人臉識別領域實戰總結)
    前兩年,很多機場安檢都開始用上了人臉驗證;今年4月,很多一、二線城市的火車站也開通了「刷臉進站」的功能;北京的一些酒店開始使用人臉識別技術來做身份驗證。2 人臉識別應用場景(識別)我們再來看看幾個場景。第一個是刷臉的自動售貨機。
  • 人臉識別中的人臉表情識別技術
    隨著人臉識別技術的發展,如今在識別中應用到對人臉的表情進行識別,可以應用在人機互動、安全、機器人製造、醫療、通信和汽車領域等。那麼,暢視智能來告訴人臉識別技術的人臉表情識別要如何進行?圖像獲取:通過人臉識別攝像頭等圖像捕捉工具獲取靜態人臉圖像或動態圖像序列。
  • 電風扇也能實現「人臉識別」 能「追著人」吹風 能自動調節風量
    電風扇大家都見過,但能實現「人臉跟蹤」的智能電風扇,估計您聞所未聞吧?日前,在中國科學院大學懷柔雁西湖校區舉辦的北京青少年科技創新大賽上,來自中國地質大學附屬中學、北京一零一中學、首都師範大學附屬中學的三位高二男生王南、鄒文澤、李澤朋,就帶來了一個這樣「高端」的玩意兒。「我們的目的就是讓它能跟蹤人臉,從而一直為人們帶來『貼身』涼意。」
  • AI人臉識別技術研發商魔點科技獲數千萬元Pre-B+輪融資
    1被投方信息>>>魔點科技魔點科技是一家將先進的人工智慧技術與行業應用相結合的科技型企業,深耕智能辦公、智慧校園和智慧社區等領域。公司董事長肖傳寶曾在阿里巴巴擔任3年高級專家,也是中國首款小靈通的研發者。
  • 除了識別人臉 動物的臉也納入了AI工作表
    比傳統人臉識別更複雜「識別不同動物的臉,難度是不同的,但總體來講,貓、狗、羊等常見動物的臉部識別要比傳統的人臉識別更為複雜。」寧波市智能製造產業研究院常務副院長溫誌慶博士在接受科技日報記者專訪時說,這是由多種因素造成的。
  • 人臉搜索,在 AI 的陰暗面肆無忌憚
    人臉識別技術自誕生以來就伴隨著爭議,隱私、安全等問題與這項技術一同成長。人臉識別技術愈發成熟,與之相關的安全問題就更加複雜、嚴重,雖然成為了人工智慧領域最為成熟的技術之一,但有幾人能夠真正接受人臉識別在生活中的無孔不入呢?你的面孔,他的「玩物」「上流社會」人士從來不缺乏對於新技術的「熱情」。
  • AI賦能公益幫助萬個家庭團圓 百度跨年齡人臉識別提升尋人效率
    作為國內領先的人工智慧公司,百度將AI賦能公益,聯合民政部、寶貝回家等專業機構,用AI人臉識別技術幫助走失者回家。尋人引入人臉識別技術 讓「回家」的距離更近20年前,尋人只能通過報案、登報、查詢失蹤人口檔案庫、電視尋親,如今隨著時代的發展,尋人方式也在不斷豐富。
  • 售樓部有人臉識別,精準識別賣高價!無奈帶頭盔看房
    如果是中介拉來的客戶,那房企就要給中介一定的佣金,而中介為了獲取更多佣金,就會給客戶提供一定程度的額外優惠,以此吸引更多客戶,這導致房企銷售與渠道中介搶客戶的「混戰」經常發生。這時候,售樓處的人臉識別這時候就派上了用場,它可以讓房企迅速識別某個購房者是中介拉來的,還是看了宣傳的「自然到訪客戶」,關係到客戶能不能享受中介渠道的優惠。
  • 人臉識別出現膚色歧視問題,IBM被迫離場,AI為什麼識別不了黑人
    AI人臉識別為啥認不出黑人,膚色深淺引爆科技圈,原因是歧視 作為一個自我標榜全世界最自由公平的國家,美國科技圈子最近有些不太平靜,AI人臉識別這項技術一經推出,就立刻被很多人認為是下一代技術的風口,不論大公司小公司,大家分分都想參與進來分一杯羹,然而在美國,
  • 華為nova3中設置人臉支付的詳細操作步驟介紹
    想為華為nova3手機設置人臉支付,卻不懂設置的方法?本篇教程就分享了華為nova3中設置人臉支付的詳細操作步驟介紹。上文就是小編為你們分享的華為nova3中設置人臉支付的詳細操作步驟介紹,你們都明白了嗎?
  • 人臉識別是如何進行的?看這裡就夠了!
    它作為基於臉部特徵信息進行身份識別的一種生物識別技術,已經廣泛應用於各行各業,比如說汽車站、地鐵、機場等各出入口。 但很多人對於人臉識別技術不是很了解,不知道攝像頭是怎麼進行人臉識別的,今天小編帶大家一探究竟,看看人臉識別是怎麼進行的,又怎麼準確識別到人臉的!
  • 2020人臉識別報告:上萬家企業入局,八大技術六個趨勢一文看盡
    在這篇文章中作者把稀疏表示理論應用到人臉識別這個場景中 , 提出了一個通用分類算法用於人臉識別 。 這個新的框架為人臉識別領域的兩個關鍵課題(特徵項提取和對遮擋的魯棒性)上提供了更好的理論指導。
  • 「看」臉時代 人臉識別應用引來爭議
    事實上,人臉識別帶來的爭議遠不止此,從AI換臉淫穢視頻到ZAO App的用戶協議爭議,再到人們對人臉識別進校園、惡搞視頻泛濫的迷惑,這些都從不同維度反映著民眾對人臉識別技術的擔憂。記者體驗某公司智慧課堂人臉識別技術相關系統。
  • 華為3D人臉識別技術竟然輸了?「狗臉識別」成為熱潮!
    華為3D人臉識別技術竟然輸了?「狗臉識別」成為熱潮!別人還在繼續研發3D人臉識別,最近卻被「狗臉識別」吸引了!華為3D人臉識別在使用時可以向人臉投射出3萬個信息點,誤差僅為百萬分之一。而「狗臉識別」是支付寶最近開放的一個寵物鼻紋識別技術,有意用在首個「寵物險」上。沒想到在我們人臉識別系統剛剛完善,動物刷臉成為時尚了!保險也保人保物保動物了。這張技術應該被應用於建立寵物檔案,這樣尋找丟失動物,或者寵物案件就會大大提高效率!大家希望這項動物鼻紋識別技術用在哪裡呢?
  • 英特爾新款RealSense攝影機加入人臉識別技術
    英特爾(Intel)本周發布3D攝影機RealSense家族的新款產品RealSense ID,RealSense ID同時結合深度傳感器與人臉識別系統,可應用在智能鎖、訪問控制或
  • 換臉技術目前要為用戶帶來更多的安全及便利性
    ai換臉技術是否實現現實中中的換臉,而且這項技術還不如vr產品普及呢?如果只是將人臉替換角度有什麼,一家工作室就能夠不用外接頭戴設備只利用ai來實現這樣的功能,這是否是技術突破呢?5g可以給換臉技術帶來什麼?讓我們先看看近年來換臉技術在遊戲、動漫、影視中的應用情況。
  • 比起人臉識別 紋身識別可能更難
    FBI現在已經建立起一個紋身識別資料庫,作為他們下一代身份認證系統的一部分。然而根據關鍵詞搜索紋身存在一些問題,因為這些分類不夠詳細,加上人們有時會用稍微不同的方式紋上相似的圖案,給一些類別本身帶來模糊。「每個人在看待紋身的時候都非常主觀」,FBI生物特徵中心管理與項目分析師Eric Phillips說。