趙檬檬
(北京工業大學 信息學部,北京 100124)
在網絡高速發展的今天,人們的通訊方式逐漸變成了短信、微信等,為了使交流更具趣味性,各種表情包、搞怪動畫層出不窮.出于相同目的,中科院張松懋研究員創造性地提出了將3D 動畫自動生成技術應用到手機短信上的想法,通過一段生動的動畫表達出短信內容.4G、5G 通信技術的不斷發展為該系統的實現提供了保障.
手機3D 動畫自動生成系統主要依靠全過程計算機輔助動畫自動生成技術[1],旨在通過對中文短信文本的處理生成一段能夠表達短信內容的動畫.系統以中文短信文本作為輸入,利用哈爾濱工業大學自然語言處理系統對文本進行分詞處理,進而進行命名實體識別、否定識別等操作,提取出短信中的主題、模板等信息,同時利用機器學習方法進行短信話題檢測以及情感分析,并將其作為確定短信主題的參考值.將最終確定的主題、模板信息作為定性規劃部分的輸入,進行下一步處理.定性部分首先要完成情節規劃,這也是整個動畫開展的關鍵.情節規劃需要根據主題、模板選擇合適的場景、模型,并通過構建事件來豐富動畫情節.其它子系統要分別實現布局規劃、動作規劃、表情規劃等功能.定量計算是動畫實現的真正部位,按照定性輸出結果,通過三維動畫軟件Maya 完成動畫場景的搭建,并最終渲染生成動畫.
目前,系統已經可以根據不同內容的短信生成動畫,但是人物面部表情呆板,僅通過動作、環境烘托等來突出短信內容略顯單薄,表達能力有限.相比于一個面無表情的人物在手舞足蹈,顯然一個大笑的人物在手舞足蹈更能表現出短信內容.另外對于多個人物而言,即便表達的是同一個含義,表情也應該是不盡相同的.因此,在手機動畫自動生成系統中研究人物表情規劃是十分有必要的.
整個動畫自動生成系統主要包括信息抽取、定性規劃、定量計算3 個部分,其中各子系統相對獨立,分別完成各自定性、定量部分的設計與實現.情節規劃是定性規劃部分中最先完成的,主要利用信息抽取得到的結果確定出動畫選擇哪個場景、添加哪些模型等,并通過規劃人物多動作構建動畫情節.在動作規劃子系統中,需要對單動作、交互動作進行規劃.表情規劃子系統完成對人物表情類型、個數等的規劃,其中由于動作與表情在一定程度上需要保持一致,故表情規劃需要參考情節規劃和動作規劃后的結果.所有子系統定性規劃結束后進而完成相應的定量計算:動作規劃子系統要實現所有規劃的動作類型的添加并計算人物模型運動軌跡等.表情規劃子系統確定出表情操控參數以及不同表情間過渡的方式等,實現表情的添加.各子系統定量計算完成后即得到最終的動畫.
表情規劃整體流程如圖1所示.主要以信息抽取得到的主題和模板以及情節規劃和交互動作規劃得到的動作類型為依據,通過知識推理得到相應的表情組合.將包含表情添加對象、類型、實現方式等信息的表情定性描述語句轉化為Maya 中控制模型面部變化的表情控制器的具體參數,并通過設置關鍵幀的方式生成表情動畫.

圖1 表情規劃整體流程圖
表情定性規劃部分的主要任務是構建表情本體庫并通過建立對象屬性、構建公理實現從主題、模板等多種有效信息中推理得到最適合的表情種類.定量計算則是將對表情的客觀描述在人物模型上加以實現,包括選擇適當的關鍵幀位置及解決相鄰表情切換時的平滑過渡等問題.
表情定性規劃是表情實現的關鍵,它決定了適合表達短信的表情類型、個數、展示時間等,使表情動畫有理可依.定性規劃主要包括構建知識庫以及生成表情定性描述語句兩部分.
知識庫是以描述型方法來存貯和管理知識的機構,由知識和知識處理機構組成[2].與數據庫系統不同,知識庫系統根據輸入的數據信息進行推理后給出結果,而不單是為用戶提供可檢索的信息.目前系統已有主題庫、模板庫、事件庫、動作庫等.主題庫和模板庫是系統定性部分的核心,可按是否含情感分為情緒主題(模板)、非情緒主題(模板).事件庫依托于動作庫,按照一定規則規劃出動作序列,而動作庫也同樣包含情緒動作,所以事件規劃和動作規劃結果都會對表情規劃產生影響.
表情本體庫主要由運動單元類和表情類兩部分構成.其中運動單元類建立的基礎是面部基本運動單元(Action Unit,AU).Paul Ekman 在分析不同表情與不同面部肌肉動作的對應關系后,提出了面部動作編碼系統(Facial Action Coding System,FACS)[3].它以一種自下而上的方式將臉部分割成一系列基本運動單元,通過44 個獨立運動的表情單元來描述面部動作,絕大多數的表情都可以由這些單元組合而成.根據動畫人物表情的特點,結合FACS 中定義的AU 類型,構建運動單元類.該類包括眉、眼、嘴三個子類,每個子類分別包含相應部位的常見運動方式,如圖2中mouth 子類包括嘴部向下(m_d o w n w a r d)、嘴巴張大(m_enlarge)等嘴部運動方式,另外通過建立實例描述不同運動方式的具體實現形式,如圖2中m_downward 子類包含下嘴唇完全下拉(m_alldown)、嘴角下拉(m_down)等實例.

圖2 運動單元類
表情類以Plutchik 提出的情感輪模型[4]為依據建立.Plutchik 將情感劃分為八個維度,包括信任、期待、喜悅、生氣、惡心、害怕、傷心、驚訝,在每個情感維度又按不同的情感強度劃分為3 組,以這24 個情感特征來描述情緒.利用情感輪模型分類結構,結合目前系統能夠處理的情緒類型,構建出表情類(見圖3).通過分析表情種類建立不同的表情實例,如圖3中狂喜(ecstasy)含ecstacy_120、ecstacy_121 等5 個表情實例,表示該表情有5 種不同的表達方式.

圖3 表情類及其對象屬性
其中表情與AU 組合的對應關系、主題與表情的對應關系等是通過創建對象屬性并刻畫相應公理建立起來的.對象屬性用以描述不同類之間的關系以及同一類下不同子類之間的關系,其中類包含的實例均滿足該關系.本文創建了hasAU、topicForFacialExpress、similarnext 及templateForFacialExpress 四個對象屬性,其中hasAU 屬性將運動單元類和表情類聯系在一起,描述不同表情對應的AU 組合情況.similarnext 屬性在同一表情類下不同情感強度的子類之間建立關聯,用以描述諸如微笑-大笑的漸進式表情.另外通過topicForFacialExpress、templateForFacialExpress 屬性描述表情類與主題類/模板類的關系,表明該主題類/模板類對應的表情類型.通過分析各類之間的相互關系建立公理,圖4展示了anger 子類滿足的公理,表示生氣的表情適合于爭執模板(CollideTemplate)以及生氣主題(AngryTopic),存在漸進表情-煩惱(annoy),能夠通過眉毛向下(b_down)、眼角低垂(e_downward)、嘴巴撅起(m_pout)或嘴部向下(m_downward)的方式展示.
本系統中,確定表情類型的依據除主題、模板外,還有動作類型及情感分類結果等.其中情感分類結果只有喜、怒、哀、懼四類,種類較少.而基于事件的情節規劃是以動作庫為基礎,通過已有動作劃分不同的事件類,然后構建情節,其結果以人物多動作來體現.故通過短信主題、模板以及動作類型這三個參數即可確定表情.表情定性規劃流程如圖5所示.

圖4 anger 子類相應公理

圖5 表情定性規劃流程圖
本模塊以信息抽取和情節規劃的結果作為輸入.信息抽取結果包括短信分詞結果、短信主題以及短信包含的模板信息,其中主題是能夠表達短信核心思想的關鍵詞,目前本系統中存在包括節日、運動、情緒等93 類不同的主題.模板為短信中包含的有效信息,包括地點、動作、情緒、生活用品等多個類型.情節規劃結果主要包括選定場景、主題、動畫總長度、添加模型的信息以及添加動作的類型等內容.表情規劃以信息抽取結果得到的短信主題、模板信息以及情節規劃、動作規劃得到的動作類型作為表情判斷的依據.其中以情緒主題為主,情緒模板次之,動作類型比重最低.在確定出表情類型后,根據相應的公理選擇適當的AU 組合方式作為表情定性規劃的結果.
我們以短信“一起去吃飯吧”為例,詳細介紹表情定性規劃的整體流程.根據信息抽取結果(見圖6)中的topic 節點(包含主題信息)及root 節點(包含模板信息)可知,該短信以吃飯為主題,并提取出一個“走:去”的動作模板,均不包含情緒,進一步判斷動作類型.情節規劃結果(見圖7)中maName 節點包含選定場景、主題、音樂及動畫總長度的信息,rule 節點為規劃規則,包括添加模型規則(addToMa)及添加動作規則(addActionToMa),情節規劃選擇添加了一個人物模型M_girl 和一個物品模型M_teapot,并為該人物模型添加了兩個動作ElatedWalk142_06 和eating80_24,構建出“開心地走+吃飯”的情節.由于該動作包含情緒,故以動作為依據進行表情規劃.在知識庫中動作庫與主題庫存在對應關系,根據動作可以找到相應的的主題,根據已構建好的公理可以通過主題找到相應的表情實例,進而找到每個表情實例對應的AU 實例,得到最終規劃結果(見圖8).

圖6 信息抽取結果

圖7 情節規劃結果

圖8 表情規劃結果
表情定性結果各參數的描述如表1所示.

表1 表情定性規劃參數描述
其中usedModelInMa 取值為情節規劃確定出的需添加的人物模型,usedModelID 取值為該人物模型對應的ID.source 參數表示得出表情規則的直接決定因素,如上述例子中source 取值為ac_topic,表示該表情規則以動作類型為依據推出.除此之外還可取值為主題或模板.expression 參數取值范圍即為表情類中各子類的值,每個表情實例對應的AU 組合用controller 表示,每一個controller 參數均包含眉、眼、嘴三部分的運動方式.對同一人物模型的多條表情添加規則表示當前模型需實現多表情連續動畫.
表情類中喜怒哀驚等子類是最常見的表情類型,相應的表情方式也多樣,而諸如期待、信任等子類對應的表情特點不突出,種類也就相對較少.為實現表情動畫的多樣性,定性規劃確定出表情后,若該情緒子類對應實例較多,則每次隨機選取若干實例進行下一步規劃,若該情緒子類對應實例較少,則將該子類與相近情緒子類的實例構成漸進式表情集合,從該集合中選擇若干實例進行下一步規劃.圖9為上述短信的動畫片段.

圖9 動畫片段
表情定量計算是表情動畫實現的部分.定性輸出是對表情的客觀描述,真正讓模型表情動起來還需在Maya 中進行相應操作.Maya 中表情動畫主要分為面部表情制作和關鍵幀動畫制作兩部分.
Maya 中制作表情主要通過三種方式實現:表情裝配、Maya 內置語言語句(Maya Embedded Language,MEL)、表情捕捉[5].表情裝配主要通過建立骨骼系統控制頭部、下頜和口部的運動關系,依靠變形工具和融合變形方法調節五官變化,并利用非線性動畫編輯器實現各表情之間的融合效果等方式在面部建立表情控制系統.MEL 語言動畫是通過Maya 內置語言編寫動作程序從而控制角色動作生成,主要運用于集群及動力學動畫制作中.表情捕捉則是通過動態采集真人表情數據并映射到三維角色中從而生成極具真實感的表情動畫.
本文主要利用表情裝配的方法制作表情.其中骨骼方向約束及建立父子關系的裝配手段主要用于受骨骼控制的部位,動畫制作中常用于控制眼球、牙齒的運動.簇及融合變形方法則主要用于對蒙皮的修改.
首先建立頭部骨骼、下頜骨骼及其與面部、眼睛、牙齒等蒙皮之間的關系,使得骨骼可以正確控制整個頭部各部位的運動.其中下頜控制主要通過建立下頜骨骼并與頭部骨骼建立方向約束實現,牙齒實質是蒙皮,將其與下頜骨骼建立父子約束并調節權重即可通過骨骼控制牙齒運動(見圖10).進而通過變形工具和融合變形方法調節五官變化,分別參照FACS 中定義的眉、眼、嘴三部分的常見運動方式做出各自的融合形狀,此時融合圖形窗口中每個參數對應一種融合形狀,如圖11所示.

圖10 頭部骨骼系統

圖11 融合圖形窗口部分參數
由于融合圖形窗口內的參數較多且互相獨立,導致創建表情過程繁瑣,故還需建立面部控制器來驅動融合形狀.面部控制器實質上是與頭部骨骼綁定的一組曲線,通過驅動關鍵幀方法建立各曲線的屬性值如Y 軸位移(translateY 值)與融合圖形窗口中各參數之間的關系,實現控制器對融合形狀的直接控制.利用面部控制器能夠直觀地對面部進行操控,極大地簡化了表情制作流程[6].圖12展示了面部控制器與生氣表情的對應關系,圖中加粗的部分為相應調節的局部控制器(若未加說明,下文中提到的控制器均表示局部控制器).
為精細控制面部表情動作,單一功能型控制器是必不可少的.單一功能型控制器是指該控制器控制同一部位的融和形狀,如圖12中內側眉毛控制器可以控制內側眉毛抬升、低垂.單一功能型控制器越多,角色表情設定就越自由,但其數量過多會降低動畫制作效率.因此還需復合功能型控制器,該控制器可以同時控制多個部位的融和形狀,把應用頻率較高的表情動作設置為復合功能型控制器可以提高工作效率[7].部分表情控制器設計見表2.

圖12 控制器與表情對應關系

表2 部分表情控制器設計
利用非線性動畫編輯器可以實現多個表情之間的融合效果也可以實現不同表情之間的平滑過渡,但較強的依賴于手動調節.為此本文主要以關鍵幀動畫為基礎,針對相鄰表情過渡時可能出現的各種情況作出處理,自動化生成表情動畫.
關鍵幀動畫是通過給出若干時間點(關鍵幀)處的狀態并由電腦完成中間狀態的變化和銜接的一種動畫制作方法[8].表情動畫中關鍵幀處的狀態即為不同的表情,而表情受面部控制器控制,故主要通過設置關鍵幀處的控制器參數(下文簡稱為設置關鍵幀)完成表情動畫制作.本文根據動畫總時長(T)和表情個數(n)初步確定每個表情的關鍵幀位置為Tk/n(0<k<=n).由于各表情之間相互獨立,除相鄰表情有相同部位運動方式一致的情況外,前一表情的面部各部位需在下一表情開始后回歸初始位置,但各部位運動由面部控制器控制,某些控制器可控制兩種運動方式,若這兩種運動方式相鄰,會導致控制器參數調節矛盾,表情規劃異常.針對相鄰控制器的不同情況需要采取不同的策略.
若相鄰兩個運動方式分別對應不同控制器,則在時間軸Tk/n(0<k<=n)位置處置第一個控制器參數為最大值、T(k+1)/2n位置處將該值置零設置關鍵幀即可.若相鄰兩個運動方式完全一致,控制器不做歸零處理.若相鄰兩個運動方式不同但對應同一控制器,為解決切換過程中的歸零問題,選擇在一個較小時間范圍內對參數值取反設置關鍵幀.
通過調節控制器參數大小可以得到不同幅度的表情,但效果不明顯.實驗發現通過同時調節使眼睛/嘴巴張大的控制器(統稱為open 控制器)可以得到情緒強度不同的表情,如嘴角抬升的動作疊加嘴巴張大的動作可以得到咧嘴笑的表情效果等.該混合控制器以mix 為前綴.其中open 控制器參數以0.5 為宜.由于此類控制器同時操縱open 控制器,在與單獨的open 控制器相鄰時,同樣會遇到控制器參數設置矛盾的問題.對于open 控制器在前,混合控制器在后的情況,可在時間軸T(k+1)/2n位置處將open 控制器參數調至0.5 并設置關鍵幀.對于open 控制器在后,混合控制器在前的情況,由于不涉及控制器參數歸零的問題,故只需在T(k+1)/2n將參數調至最大即可.以眼部運動方式e_l_up-e_l_down-e_l_down-e_open-mix_e_up-e_opene_down 這組序列為例對控制器沖突問題的解決方法進行說明(見圖13).

圖13 控制器沖突解決示意圖
假定動畫總長為210 幀.眼部表情個數為7 個,故每個表情展示時長為30 幀.基本處理方式為30 幀內控制器參數達到最大(小),在下一表情開始后該表情參數逐漸歸零.
對于e_l_up-e_l_down-e_l_down,前兩個關系為同一控制器不同參數,為解決切換過程中的歸零問題,選擇在40 幀處將此時的參數值取反并將該值設置為41 幀處控制器的參數值.而后兩個是完全相同的控制器,則該時間處無需設置關鍵幀.對于e_open- mix_e_up-e_open,關鍵在于open 控制器的設置,據上述分析,open 控制器整體變化為從最大值減少到0.5 最后升至最大值.具體見上圖藍色部分.對于e_opene_down,即為兩個完全不同控制器相鄰的情況,只需在后一控制器調節過程中將前一控制器歸零即可.
為了驗證表情規劃的結果是否符合預期,現分別編輯3 條以生氣、害怕、傷心、喜悅、驚喜等八種情感為主題的短信以及不含情感因素的短信,每條短信測試10 遍,最后統計這270 條短信中不同表情規劃的結果(見圖14).其中有13 條未成功輸出規劃結果的短信,主要是人為啟動程序不當造成.由于情節規劃多樣性的需求,并不是所有短信都會在定性規劃過程中添加人物模型,故而導致59 條短信因為沒有表情規劃對象而無法進行規劃.另外還存在15 條由于沒有明顯的情緒主題、模板、動作數據導致表情規劃失敗的短信.

圖14 表情規劃多樣性測試結果
從圖中可以看出,喜、怒、哀、驚四種最常見表情的多樣性結果較好,基本達到92.00%.贊成、期待、憎惡等表情以及非情緒表情的多樣性結果稍差,在80.72%左右.這是由于這些情緒之前粗分于上述四種情緒中,所以系統在單獨處理這些情緒時會有很大概率以不添加人物模型的簡單方式處理,導致無法進行表情規劃.另外,這些情緒對應的表情數目也沒有以上四種情緒對應的表情多,故而會對表情的多樣性展示造成一定局限性.
通過對以上信息的分析可知,本文提出的方法對大部分情緒可以做出較好的規劃,但仍存在一些無法規劃表情的情況,包括短信不含情感、情節規劃沒有添加人物模型等.這也使我們充分認識到目前的表情庫并不完備,與其他各庫之間的關系亟待進一步挖掘.我們將在以后的工作中繼續做出改進.
圖15是根據短信“一群人在開心地玩耍”對不同人物模型做出的不同表情規劃的展示.
在人物表情動畫研究中的常用方法有:關鍵幀插值方法、參數化方法、基于肌肉模型的方法和行為驅動的動畫方法.其中關鍵幀插值方法[9,10]在早期動畫制作中應用較普遍,主要通過在關鍵幀處插入面部數據,進而采用插值算法在相鄰表情間插入若干經過修改的面部網格點數據從而生成動畫.關鍵幀插值方法能夠快速產生基本人臉動畫,但大量依賴于樣本且產生動畫種類有限,有一定的局限性.Parke[11]最早提出用表情參數和形狀參數來描述表情變化,通過調整這些參數獲得不同的人臉表情,在之后的30 多年不斷有研究人員加入到該方法的研究中,其中最成功的是1998年提出的MPEG-4 標準[12].MPEG-4 表中定義的臉定義參數(Face Definition Parameters,FDPs)和人臉動畫參數(Face Animation Parameters,FAPs)分別用于代表人臉幾何特征和人臉基本運動,同時定義了特定人無關的人臉動畫參數單元(Facial Animation Parameter Unit,FAPU)用于在不同模型面部展現相同表情,目前表情動畫的研究多依據MPEG-4 標準實現目標模型的重定向[13,14].基于肌肉模型的方法是采用肌肉仿真技術來描述人臉上不同部位的肌肉運動.上文中提到的Ekman P 所提出的面部動作編碼系統就是基于該方法.Ahn S[15]等人進一步研究了通過估計肌肉收縮參數生成面部表情的方法.該方法能夠實現逼真自然的人臉動畫,但模型制作過程中需要一定的解剖學知識,不利于推廣.而行為驅動方法是近幾年興起的技術,主要通過動態采集人臉面部數據,利用特征提取方法得到人臉三維運動軌跡,再通過變形傳輸技術驅動虛擬人臉產生同樣的表情動畫[16,17].基于該方法主要有兩大研究方向:實時動畫生成、音頻驅動口型動畫的實現[18].其中實時動畫的研究包括利用深度攝像裝置采集三維面部數據實現面部的三維重構(如真人CG 電影)、利用單目攝像裝置或根據視頻動態采集面部數據驅動表情生成[19]及通過靜態圖片實現相應表情到三維模型的映射[20].

圖15 表情規劃多樣性展示
本文研究的重點是如何根據有限的信息生成多樣化的表情動畫,由于系統中的人物模型拓撲結構復雜,將模型參數化比較困難且運動邊界很難劃分,故參數化方法不適宜采用.而行為驅動的方法需要采集大量人臉數據,解決特征提取、模型映射、表情解耦等問題,且表情種類受限于采集的人臉數據.相較之下基于FACS 并利用Maya 融合變形技術能夠更簡單、快速地生成表情動畫.
手機3D 動畫自動生成系統旨在自動化地生成能夠表達短信內容的動畫.在傳統動畫制作過程中,人物表情都是需要動畫師根據情境手繪出來,耗時費力.在數字動畫盛行的今天,表情動畫制作除關鍵幀動畫技術之外,廣泛采用了動作捕捉技術,通過動態采集真人的面部數據,驅動模型人物做出相應的面部表情.目前對表情動畫的大部分研究都是基于該技術并利用機器學習方法開展的,包括人物表情仿真、聲音驅動的面部表情自動生成、表情識別等.但本系統不追求表情的逼真程度,也無需添加口型動畫,重點在于生成與短信內容相符的多種多樣的流暢的表情動畫,故選擇通過基于知識庫的方法加以實現.
我們動畫系統的一個重要特點就是多樣性,對相同的內容,生成的動畫應該有多樣化的展示效果.由于同一種情緒可以由很多種表情表現,我們不可能將所有的表現形式一一列舉,只能在有限的范圍內產生多種表情組合去表達該情緒,這也意味著本系統有一定的局限性.如何通過有限的信息產生出更豐富、準確的表情動畫將是以后研究的重點.