訂閱
糾錯
加入自媒體

DBFace,被《機器之心》扒出來的輕量級高精度人臉檢測模型

2020-04-14 10:19
深蘭科技
關注

上周末,一篇題為《模型僅有7M:輕量級高精度人臉識別方法DBFace》的文章在國內頭部的專業(yè)人工智能媒體《機器之心》上首發(fā)后,即被新浪科技、CSDN、機器學習研究會等多家科技/垂直類(自)媒體進行了轉載。

而對DBFace這個名字,業(yè)內人士更是很容易就能聯(lián)想到人工智能頭部企業(yè)深蘭科技(DeepBlue)。果不其然,這個模型的創(chuàng)建者,這是來自深蘭科技下屬深蘭科學院算法研究所的兩位“高手”——劉安奇、杜金偉。

據(jù)了解,該模型起初只是被放在了Github上,沒想到被《機器之心》扒了出來,而且短短3天時間,這個開源的模型就新增了近300次使用。

今天,就跟隨這兩位算法大咖,一起來看看DBFace是如何誕生的。

1. 網(wǎng)絡選擇

DBFace的初衷是設計一款輕量級的人臉檢測器,能夠在邊緣計算上有效的使用,加上因為疫情緣故,對于hard類(例如戴上口罩)人臉檢測顯得尤為重要。因為CenterNet具有后處理的簡潔高效性,以及對小目標友好等特點。綜合性能和速度的考慮下,我們選擇了CenterNet結構做檢測任務, 采用MoblienetV3做backbone。相較于MobilenetV2, MobilenetV3在其基礎上新增了 SE 、Hard-Swish Activation等模塊,兼顧Infernce速度的同時并提升網(wǎng)絡性能 。結構如下:

對于任務頭的設計,我們引入了SSH的DetectModule和ContextModule,經(jīng)實驗驗證該模塊能有效的提升DBFace算法的檢出性能

對于上采樣設計,我們采用Upsample+Conv+Act的方式,避免使用反卷積造成可能的鋸齒問題

2.Loss定義

整個網(wǎng)絡由三部分Loss組成:熱力圖(HeatMap)損失, 位置坐標偏移量(BoundingBox)損失,關鍵點(Landmark)損失

2.1 HeatMap 損失:Focal Loss

Focal loss,該損失函數(shù)是在標準交叉熵損失基礎上修改得到的?梢酝ㄟ^減少易分類樣本的權重,使得模型在訓練時更專注于難分類的樣本,從而能有效的緩解類別不均衡帶來的網(wǎng)絡注意力偏差問題

這里γ取2,y=1時,α為正樣本的權重,參照CenterNet,定義為目標周圍半徑處3*3范圍為1,其他為0,目的是加強正樣本的訓練權重。y=0時,α為(1 - gt)4,此時GT是一個基于目標計算的橢圓高斯圖,參照TTFNet(Training-Time-Friendly Network for Real-Time Object Detection)

2.2 位置坐標偏移量損失:  GIoU Loss

目前大部分目標檢測中主流的邊界框優(yōu)化采用的都是BBox的回歸損失(MSE loss, L1-smooth loss等),該種方式通過距離計算損失值,從而忽略了檢測框本身最顯著的性質IoU。如下圖所示,在L1及L2范數(shù)取到相同的值時,實際上檢測效果卻是差異巨大的,直接表現(xiàn)就是預測和真實檢測框的IoU值變化較大,這說明L1和L2范數(shù)不能很好的反映檢測效果。

通過IOU作為Loss來優(yōu)化任務,其缺點在于:

a.預測框bbox和ground truth bbox如果沒有重疊,IOU就始終為0并且無法優(yōu)化。其損失函數(shù)失去了可導的性質。

b.IOU無法分辨不同方式的對齊,例如方向不一致等情況

GIOU則能很好的解決上面兩個問題

假設現(xiàn)在有兩個任意的bbox A和B,我們要找到一個最小的封閉形狀C,讓C可以將A和B包圍在里面,然后我們計算C中沒有覆蓋A和B的面積占C總面積的比例,然后用A和B的IOU值減去這個比值。

2.3人臉關鍵點Landmark回歸:WingLoss

由于SmoothL1 Loss對于較大誤差時比較敏感,但是對中小誤差則比較不敏感,而導致關鍵點無法得到精細結果,因此考慮加重對中小誤差的關注,對比試驗后,選擇WingLoss(Wing Loss for Robust Facial Landmark Localisation with Convolutional Neural Networks)作為landmark訓練loss

WingLoss

這里我們采用了w=10,e=2,同時為了避免landmark相對人臉中心和寬高帶來的累積誤差,因此我們對landmark是相對于人臉中心點的方式進行訓練

3.數(shù)據(jù)增廣

random filp、random scaling、color jittering、randomly crop square patch、image compress

檢測結果及精度驗證

4.實際運行

項目地址

下載代碼后main.py提供基于圖像和攝像頭的案例,我們稍加修改后:

把圖像放到datas目錄下,執(zhí)行后,結果在detect_result中,我們看到如我們預期的結果:

下圖,對于戴口罩人臉的檢測(訓練時并未使用戴口罩數(shù)據(jù),因此將會加入戴口罩數(shù)據(jù)進行訓練以優(yōu)化模型的效果)

聲明: 本文由入駐維科號的作者撰寫,觀點僅代表作者本人,不代表OFweek立場。如有侵權或其他問題,請聯(lián)系舉報。

發(fā)表評論

0條評論,0人參與

請輸入評論內容...

請輸入評論/評論長度6~500個字

您提交的評論過于頻繁,請輸入驗證碼繼續(xù)

暫無評論

暫無評論

人工智能 獵頭職位 更多
掃碼關注公眾號
OFweek人工智能網(wǎng)
獲取更多精彩內容
文章糾錯
x
*文字標題:
*糾錯內容:
聯(lián)系郵箱:
*驗 證 碼:

粵公網(wǎng)安備 44030502002758號