人臉識別應用之「變臉」

2021-08-02 14:43:32 字數 3022 閱讀 8903

這些應用都以人臉檢測、人臉識別技術為基礎,檢測指將人臉定位出來,找到人臉所在位置,而識別則是匹配出這個人臉是誰,不過通常我們將這兩項技術統稱為人臉識別。隨著深度學習的應用,人臉識別的準確度得到了較大提公升,也湧現出了一批相關的初創企業,典型的如曠視科技的face++,識別準確度一直處於世界前列,產品合作也很多,應用廣泛。

「變臉」應用也是以人臉識別為基礎,通過對**中的人臉進行一些操作(如形變、替換等),從而達到趣味性的**效果,總體上有如下幾類:

如圖,拉伸形變效果相當於在**上蓋乙個不規則的透鏡,使得一些部位放大,一些部位縮小,或部位發生位移。技術上則是通過畫素座標的重對映來實現。

人臉交換主要應用在合影上,先定位**中的兩個人臉,然後交換,並做一定的影象融合,使人臉與身體良好銜接。

這種也是人臉的替換,只是替換目標是動物臉部或**、畫作中的人臉。

這類應用可以看作是人臉形變與貼圖的結合,並且是動態的,有著較強的視覺表現力。

前段時間研究了一下人臉替換的實現,並完成了乙個簡單的demo,效果如下:

即將中間的人臉替換到左邊畫作上的人臉,右邊影象是替換結果,可以看出融合度還算不錯。演算法總體上可分為人臉檢測、關鍵點定位、透視變換、區域提取、色彩轉換、邊緣融合等步驟。

人臉檢測即在影象上定位出人臉所在區域,本demo採用dlib庫進行人臉檢測,**如下:

dlib::frontal_face_detector detector = dlib::get_frontal_face_detector();

dlib::cv_imageimg = cvimg;

std::

vector

faces = detector(img);

可以看到檢測結果faces是矩形框(dlib::rectangle)陣列,這是因為一張圖裡面可能有多個人臉。

在檢測到人臉所在矩形框後,還需要進一步定位人臉關鍵特徵所在位置,如眼睛、鼻子等,常稱為landmark,dlib庫提供了68點landmark檢測功能:

dlib::shape_predictor sp;

//讀入特徵庫

dlib::deserialize(landmarksmodelfile)

>>

sp;//

取第一張人臉

dlib::full_object_detection shape = sp(img, faces[

0]);

for(size_t i =

0; i < shape.num_parts(); i++)

這68個landmark是按順序存放人臉各部位的座標:

為了方便處理,本demo採用平面單應矩陣h來描述人臉之間的對應關係,即把人臉作為乙個平面來處理位置變換:

// 根據landmark估計兩個人臉間的單應變換

cv::mat h = cv::findhomography(face1.landmarks, face2.landmarks);

// 對整個影象應用單應變換

cv::warpperspective(im1, warpim1, h, im2.size());

變換結果如下圖,可以看到變換後的人臉與名畫中的人臉姿態接近。

實際上我們只替換人臉,準確地說是五官部分,而人臉外的部分,如頭髮、脖子,都需要過濾掉,因此,區域提取的目的就是找到只包含五官部分的mask,本demo先對landmark進行高斯模糊擴大區域,然後二值化:

int

bluramount = 5;

cv::mat maskblur;

cv::gaussianblur(histmask, maskblur, cv::size(bluramount, bluramount), 0);

cv::threshold(maskblur, histmask, 0,

255, cv_thresh_binary);

色彩轉換的目的是使當前人臉與要被替換的人臉色彩相近,方法有很多,有興趣的可以搜尋關鍵字「color transfer」,本demo採用直方圖調整的方式來做,實現起來相對簡單:先計算當前影象和目標影象的顏色直方圖,然後調整當前影象的直方圖與目標影象的一致,最後將調整後的直方圖應用到當前影象。轉換結果(只轉換步驟4提取的區域部分):

步驟5的色彩轉換後,兩個人臉已經比較接近,但如果直接貼過去,邊緣上仍會有一些突兀,本demo應用拉普拉斯金字塔融合方法,使邊緣更連貫,具體可參考

拉普拉斯影象融合

cvpr引起巨大爭議的新技術face2face

人臉識別應用場景

前段時間和第三方人臉識別 商對接,寫了乙個demo,主要功能是人臉識別準確率,增加底庫,刪除底庫,人臉比對等等。讓我對人臉識別有了乙個新的意識。後來公司需要做個人臉識別的一些應用場景,根據這些場景,看看哪些符合公司的需要。於是自己規劃了下。人臉識別應用場景 常規登入模式就是網頁請求登入,以後刷臉登入...

python人臉識別應用環境搭建

工具dlib face rcognition opencv 安裝過程如下 step1 準備安裝包 1.anaconda3 5.0.1 windows x86 64.exe 2.dlib 19.7.0 cp36 cp36m win amd64.whl 3.face recognition 1.0.0 ...

人臉識別在美顏相機的應用

如今智慧型手機的不斷普及更新,也有越來越多的軟體加入各種人工智慧技術,讓人們在使用時有更好的體驗。比如說,在美顏相機中應用人臉識別技術,增加使用者的互動。智慧型相簿管理 使用人臉識別技術對相簿裡的人臉進行檢測識別分類,可以自動分類,便於使用者查詢以及刪除。智慧型美顏 可通過對人的五官進行精準定位,為...