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