這些應用都以人臉檢測、人臉識別技術為基礎,檢測指將人臉定位出來,找到人臉所在位置,而識別則是匹配出這個人臉是誰,不過通常我們將這兩項技術統稱為人臉識別。隨著深度學習的應用,人臉識別的準確度得到了較大提公升,也湧現出了一批相關的初創企業,典型的如曠視科技的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 ...
人臉識別在美顏相機的應用
如今智慧型手機的不斷普及更新,也有越來越多的軟體加入各種人工智慧技術,讓人們在使用時有更好的體驗。比如說,在美顏相機中應用人臉識別技術,增加使用者的互動。智慧型相簿管理 使用人臉識別技術對相簿裡的人臉進行檢測識別分類,可以自動分類,便於使用者查詢以及刪除。智慧型美顏 可通過對人的五官進行精準定位,為...