人臉識別對動畫無效,迪士尼打造動畫專用人臉識別庫
說到動畫,不得不提起自 1923 年就成立的商業(yè)帝國迪士尼,以動畫起家的迪士尼,至今引領(lǐng)著全球動畫電影的發(fā)展。
每一部動畫電影的背后,都凝結(jié)了數(shù)百人的心血與汗水。自第一部電腦3D動畫《玩具總動員》的上映,迪士尼就開啟了數(shù)字化動畫創(chuàng)作的征程。隨著 CGI、AI 技術(shù)的發(fā)展,迪士尼動畫電影的制作、存檔等方式也發(fā)生了極大的變化。
火遍全球的《瘋狂動物城》歷時五年制作完成
目前,迪士尼也吸收了一大批計算機科學家,他們正在用最前沿的技術(shù),改變內(nèi)容創(chuàng)作的方式,減輕電影幕后制作者的負擔。
百年電影巨頭,如何進行數(shù)字化內(nèi)容管理
據(jù)了解,在華特迪士尼動畫工作室中,大約有來自 25 個不同國家的 800 多名員工,包括藝術(shù)家、導演、編劇、制片人以及技術(shù)團隊。
制作一部電影,需要經(jīng)歷從靈感產(chǎn)生,到故事大綱撰寫,再到劇本擬定,美術(shù)設(shè)計,人物設(shè)計,配音,動畫效果,特效制作,剪輯,后期等諸多復(fù)雜流程。
截至 2021 年 3 月,僅專業(yè)制作動畫電影的華特迪士尼動畫工作室已制作并上映了 59 部長篇動畫,這些電影中的動畫形象加起來就有成百上千個。
歷史動畫角色的相關(guān)素材數(shù)據(jù),會在續(xù)集、彩蛋、參考設(shè)計時被高頻使用
動畫師在進行續(xù)集制作、或想?yún)⒖寄骋唤巧珪r,需要在海量的內(nèi)容檔案庫中,尋找特定角色、場景或物體。為此, 他們往往需要花費數(shù)小時來觀看視頻,純靠肉眼從中篩選自己需要的片段。
為了解決這個問題,迪士尼從 2016 年起,就開始了一項叫做 「Content Genome」 的 AI 項目, 旨在創(chuàng)建迪士尼數(shù)字內(nèi)容檔案,幫助動畫制作者快速、準確地識別動畫中的面部(無論是人物或是什么物體)。
訓練動畫專用人臉識別算法
數(shù)字化內(nèi)容庫的第一步,是將過往作品中的內(nèi)容進行檢測與標記,方便制作者以及用戶搜索。
人臉識別技術(shù)已經(jīng)比較成熟,但是,同一套方法,能否用于動畫中的面部識別呢?
Content Genome 技術(shù)團隊進行試驗之后,發(fā)現(xiàn)只在某些情況下可行。
他們選取《阿瓦勒公主埃琳娜》和《小獅王守護隊》兩部動畫電影作品,手動注釋了一些樣本,用正方形標出數(shù)百幀影片中的面孔。通過該手動注釋數(shù)據(jù)集, 團隊驗證了基于 HOG + SVM pipeline 的人臉識別技術(shù),在動畫面孔(尤其是類人臉和動物面孔)中的表現(xiàn)不佳。
手動標注出動畫形象的面部
團隊分析后確認,像 HOG + SVM 這樣的方法對于顏色,亮度或紋理變化具有魯棒性,但所使用的模型只能匹配具有人類比例的動畫角色(即兩只眼睛,一只鼻子和一張嘴)。
此外,由于動畫內(nèi)容的背景通常具有平坦的區(qū)域和很少的細節(jié),所以,F(xiàn)aster-RCNN 模型會錯誤地把簡單背景下脫穎而出的所有事物,都認作是動畫面孔。
《汽車總動員》中,兩位「賽車」主角較為抽象的面部,就無法用傳統(tǒng)的人臉識別技術(shù)進行檢測與識別
因此,團隊認為他們需要一種能夠?qū)W習更抽象的人臉概念的技術(shù)。
團隊選擇用 PyTorch 訓練模型。團隊介紹道, 通過 PyTorch,他們可以訪問最先進的預(yù)訓練模型,滿足其訓練需求,并使歸檔過程更高效。
訓練過程中,團隊發(fā)現(xiàn),他們的數(shù)據(jù)集中,正樣本是足夠的,卻沒有充足的負樣本來訓練模型。他們決定使用不包含動畫面孔、但具有動畫特征的其他圖像,來增加初始數(shù)據(jù)集。
在技術(shù)上為了做到這一點, 他們擴展了 Torchvision 的 Faster-RCNN 實現(xiàn),以允許在訓練過程中加載負樣本而無需注釋。
這也是團隊在 Torchvision 核心開發(fā)人員的引導下,為 Torchvision 0.6 做出的一項新功能。 在數(shù)據(jù)集中添加負樣本示例,可以在推理時大大減少誤報,從而得到出色的結(jié)果。
用 PyTorch 處理視頻,效率提升 10 倍
實現(xiàn)動畫形象的面部識別之后,團隊的下一個目標是加快視頻分析流程,而應(yīng)用 PyTorch 能夠有效并行化并加速其他任務(wù)。
團隊介紹道, 讀取和解碼視頻也很耗時,因此團隊使用自定義的 PyTorch IterableDataset,與 PyTorch 的 DataLoader 結(jié)合使用,允許使用并行 CPU 讀取視頻的不同部分。
視頻被提取的 I-frames,被分割成不同的塊(chunks),每個 CPU worker 讀取不同的塊
這樣的讀取視頻方式已經(jīng)非??炝?,不過團隊還嘗試只通過一次讀取就完成所有計算。于是,他們在 PyTorch 中執(zhí)行了大部分 pipeline,并考慮了 GPU 的執(zhí)行。每一幀只發(fā)送給 GPU 一次,然后將所有算法應(yīng)用到每一個 batch 上,將 CPU 和 GPU 之間的通信減少到最小。
團隊還使用 PyTorch 來實現(xiàn)更傳統(tǒng)的算法,如鏡頭檢測器,它不使用神經(jīng)網(wǎng)絡(luò),主要執(zhí)行顏色空間變化、直方圖和奇異值分解(SVD)等操作。PyTorch 使得團隊能以最小的成本將計算轉(zhuǎn)移到 GPU,并輕松回收多個算法之間共享的中間結(jié)果。
通過使用 PyTorch,團隊將 CPU 部分轉(zhuǎn)移到 GPU 上,并使用 DataLoader 加速視頻閱讀,充分利用硬件,最終將處理時間縮短了 10 倍。
團隊的開發(fā)者總結(jié)道,PyTorch 的核心組件,如 IterableDataset,DataLoader 和 Torchvision,都讓團隊得以在生產(chǎn)環(huán)境中提高數(shù)據(jù)加載和算法效率,從推理到模型訓練資源到完整的 pipeline 優(yōu)化工具集,團隊都越來越多地選擇使用 PyTorch。