DBFace,被《機器之心》扒出來的輕量級高精度人臉檢測模型
上周末,一篇題為《模型僅有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)化模型的效果)
請輸入評論內容...
請輸入評論/評論長度6~500個字
最新活動更多
-
即日-11.13立即報名>>> 【在線會議】多物理場仿真助跑新能源汽車
-
11月28日立即報名>>> 2024工程師系列—工業(yè)電子技術在線會議
-
12月19日立即報名>> 【線下會議】OFweek 2024(第九屆)物聯(lián)網(wǎng)產(chǎn)業(yè)大會
-
即日-12.26火熱報名中>> OFweek2024中國智造CIO在線峰會
-
即日-2025.8.1立即下載>> 《2024智能制造產(chǎn)業(yè)高端化、智能化、綠色化發(fā)展藍皮書》
-
精彩回顧立即查看>> 【限時免費下載】TE暖通空調系統(tǒng)高效可靠的組件解決方案
推薦專題
-
5 夾縫中的文遠知行
- 高級軟件工程師 廣東省/深圳市
- 自動化高級工程師 廣東省/深圳市
- 光器件研發(fā)工程師 福建省/福州市
- 銷售總監(jiān)(光器件) 北京市/海淀區(qū)
- 激光器高級銷售經(jīng)理 上海市/虹口區(qū)
- 光器件物理工程師 北京市/海淀區(qū)
- 激光研發(fā)工程師 北京市/昌平區(qū)
- 技術專家 廣東省/江門市
- 封裝工程師 北京市/海淀區(qū)
- 結構工程師 廣東省/深圳市