當前位置:編程學習大全網 - 源碼下載 - Faceswap中文使用指南

Faceswap中文使用指南

翻譯自:

/blob/master/faceswap-guide-cn.md

“提取” 流程

很多人在開始 "Faceswap" 時不知所措,並且犯了許多錯誤。錯誤是好的,這是我們的學習方式,但有時在深入學習之前對所涉及的過程有壹點了解可能會有所幫助。

在本節中,我將詳細介紹 “抽取” 的工作流程。 我並不是說這是最好的工作流程,但是它對我很管用,希望在您創建自己的工作流程時提供壹個良好的起點。

我將在本指南中使用 “GUI”,在 “cli” 中也完全相同(“GUI”中存在的所有選項在“cli”中都是可用的)。

“提取” 包括三個階段: “檢測”、 “匹配”、 和 “遮罩生成” 。每個階段都有幾個插件。它們的優缺點在工具提示(針對“GUI”)或幫助文本(針對“cli”)中都有詳細說明,因此不再贅述。 然而,“檢測” 是在每壹幀中查找人臉的過程,“匹配” 是在人臉中查找 “特征” 並壹致地確定人臉位置的過程。最終,“遮罩生成” 將創建壹個 “遮罩”,即識別出圖像中哪些是人臉,哪些不是。

提取有兩個主要目的:

從技術上講還有第三個目的,當您為轉換提取人臉時,也需要壹些人臉進行訓練,這些我都會講到。

雖然轉換時不需要提取人臉(僅需要“匹配文件”),但是提取出來將是很有用的,以便我們可以為轉換過程清理 “人臉集”。

“匹配文件” 保存了每幀中所有的人臉信息,特別是人臉位置,以及人臉的68個 “特征點” 位置:

該文件還保存了為每個人臉提取的所有 “遮罩”

“匹配文件” 的目的有三點:

因此,現在我們知道了為什麽需要提取人臉,如何確定壹個良好的工作流程?

第壹步,無論您創建 “人臉集” 的原因是什麽,實際上都需要從幀中提取人臉。

現在我們已經提取了臉部,我們需要整理 “數據集” 和 “匹配文件”。 “提取器” 在獲取人臉方面做得很好,但並不完美。 它將有壹些誤報,將無法匹配某些面孔,還會提取出我們不想交換的人。 如果您轉至 “faces” 文件夾,最有可能的是輸出如下所示相似的內容:

清理這些看起來不太有趣! 幸運的是我們可以讓這更容易。 清理數據集的最快、最簡單的方法是將這些面孔按有意義的順序分類,然後刪除所有我們不需要的人臉。 最好的分類方法是 “按人臉分類”。

註意 :按人臉分類是RAM密集型的,它要做很多計算。 我已經測試成功在 8GB RAM 上對 22k 張人臉進行了分類。 如果您要分類的人臉數量超出了 RAM,則該過程將自動切換到慢得多的方法,因此,如果您的內存有限,則可能需要將數據集拆分為較小的子集。 理論上,所需的 RAM 量為 (n2 * 24)/1.8,其中 n 是圖像數。 您還需要考慮任何其他 RAM 開銷(即其他程序正在運行,加載到 RAM 的映像),但理論上,這將占用 30,000 個圖像 (300002 * 24)/ 1.8 = 12,000,000,000 字節或大約 11GB。

轉到 “GUI” 中的 “Tools” 選項卡,然後轉到 “Sort” 子選項卡:

程序將開始讀取人臉,為每個人臉建立身份。 然後它將根據相似度將面孔聚集。 實際中聚集過程可能需要很長時間,因為它需要計算大量數據。 不幸的是,沒有關於進度的視覺反饋,因此請耐心等待。

完成後,您應該發現99%的面孔已分類在壹起:

所有無用的也壹起分類了:

現在您要做的就是滾動 faces 文件夾,刪除那些不想保留的人臉。

現在我們已經刪除了所有不需要的人臉,只留下我們要做的壹組,我們需要清理 "匹配文件”。為什麽? 因為我們不需要的已經刪除的人臉還在 “匹配文件” 中,因此將來很可能會給我們造成問題。 使用集成的工具清理 “匹配文件” 還有壹個額外好處,就是將我們的人臉重新命名為它們的原始文件名,因此是雙贏的。

導航至 “Tools” 標簽,然後選擇 “Alignments” 子標簽:

完成後,您的人臉將被重命名為其原默認名稱,並且所有不需要的人臉將從您的 “匹配文件” 中刪除。

該過程將備份您的 舊“匹配文件”,並將其放在新創建的 “匹配文件” 旁邊。 它的名稱與清理後的 “匹配文件” 名稱相同,但文件名末尾會附加 "backup_<timestamp>"。 如果您新的 “匹配文件” 是正確無誤的且感到滿意,則可以安全地刪除此備份文件。

此時,如果您正在提取以進行轉換(或該集合將用於轉換和訓練),則可以完全刪除您的 faces 文件夾,這些人臉都不再需要。 如果您需要重新生成 “人臉集”,則可以使用 “Alignments Tool” (提取作業)來完成。

Ok,我們提取出了人臉,清理了所有沒用的,現在確定完事了嗎? 等等,夥計。 當然,您可以繼續前進,但是您想要好的 “交換” 還是想要壹次很好的 “交換”?

手動修復對於以下任務很有用:

根據我們要提取數據集的內容,這將決定我們要在此處執行的操作。 如果我們純粹只提取壹個訓練集,則可以完全跳過此步驟,然而最好檢查壹下現有的 “匹配文件” 以確保正確構建任何遮罩。

如果為 “轉換” 而提取,那麽我們絕對要修復幀中的任何多個人臉,以及所有缺少匹配的幀。僅此壹項就可以改善最終交換。 然後,根據您想要的程度,可以解決所有不良的匹配。

我將不詳細介紹如何使用手動工具。 那本身就是壹個指南,但是非常直觀,在彈出窗口中編寫了說明。

如果打算使用遮罩進行訓練或使用 “Warp to Landmarks”,請將 “匹配文件” 從源幀位置復制到新創建的 faces 文件夾中。

現在,您已經清理了 “匹配文件”,您可能希望拉出其中壹些人臉以用於訓練集,這是壹個簡單的任務:

導航到 “Tools” 選項卡,然後導航到 “Alignments” 子選項卡:

如果打算使用遮罩訓練或使用 “Warp to Landmarks”,則將 “匹配文件” 從源幀位置復制到新創建的 faces 文件夾中。

因此,您已經準備好要訓練的大量人臉,並且有壹堆來自所對應幀的 “匹配文件”。 這些可以合並為壹個訓練源嗎?當然可以!

在合並 “匹配文件” 之前,我們需要做壹點準備:

現在,在 GUI 中,導航到 “Tools” 選項卡,然後導航至 “Alignments” 子選項卡:

處理完成後:

您的訓練準備好了

“訓練” 流程

很多人在開始 "Faceswapping" 時不知所措,並且犯了許多錯誤。 錯誤是好的,這是我們的學習方式,但有時在深入學習之前對所涉及的過程有壹點了解可能會有所幫助。

在本節中,我將詳細介紹我們如何訓練模型。有壹些模型有很多選擇,我不會全都說到,但希望這能足夠讓您來做出自己的明智決定。 如果您尚未生成用於訓練的 “人臉集”,請立即停止並轉到 “提取流程” 來生成它們。

本指南中有很多背景信息,我建議您把這些全都熟悉壹下。機器學習是壹個復雜的概念,但我嘗試將其分解為盡可能簡單易懂。對神經網絡的工作原理以及從中獲得的數據類型有基本的了解,將極大地提高您成功交換數據的機會。

我將在本指南中使用 “GUI”,在 “cli” 中也完全相同(“GUI”中存在的所有選項在“cli”中都是可用的)。

在較高的級別上,訓練是在教我們的神經網絡(NN)如何重塑人臉。大多數模型主要由兩部分組成:

某些模型的構造略有不同,但基本前提保持不變。

神經網絡需要知道它在編碼和解碼人臉方面做得如何,它使用 2種 主要工具來實現此功能:

然後,模型會重復這個動作很多次,並根據其損失值不斷更新其權重,從理論上講會隨著時間的推移而不斷改進,直到您認為已學到足以有效重現人臉的程度,或者損失值停止下降。

現在我們有了神經網絡的基本知識,以及它如何學習創建人臉,這是如何應用於人臉交換的?在上面所述中,您可能已經註意到,神經網絡學習如何對壹個人臉進行加載,然後重建這些人臉。這不是我們想要的……我們想要很多的人臉並重建別人的臉。為了實現這壹目標,我們的神經網絡做了兩件事:

使用 Faceswap 時,您將看到壹些常見的機器學習術語,為了生活簡單些,在這裏展示了壹個術語表:

數據的質量對模型來說是非常重要的。 良好的數據能夠使壹個較小的模型執行的很好,同樣,沒有模型可以對不良的數據執行得很好。 在模型的每壹側至少應有 500張 不同的圖像,但是數據越多,越多樣化,

  • 上一篇:選擇龍頭股最簡單的方法
  • 下一篇:正交試驗設計的基本特點
  • copyright 2024編程學習大全網