這期教向大家介紹僅僅 1.3M 的輕量級高精度的關鍵點人臉檢測模型DBFace,並手把手教你如何在自己的電腦端進行部署和測試運行,運行時bug解決。
01. 前言
前段時間DBFace人臉檢測庫橫空出世,但是當時這個人臉識別模型是7M大小,幾乎可以識別出世界最大自拍中的所有人像。DBFace出自國內人工智能公司深蘭科技(DeepBlue),這個模型的創建者正是這個公司的兩位“高手”-Libia和Wish,而最近,高手就是高手,兩位大佬對模型進行了再升級,現在這個模型的大小僅僅只有1.3M。

該模型已經放在GitHub上開源了,被《機器之心》挖掘出來,目前在Github上的Stars數已經有800顆星了,於是帶着好奇和感興趣我想要試試這個人臉檢測模型,沒想到,測試效果極好,這里就和大家分享一下。
02. DBFace的網絡結構
DBFace的初衷設計就是為了設計成一款輕量級的人臉檢測器,能夠在邊緣計算上有效的使用,為了讓處理更加簡潔、高效、對小目標的檢測效果也好,選擇 CenterNet(基於中心點的方法預測目標,稱為:CenterNet,)結構做檢測任務,采用MoblienetV3做Backbone。我相信大家在這里已經暈了吧,不知道什么是CenterNet和MoblienetV3,因為這不是幾句話能說清楚的,需要大家明白卷積的知識,在知道這之后,還需要去讀這個論文,啃代碼,可能才能理解個七八分吧。這里給大家兩個鏈接:
CenterNet:https://blog.csdn.net/c20081052/article/details/89358658
MobileNetV3:https://blog.csdn.net/DL_wly/article/details/90168883
感興趣的話就繼續啃吧


相對於MoblienetV2,MoblienetV3在其基礎上新增了SE、Hard-Swish Activation等模塊,在兼顧infence速度的同事提升網絡性能。對於任務頭的設計,大佬引入了SSH的DetectModule和ContextMoudle,經試驗驗證該模塊能有效的提升DBFace算法的檢出性能,這里涉及到卷積、池化中的最大值池,對模型進行的整合。

對於上采樣設計,作者采用Upsample + Conv + Act的方式,即上采樣 + 卷積 + 激活函數Activation,從圖中可以看到有激活函數Relu。
03. 損失函數Loss的定義
整個網絡由三個部分的Loss組成:
- 熱力圖HeatMap損失 - (CenterNet網絡中熱力圖誤差損失)
- 位置坐標偏移量(Bounding Box)損失 - (檢測邊界框誤差損失)
- 關鍵點(Landmark)損失 - (人臉關鍵點誤差損失)
對於一個模型來說,網絡結構和損失函數、以及數據集是最重要的,這里作者並沒有開源自己的數據集,我們可以利用工具來標記屬於自己的數據集,這里給大家介紹一個關鍵點標記的軟件CasiaLabeler,可以在后台回復關鍵字"關鍵點"獲取。

04. 項目運行效果


05. 官方運行效果圖:

06. 項目部署和測試
第一步:Github上下載項目源碼,選擇Clone and Download ,ZIP格式下載到桌面,解壓縮,地址:https://github.com/dlunion/DBFace,也可以關注微信公眾號:哆啦A夢愛學習,直接獲取。

第二步:工具准備
Anaconda + Pycharm + CUDA10,還未下載安裝的同學,可以看我之前的下載安裝詳細教程。
第三步:在Anaconda中創建一個python3.6及以上的虛擬環境,環境名為py36,否則會出現在字符串f ,SyntaxError錯誤,這種用法是python3.6之后才用的,不會創建的看之前的教程。
第四步:在虛擬環境中下載項目依賴包
Pytorch1.5 + OpenCV-Python 4.2,到官網進行下載安裝,還不會的可以看我之前寫的教程。
第五步:使用Pycharm打開已經解壓好的項目,然后再pycharm中配置好python解釋器,選擇剛剛創建好了的py36環境,點擊Add->找到Anaconda的安裝目錄下的env目錄下你已經創建好的環境名為py36.

第六步:找到一張圖片,將其放在項目的datas文件目錄下,給圖片命名為party.jpg

第七步:進行測試運行main.py,運行之前,在image_demo中添加你想要測試的圖片代碼

第八步:右鍵main.py,選擇Run 'main',運行完之后在detect_result里查看檢測效果,也可以調用PC端的攝像頭,進行實時人臉檢測,選擇camera_demo即可。

關注我,回復關鍵字:人臉識別,即可獲取人臉數據集標記工具和訓練模型。
至此完成成功,大家可以自己動手試一試,覺得還不錯的話記得點贊收藏哦,或者分享給身邊的好友們,碼字不易,希望得到你們的支持。
更多有關python、深度和計算機編程的精彩內容,可以關注我的微信公眾號: