愛奇藝“多模態視訊人物識別”課程分享學習總結
目錄
9月28日晚上7點,愛奇藝在微學堂上線了一個小時的“多模態視訊人物識別”課程分享。這次課程邀請到了愛奇藝身份識別組的應用基礎演算法工程師彭博老師進行視訊人物識別方面的技術交流。我們知道,愛奇藝曾在2017年上線了以圖搜劇功能,使用者可以通過手機拍攝或上傳電影、電視劇、綜藝或動漫等劇照或截圖,在愛奇藝搜尋欄處提供對應的劇照,便可直接進行觀看想看的視訊。這一功能直接解決了使用者看劇不知劇名而搜尋視訊創作素材困難的問題,成為國內行業內首家支援圖片搜尋影視劇新功能的視訊平臺。作為相關領域的學習者,肯定不能錯失這次學習的機會啊~~為了方便錯過直播的朋友進行學習,也方便自己在之後可以多次回顧學習,利用國慶假期時間,我將這次課程分享內容進行了以下總結。
彭博老師分別就以下三個方面進行了分享和討論:
1、視訊人物識別的應用場景。
2、當前技術效果展示,瓶頸以及引入多模態的必要性。
3、多模態人物識別比賽的資料製作,baseline方法和部分開源推薦。
一、視訊人物識別的應用場景
彭博老師所在的組主要做和人相關的一些東西。因為愛奇藝的資料主要來源自視訊,所以主要做的是視訊中的人的部分,包括人臉、人體、表情、動作、語音等等。關於人臉部分,主要是在做識別明星臉相關的課題。這主要因為愛奇藝有很多自制劇,自制綜藝,會涉及到簽約藝人明星的宣傳和推廣,很多應用也會和明星相關。具體例子比如說,知道微笑這個表情,我們就會找到明星微笑的片段。知道動作,比如說擁抱接吻,也能知道相應的片段。這些都可以幫助我們更好的理解視訊。
彭博老師所在的組做的東西比較多,現在都比較分散,但主要的業務是做視訊中的人物識別。想要更好的做到這一點,只用人臉的話,有很多case是沒法解決的,所以需要將很多已有的資訊融合起來,也就是需要用到多模態的方法。
關於視訊人物識別的應用,彭博老師針對愛奇藝的業務分別就以下三點進行了介紹。
① 用於選角。愛奇藝有很多自制劇和自制綜藝,製片人在製作這些綜藝的時候會涉及到選角的過程,在選角的時候經常會選擇一些不太出名的新人,但是在選新人的時候,製片人會想了解一下這些新人在以前有沒有參加過什麼節目,他們以前的表現怎麼樣。這個時候,有了視訊人物識別,就可以把這些新人以前參加過的節目的片段直接選出來,避免了人工篩選。由此可以生成一個數據庫,包含這些名人和新人的表演片段。我們可以通過表情動作找出他們表演中的一些精彩片段,從而輔助製片人選角。
② 廣告投放。視訊中的廣告投放主要可以分為兩個方面:物品相關和代言人相關。前段時間熱播的“延禧攻略”,涉及到廣告中的物品和劇裡面的物品有某種關聯,所以裡面播放的廣告就比較靈活與貼切劇情,不會讓使用者覺得廣告出現得那麼唐突。另外一種就是如果打廣告的物品的形象代言人在這部劇中出現,這個時候一般會把廣告的片段安排在代言人出現的片段,使它自然的銜接起來,為了做到這一點,我們也需要視訊人物識別。愛奇藝針對這一點,把視訊中明星出現的位置全部識別並儲存了下來。當需要植入廣告的時候,會通過廣告代言人去找視訊中可能適合植入的點,加之人工輔助,很大地減少人工篩選的工作量。
③ 只看TA。這是愛奇藝最近上線的一個與使用者體驗比較密切相關的功能。該功能可以使使用者只看某一集中某個人出現的片段。有些人可能覺得不好理解,如果只看一個人出現的片段,就沒法連貫的看劇情,但其實當我們很喜歡某個明星或者是某個明星的fans的時候,在我們看完整集之後,我們會希望能回顧這個明星出現的片段,也就是平時飯圈所說的cut片段。目前這個功能主要是彭博老師在做,當前的版本只用到了人臉的資訊,下一個版本已經在做了,會加入人體人頭的資訊,這樣能使明星識別的位置更加準確,遺漏的情況也會更少。
二、演算法介紹
愛奇藝目前採用的人臉演算法是今年年初提出的InsightFace,這個演算法和之前的sphereFace比較像,在算loss的時候,都用到了特徵夾角的資訊,會讓特徵之間的夾角儘量更大,是比softmax更嚴謹的一個loss,不僅能把類別分出來,還希望它有更好的泛化能力。
愛奇藝官方提供的人臉特徵就是用這個網路提取的,baseline結果也是在愛奇藝提供的那個特徵集上做出來的,目前人臉單模型在驗證集上是79的mAP,在測試集上是78的mAP。
愛奇藝一個明顯優勢是他們建立了一個比較大的明星資料庫,並且把insightFace在這個資料庫上單獨訓練了一下,使得在明星識別這一點上有具有很強的能力。最近愛奇藝也在逐漸豐富這個人物庫,加入一些其他的人物,像運動員、IT人物,政治人物等。
以下是愛奇藝人臉模型訓練的大致流程(半年前的流程,現在可能會有一些變化)。採用的insightFace會在開源的資料集上訓練一個基礎模型,然後這個基礎模型接著會在愛奇藝的明星資料上進一步訓練,從而得到更好的識別能力。
下面是“只看TA”上線之前的一個demo,展示了只用人臉來做只看ta的一些效果。
從demo中也能看到,只用人臉做能處理大部分的情況,但出現低頭、側臉、被遮擋時,識別會間斷一下,所以,這需要加入其他資訊來幫助我們解決這個問題。
人臉識別中主要的兩個挑戰,一個是遮擋,一個是側臉,這些情況只用人臉是不好解決的。例如上圖中,左邊的小鬼不是單單通過人臉識別出來的,而是結合人體資訊識別出來的。
這是愛奇藝做“只看TA”用到的與人體識別相關的論文。和人臉相比,人體更加靈活,變化也比較大,所以說現在通常的方法是把人體進行分塊,從上到下分成很多塊。當測試時,會把測試人的影象和庫裡的人的影象分別分塊,並找到對應關係。這篇文章提出了一個最小路徑的方法來找這種對應關係,然後通過這種方法來提取特徵。愛奇藝對這篇文章做了改進,加入了現在比較火的attention機制,來提取人體特徵。
下面這個demo是愛奇藝把人頭的資訊和人體的資訊加入進來之後做的一個“只看TA"。這個版本現在還沒有上線。
三、多模態人物識別比賽
這個比賽一開始說的是5000個明星,後來資料清洗了一下,現在是4900多個明星,資料量還是很大。
1、資料集生產
起初選擇一定數量的明星,通過這些明星關聯到40萬的視訊,這些視訊都是幾十分鐘或者超過一個小時的長視訊,有可能是電視劇,有可能是綜藝。利用場景分割,把視訊分成每一小段都是同一個鏡頭的片段,之後再做人臉檢測,檢測到人臉比較多的時候就把這個視訊過濾掉。現在比賽所用資料中有些視訊還是有多個人的,那種情況下一般是一個人的頭比較大,別的頭比較小,這種情況我們也認為是一個人。
為了增加比賽的難度,對人臉識別置信度特別高的一些視訊也進行了過濾處理,然後抽取了一些人臉識別置信度不高的視訊進行了人工標註。標註的時候會先根據衣服的特徵進行聚類,減小標註的工作量,標註之後也會加入一些噪聲。為什麼要加入噪聲呢?就是因為彭博老師在做"只看TA"的時候,會出現一些我們並不想找到的人也被識別出來的情況,所以比賽中也會加入噪聲。比賽的資料集剛釋出的時候,噪聲還是比較大的,經過很多選手的反饋,又做了一次再清洗的工作,清洗之後,人工統計出錯誤率從5%降低到0.2%。從baseline來說也是一樣的,在清洗之前做的baseline是72%,清洗之後直接變成76%了。可以看出,清洗對訓練模型還是挺有幫助的。
2、資料集對比
上圖展示了愛奇藝的資料集和YouTube face資料集的差別。直觀而言,愛奇藝的資料集量比較大,人比較多,視訊數比較多,視訊總長很大,取的幀數也比較多,每個人分到的幀數,每個人分到的視訊數都比較多。而且,這個資料集主要想突出多模態的應用,youtube那個資料集還是希望大家用人臉去搞定它,而愛奇藝這個資料集會故意找一些人臉搞不定的情況,希望大家能從一些別的角度嘗試去解決它。
3、資料分佈
這些是比賽資料的一個統計,能覆蓋到男女,各個年齡段,不同國籍。無論從性別年齡還是國籍來看,這個資料裡面的人的分佈還是比較均衡的。從訓練和測試集的分佈也能看到,比較均衡,驗證集和測試集是隨機拆開的,在驗證集和測試集的結果應該是差不多的。
這裡還有一個小trick,這裡的訓練集和驗證集的拆分比例很隨意的,按這個比例來拆分的話,訓練的效果其實不是很好。訓練模型的時候可以先把訓練集和測試集放在一起,自己來做一個拆分,可能會更好一點。
4、baseline方法
目前愛奇藝公佈的baseline方法只用到了人臉的資訊。彭博老師說他們組也嘗試了其他資訊,但目前還沒有取得有效的突破。這個baseline實際上就是先把視訊截幀,然後每一張檢人臉,檢測到人臉之後,提取人臉特徵,這樣每個視訊就會對應很多人臉特徵,最後就相當於一個視訊匹配的問題,即,一個特徵集合和另一個特徵集合求相似度的問題。
這是一張insightFace的特徵視覺化的圖,圖中相同的顏色代表同一個人,可以看到,insightFace對同一個人提取的特徵都是聚集在一起的,還是很容易分辨的。注意,中間有一小團,不同人的臉都會出現在那裡,這一小團特徵對應的人臉都特別的模糊。這也就是為什麼愛奇藝釋出的人臉特徵中會包含一個質量引數的原因。質量的數值是很有用的,體現在這張圖上的話,中間那一小團其實都是質量得分比較低的臉,做識別的時候如果能把這些質量分數比較低的臉過濾一下,那得到的人臉特徵的可靠度就會更好。
特徵集合的匹配問題,就是計算兩組特徵的相似度。最簡單的演算法就是兩組特徵兩兩算距離,做一個加權,或者求一個最大最小值。這種方法運算量比較大,所以並不適用於資料集本身比較大的情況。愛奇藝選的方法都是運算量儘量小一點的,也就是從兩組特徵裡面都選一個特徵來代表這一組特徵。這種方法中最簡單的就是求平均。但是從上一張圖我們可以看到,質量比較差的臉會干擾別的臉的特徵,所以baseline選用的方法會先通過質量分佈過濾掉質量差的臉,然後對剩下的那些臉求一個平均,這樣一組特徵就變成一個特徵,一個視訊對應一個特徵,通過特徵之間的匹配來匹配視訊,視訊又和id掛鉤,就可以得到id和視訊的關係。彭博老師提到可以結合經驗來定,他們線上做的時候,實50分以上的臉就認為質量比較好的臉。但是比賽中選的這些樣本都比較困難,閾值設為20分就可以。而且有些視訊過濾20分以下的話就一張臉都沒有了,所以也得想一些別的策略來解決這種情況,需要動態調整一下,對不同的視訊採用不同的標準。
彭博老師一開始做這個比賽的時候,是直接算特徵之間的餘弦距離來決定特徵之間的匹配關係,那樣做的時候能做到一個75,76的mAP。因為有視訊和id的對應關係,又有視訊和特徵的對應關係,就拿到了特徵和id的關係,通過特徵和id訓練了一個分類器,得到了驗證集79,測試集78的結果。後來又嘗試了一些其他方法。嘗試了拆分訓練集和驗證集,試了一下多模型,模型融合了一下,現在能做到82點多。單用人臉就能做到82點多,希望先把人臉做到極限,再想一些其他方法來提高成績。
上圖中的圖選自比賽資料,這幾張圖用人臉來做應該很難做出來,左上角兩個頭都比較側,這個id對應的視訊又比較少,像這種情況用人體來做應該是能夠出來的。不過,在不知道資料的情況下,什麼時候用人臉,什麼時候用人體,這就是一個問題。右上角這個圖也是很難的,左邊的圖有帽子遮擋,右邊又是側臉,這張圖可能需要做身份識別,如果都能識別出是網球運動員再來做的話,可能會比較好一些,而且用OCR識別出名字也是可行的。
5、開源推薦
這是一些人物識別相關的開源庫,目前愛奇藝的"只看TA"能把人體、人頭的資訊加進來。但線上做的時候,完整的視訊會有同鏡頭和跨境頭的情況,同鏡頭用人體資訊是比較安全的,但在跨境頭的情況下就不那麼可靠了。比賽的情況恰好又是跨境頭的情況,所以應該怎麼用也是一個值得探索的問題。
6、探索與展望
這是目前考慮到的一些問題。提取哪些特徵,如何融合這些特徵,都需要繼續探索和研究。因為這次比賽的時間比較短,所以在比賽結束之後也會開放這個排行榜。
四、Q&A
1、能否用跟蹤來做?
因為跟蹤演算法在跟蹤過程中經常會出現跟錯的情況,這是不能接受的。所以在跟蹤的同時,也會判斷每一幀的跟蹤結果是不是那個人,當發現跟蹤到的臉和之前匹配不上的時候,會中斷那個標籤。
2、這個人物識別的過程是不是實時的?
目前不是實時的,愛奇藝線上的“只看TA”的視訊,都是演算法先跑過一遍,然後把明星出現的時間點記錄下來。看視訊的時候有時間的點位資訊,並不是實時計算的,因為每個視訊只需要跑一遍就行了,也不會每次看一遍就再算一遍。
3、側臉的情況也能識別嗎?
側臉這個情況實際上我們沒有進行特別的處理,這也要看側的程度,就是一般側到45度左右用人臉提取的特徵的辨識度還是比較強的,如果側到八九十度估計辨識度就不行了,對於那種情況,現在沒有單獨處理,你們有什麼好的想法也可以嘗試一下。
4、有嘗試過只在比賽資料集上訓練,不借助更大的資料,然後看mAP的效果嗎?
沒有試過這樣。我們提供給你們的特徵是之前在我們的明星庫上訓練的一個人臉識別識別器,我們會把最後一層之前的作為特徵,我們訓練的那個分類器是在這個特徵的基礎上訓練的,這個特徵和這次比賽的資料是沒有聯絡的,就是你們想在這上面訓練也可以嘗試一下。
5、側臉有嘗試使用3D的矯正嗎?
我們其實是有一個角度模型,來識別這個臉它轉的角度是多少。但是這個模型對於比較近的臉效果比較好,對於比較遠的臉效果都比較差,你說的這個矯正問題,我們發現,其實臉比較大的時候,即便是側著的,它的特徵也和正臉是比較接近的,對於遠一點的就比較難弄了,你的想法也可以嘗試一下,我們沒有試過這樣做。
6、mtcnn進行人臉檢測會有很多不是臉的區域被檢測成了人臉,老師運用的人臉檢測演算法是什麼呢,可以介紹一下嗎
我們的這個檢測器是在SSH的基礎上改的,把那個基礎網路模型改一下,然後自己訓練的,我們也會有很多誤檢測的情況,但這次比賽有一個很強的先驗,就是每一個視訊是有一個主要人物的,所以我們提供的那個檢測框的資料,是每一幀中檢測到的人臉框最大的一個,在這種先驗的情況下,出錯的情況還是比較少的。如果你自己做人臉檢測,你過濾一下那些檢測到的小框,剩下的基本都是人臉,因為這次比賽資料有人工清洗一遍,就保證了這個條件。
7、訓練了分類器後,每個類candidate的排序是怎麼做的啊?
我們訓練的分類器,就是一個softmax,分類的時候每一個類別都會有一個分數,我們會把這個分數記錄下來,直接對這個分數進行排序,分數最好的那100個就作為預測的那100個視訊,沒有用別的。
9、影象質量是如何評估的呢?
這裡我們用的不是影象質量評估,是人臉質量。不是指影象清晰還是模糊,是指這個人臉有沒有辨識度。我們的這個人臉模型實際上是從人臉特徵的範數來訓練的,作者發現人臉特徵的範數越小,它就越模糊,這個直觀上是很好理解的,就是無論是誰的臉,越模糊,它的特徵就失去的越多,模糊的臉之間就會互相變得很像。這和那個特徵範數變小,全部都往原點靠近很類似,這樣想也是很合理的,就是說特徵的範數可以作為人臉質量的一個指標,我們是在這個指標的基礎上訓練的這個人臉質量模型。我們用到的就是開放給你們的那些資料,沒有用到別的一些特徵。