2018视频人物识别挑战赛冠军经验分享:在现有机器资源条件下更快速验证是关键...
在2018年愛奇藝聯合PRCV會議舉辦的第一屆多模態視頻人物識別挑戰賽中,來自Infinivision的團隊獲得冠軍。現在,該團隊分享了他們在比賽中的經驗心得,希望可以為對多模態領域研究感興趣的朋友提供參考。
前言:
在去年,我們團隊決定參加由愛奇藝聯合PRCV會議舉辦的第一屆多模態視頻人物識別挑戰賽,為了這個挑戰賽愛奇藝準備了迄今為止最大的人物視頻數據集(IQIYI_VID)。參賽比賽的過程中我們團隊經歷了沉穩-自信-壓力-興奮的心理路程,十分有趣。
挑戰賽的信息是從一個技術交流的群里了解到的, 因為挑戰賽的方向比較合適目前的研究方向, 就毫不猶豫的注冊參加了。我們團隊WitcheR(名字來源某著名游戲)包括3個成員:IBUG Jiankang Deng、公司的小伙伴JackYu 和我。我們團隊的合作模式比較簡單,沒有特別明確的分工,在比賽過程中中團隊成員會相互交流想法,共同找出當前可能存在的問題與改進點,最終由我統一匯總來實現和驗證。
在這次比賽中我們不僅積累了視頻特征處理、檢索的一些經驗,同時也認識了業界的一些伙伴、朋友,并且進行了深入的學習和交流。
一、準備策略:
愛奇藝舉辦的視頻人物識別挑戰賽是一個針對視頻的人物檢索競賽,賽題邏輯比較簡單:在視頻數據集IQIYI_VID中,計算出該視頻包含的人物是誰。整個數據庫包含50萬條視頻,5000名人物(噪音清理后4934), 每條視頻的長度是1~30秒。愛奇藝準備的這份數據集很特別,做到了數據的大和干凈,其中視頻數量和包含的人物數量截至目前都是最高的,并且噪音維持在了一個極低的水平, 對檢驗模型算法性能有很好的參考意義。
對視頻人物檢索問題來說,我們可能可以利用的信息有:
(1)人臉識別模型
(2)人頭識別模型
(3)行人重識別模型
(4)圖片場景模型
(5)聲紋模型
(6)人體姿態模型
在我們這次必定的方案中只用到了(1)和(4)。理由是:
1.人頭識別缺少數據集
2.ReID model可以和recognition model同時存在, 但泛化性能不如, 組合后會帶來提升還是下降未知
3.聲紋模型不熟悉
4.人體姿態步伐做人物識別更有些虛無縹緲
5.人臉識別是最重要的特征, 在能看到臉的視頻里面起決定性作用
6.圖片場景模型可以對檢不到臉的場景做一些補充
第一波數據公布后我利用空閑時間開始了實驗, 用各種策略評估官方第一次提供的訓練/驗證集合的精度:
1.幀速, 即每隔多少幀抽一次人臉/圖片特征
2.檢測器選擇, 更準的檢測器是否相比MTCNN帶來更高的精度.
3.人臉特征聚合, 如何用特征來表示一個視頻
4.獲得視頻特征后如何更好的提升檢索性能
5.用什么人臉識別模型和圖片場景模型
二、正式啟動:第一次提交成績第一 但很快被超過
在官方發布了所有數據集和測試集后,因為先期積累了一些經驗,我們決定專門騰了一臺8卡P40來做這個任務。
我們用了自己研發和訓練的一個one stage檢測器來同時檢測人臉和關鍵點做對齊,相比MTCNN,在phase1的validation set上能有差不多1個點的mAP提高。不管是在這個比賽中,還是其他的應用里,我們都發現關鍵點的精度是非常重要的,更精準的關鍵點能帶來更好的識別性能。這個檢測器也會很快在insightface上開源。人臉識別的模型訓練數據我們用了 MS1M-Arcface(emore)+ Glint-Asia 的組合, 沒有采用任何私有數據。 Loss function用我們剛剛被CVPR 2019接收為oral的Arcface:
網絡結構沿用了paper里面提出的ResNet100和IR Block:
更多細節可以參考我們的文章:
對每段視頻我們間隔3幀抽一次特征(~8FPS), 并對所有特征取平均來獲得該視頻的特征. 在這個過程中我也嘗試了一些其他方法:
1.根據feature norm去掉模糊人臉,有提升
2.增加flip augmentation,沒有提升
3.增加color jittering augmentation,性能下降
4.根據人臉5點估計姿態,并進行分組處理,沒有提升
在獲取每個視頻的特征向量后,我們就可以通過簡單的向量夾角來衡量視頻之間的相似度,并根據測試視頻和所有訓練視頻中最相似的視頻來輸出預測結果。這時候我提交了第一個結果,test mAP:79.8. 當時只有不到10個人提交,暫列第一, 但很快被超過。
三、調整策略:加速
A) MLP:
在上面的方法中有一個缺陷,實際上我們并沒有用到訓練集視頻來做訓練。我也嘗試過把訓練集的視頻人臉圖片抽取出來放到識別的訓練集里,但效果并不好。那如何才能用到這些訓練集信息? 答案是直接用視頻向量做為輸入訓練一個多層感知機(MLP)。最簡單的多層感知機很直觀,輸入512 embedding,通過2個全連接層,來預測該向量屬于某個人物分類的概率,最后加softmax loss來BP。但這里面的設計就又有不同,多少層最好,每層的寬度多少, 用不用BN,是否需要shortcut connection,用不用dropout, batch-size多大等等這些因素都會很大程度影響最終結果。我們最終選取了如下策略:
1.三層感知機
2.層寬 channel size = 1024
3.PRelu 代替 Relu
4.在中間層使用shortcut connection, 因輸入輸出分辨率一致.
5.使用BN, 不使用Dropout
6.用非常大的batch-size訓練, 單卡4096
7.Softmax層之前添加一個fix gamma的BN, 并和原始不加fix gamma BN的版本聯合預測
這7個技巧是我們的best setting。在使用最簡單的MLP配置時,提交的test mAP為82.9。加上這7個技巧以后,mAP=86.4, 足足提高了3.5個點。
B). 模型融合
模型融合可以說是打比賽必備的trick, 多個模型一般來說總能提升最終結果的精度. 我們保持同樣的數據集和訓練方法,并采用不同的random seed訓練了4個人臉識別模型。對這些識別模型也做同樣的MLP訓練來輸出最終的預測概率, 并加權得到最終結果. 此時mAP得分來到88.2。
C). 場景分類模型
對那些無法檢出人臉的視頻, 我們從mxnet model zoo里找到imagenet11k+place365預訓練的resnet152模型做為基準模型,用抽取的視頻圖片做微調來預測每張圖片屬于哪個明星。做完分類處理后, mAP最終定格在88.6。
結果匯總:
四、最后的決戰:壓力
在提交截止前的2-3天, 排名第二的隊伍得分突然一下提高了很多, 離我們只差不多1個點的距離。而當時我們手上其實已經沒什么牌可以打了。領跑了大半個賽季的我們,在最后一個夜晚還是比較擔憂最終的成績會被翻盤。焦慮不安的渡過了一個夜晚,第二天上午看到最終結果才放松下來。最終以總分比較高的優勢拿到了這次比賽的第一名。
五、比賽經驗:策略如何更容易的驗證
縱觀整個比賽過程, 付出最大精力的可能是如何使我們的idea更容易的去驗證。Idea很容易想, 可能一天會有好幾個,在確定了方案之后,怎么能在現有的機器資源的條件下更快速的去驗證,是比賽的一個關鍵。
尤其在數據量很大比賽中, 如果沒有一個優質的流程, 不但會引起效率低, 更會忙中出錯,簡單介紹其中幾種方法:
1.根據視頻的hash id切分多卡跑檢測, 并序列化中間結果. 對視頻按幀檢測比較耗時, 所以在檢測策略沒有發生變化的情況下可以保證復用結果;
2.對每個識別模型, 保存其對每一個視頻的特征抽取結果. 在視頻特征抽取算法不變的情況下保證可復用, 做為訓練MLP的輸入;
3.序列化保存每個訓練的MLP模型和預測的概率信息, 做為最終模型融合的輸入。
五、后記
在PRCV2018的頒獎現場我也與主辦方和通過比賽認識的小伙伴們進行了親切和友好的交流,結下了深厚友誼。針對如何提高視頻、圖像人物檢索性能達成了一系列共識。2019年的視頻人物識別挑戰賽已經開始了,這次比賽的數據集有了新的升級,也是業界中最接近實際媒體應用場景的視頻人物數據集,在原有的基礎上新增了短視頻人物ID約5000個,包括一些特效、濾鏡、換妝等。數據集iQIYI-VID-2019在復雜場景下10000名明星人物、200小時、20萬條影視劇與短視頻數據集,對于挑戰者來說更具挑戰性,我們團隊會繼續參加,并希望能有更多的志同道合的團隊能來一起參與, 把成績再提高更好的水平,也能為工業界多做貢獻。本文里面提交的技巧和代碼都有在insightface里面開源,可自行取用參考。
insightface開源項目鏈接:https://github.com/deepinsight/insightface
總結
以上是生活随笔為你收集整理的2018视频人物识别挑战赛冠军经验分享:在现有机器资源条件下更快速验证是关键...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: nginx负载均衡高可用
- 下一篇: 小技巧:远程连接共享文件密码错误