續上篇:https://www.cnblogs.com/techs-wenzhe/p/12936809.html
第一步中已經提取出了源視訊的人臉照片以及對應人臉遮罩(landmark以及其他自選遮罩)
首先,我們需要剔除不需要的人臉(對齊識別錯誤以及非想要換臉的目標),做法是對生成的人臉進行聚類,排序。之後把不需要的類別的人臉刪除掉。
這一步的目的是:我們都知道訓練一個模型輸入引數的正確性決定了演演算法的精確度,這一步就是為了去除所有錯誤的,不恰當的輸入資料(圖片)集。我們需要給模型一個清晰,明瞭的可學習物件。
PS:如果你的輸入資料集(人臉圖片很多)過大,請拆分成多個,需要分多次聚類排序。因為這些操作會在RAM中進行,例如:大約22k 張人臉對應大約8G RAM,30k對應11G(還要考慮其他記憶體使用,瀏覽器什麼的==). 根據你電腦的RAM能力,選擇分幾次來處理即可。
GUI的設定如下:
PS: 實際根據有啥模型就用啥,筆者自己辦公用的機器有Face-cnn,所以就選了用這個模型排序,選face的話得需要vggface2_resnet50_v2.zip模型在對應目錄下才行。
1.1 Data模組:
輸入:輸入包含上一步提取的人臉的資料夾。
輸出:留空則基於輸入的檔案內直接排序。
1.2 Sort Settings模組:
Sort by:排序的方式,這裡直接選face即可。意思是根據人臉相似度進行排序。當然還有其他排序方式(如基於landmark的Face-CNN,基於模糊度的Blur,基於聚類距離-識別錯誤對齊的distance,基於顏色的Color系列,基於大小的Size系列),實測還是face最有效。
Ref Threshold:Sort by內特殊幾種演演算法(face-CNN, Hist)的調節,同樣的值越高越嚴格。(推薦設定為-1即可,代表自動設定預設值) ,face-CNN 7.2就足夠了,設定為4會有較高識別度。Hist 0.3就足夠,設定為0.2 會有較高的識別度
1.3 Output模組:這裡不需要設定任何東西(此部分已完全棄用,並將在未來的更新中刪除。這裡不需要設定任何東西。
選好模型,選好資料集(圖片)所在資料夾,選好輸出資料夾,點選sort等待結果即可。
可看到是提取圖片中的landmark,根據直方圖分類。
一旦完成,你應該發現 99% 的面孔被分類在一起,所有垃圾也一起分類,現在只需瀏覽每個垃圾箱(子資料夾),刪除那些您不想保留的面孔/資料夾,然後將您想要保留的任何面孔移回父資料夾。
至此,排序完畢,接下來要清理對齊-alignments檔案
現在我們已經刪除了所有不需要的面孔,只剩下一組了,接下來要做的是清理對齊檔案(對齊檔案中包含了每張圖片對應的五官所在位置的資料)。因為所有關於不需要的面孔的資訊仍然在檔案中(剛才排序步驟刪除的那些),這很可能在將來給我們帶來麻煩。所以需要刪除不需要圖片的對齊檔案。 使用整合工具清理對齊檔案還有一個額外的好處,可以將我們的面孔重新命名回它們的原始檔名。
步驟如下,找到Tools->Alignments檔案:
根據上圖設定後,點選alignments,完成後面孔將被重新命名為預設名稱,並且所有不需要的面孔就會從對齊檔案中刪除。
該過程將備份舊對齊檔案並將其放在新建立的檔案旁邊的原始位置。它將與您清理過的對齊檔案同名,但在其末尾附加「backup_<timestamp>」。如果對新的對齊檔案正確無誤感到滿意,則可以安全地刪除此備份檔案。
此時,如果正在提取以進行轉換(或者該集合將用於轉換和訓練),那麼可以完全刪除faces 資料夾。不再需要這些面孔。如果您需要重新生成面部集,則可以使用對齊工具的extract來完成。
執行完對齊檔案的清理後,留下來的對齊檔案就是想要訓練的有效資料集(臉)對應的對齊檔案了。
現在已經清理了對齊檔案,需要拉出其中的一些臉用於作為訓練集。
導航到工具索引標籤,然後導航到對齊子索引標籤:
Processing
此部分允許我們選擇我們希望執行的操作,以及設定任何輸出處理。我們只對Job部分感興趣。
Data
我們要處理的資源所在的位置。
Extract
這些是從路線檔案中提取人臉的選項
執行
將所有其他選項保留為預設值。準備好檢查選項,並將訓練集從清理過的對齊檔案中提取到我們選擇的資料夾中。
完成後,將所有人臉資料集放入同一個資料夾中。訓練集已準備就緒。後續第三章將介紹訓練部分。