前幾天,AI 換臉這條新聞你關注了嗎?
說的是一位博主將 1994 年版《射雕英雄傳》里朱茵的臉換成了楊冪的臉。因為該視頻涉及到版權問題已被下架,但大家可以看看圖片對比來感受一下“移花接木”效果:
是不是足夠可以以假亂真了!這樣的視頻用一款實時視頻仿真軟件Face2Face 就可以達到,在軟件中輸入一個說話的人臉錄像,通過算法生成對應的人臉模型,套用這個模型就可以創(chuàng)造 DeepFakes。最恐怖的是,這個逼真的效果看起來毫無違和感。
讓我們一起來看看 AI 換臉背后的原理:
人臉檢測 → 多人臉區(qū)域分別做面部關鍵點檢測→面部區(qū)域分割→圖像線性融合
順著這個思路,我們可以看到 AI 換臉里最重要的一環(huán)就是人臉檢測,要進行人臉識別,得經(jīng)過這么幾個過程:
人臉檢測→人臉對齊→提取特征編碼→編碼比對
人臉檢測:就是定位一張圖片中人臉的位置。
人臉對齊:就是根據(jù)人臉中五個特征點位置(兩個眼睛、兩個嘴角、鼻子)將人臉縮放到一定的尺寸。
提取特征編碼:通過訓練一個人臉識別模型來提取人臉特征編碼。
編碼比對:將某個人臉的編碼與編碼庫中的編碼進行對比,得出距離或相似度。
01
實現(xiàn) AI 換臉的第一步
以下關于人臉檢測、人臉對齊均使用基于 Tensorflow 的 MTCNN 模型,生成特征編碼使用基于 Mxnet 的 Insightface 模型。
圖為人臉搜索整體架構設計:
首先,我們會下載 Insightface 源碼及其訓練好的模型文件,在這個源碼的基礎上,我們開發(fā)一個 API 程序,程序調(diào)用模型進行人臉檢測、人臉對齊、生成特征編碼,然后完成人臉入庫、人臉搜索功能。
該程序主要使用 Flask 來進行 API 開發(fā),使用 Annoy 來進行人臉特征向量搜索。在部署上,使用 Docker 容器部署 Python 環(huán)境,讓 API 程序運行在 Docker 容器中,使用 Gunicorn 來啟動 Flask 程序。
另外,使用 Nginx 部署一個圖片服務器,用于前端的圖片展示,也是運行在 Docker 容器中。最后,我們再提供一個簡單 Web 頁面,該頁面允許用戶進行入庫、搜索操作(調(diào)用后端的人臉入庫、搜索 API )。
最終的 Web 頁面展示如下:
02
人臉搜索實現(xiàn)
首先你得有一個 Linux 環(huán)境,可以通過 VMware 構建一個 Ubuntu 16.04 的環(huán)境, iso 文件為 ubuntu-16.04.5-desktop-amd64.iso 。
考慮到方便大家照著做,而且大家可能沒有 GPU 環(huán)境,所以以下構建環(huán)境我均使用 CPU 。
1. 克隆項目并修改相關源碼
將 /opt/insightface/src/api/face_model 第 61 行
改為
將第 34 行
改為:
下載作者訓練好的模型文件。
將模型文件解壓至 /opt/insightface/models ,目錄結構如下:
2. 編寫人臉入庫、搜索 API 程序
這里我們利用訓練好的模型文件,使用 Flask 編寫一個人臉特征編碼入庫、搜索 API 。我們將入庫的特征編碼存于程序中的一個數(shù)組里面。
首先,我們先創(chuàng)建用于圖片入庫及圖片搜索的目錄。
然后編碼 API 程序,在
/opt/insightface/src/api 創(chuàng)建 app_flask.py 。
代碼詳見 Github。
3. 安裝 Docker
安裝軟件,我一般從官網(wǎng)去獲取安裝操作說明,讓自己在安裝過程中少走些彎路。
4. 構建 Docker Nginx 圖片服務器鏡像
我們要做人臉搜索系統(tǒng),在前端頁面就是要上傳一張圖片,然后點擊“搜索”按鈕,在頁面上顯示人臉庫中與該圖片相似度最高的 top6 圖片,所以我們要用到圖片服務器,使用 url 進行圖片展示。
我們首先要創(chuàng)建一個圖片根目錄。
然后使用 Docker 拉取一個 Nginx 鏡像。
然后我們就可以啟動容器了:
通過瀏覽器訪問 http://192.168.247.128:8082/
5. 構建 Docker Insightface 鏡像
我們從一個基礎鏡像 python:3.5 來構建我們的 Insightface 鏡像
然后我們使用 Dockerfile 來構建 Insightface 鏡像,主要是進行 Python 庫環(huán)境的安裝,比如 Tensorflow、Mxnet 。
最后,讓我們連續(xù)入庫 5 張梁靜茹和 1 張陳慧嫻的照片,然后用第 6 張梁靜茹的照片來搜索,效果圖如下:
最后,以上并非完整全文,提示大家如果有 Gpu 環(huán)境的話,可以使用 Gpu 來進行模型推理,以上操作我均使用 root 用戶。本文所提到的代碼都上傳到我的 Github 上了。
Chat:手把手教你做人臉搜索系統(tǒng)
-
gpu
+關注
關注
28文章
4740瀏覽量
128948 -
服務器
+關注
關注
12文章
9160瀏覽量
85421 -
AI
+關注
關注
87文章
30896瀏覽量
269086
原文標題:這個技術讓我毛骨悚然后背發(fā)涼!
文章出處:【微信號:AI_Thinker,微信公眾號:人工智能頭條】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論