03.06 極速CNN人臉檢測,速度可達1000FPS


近日,南方科技大學於仕琪教授團隊開源了一種CNN人臉檢測算法,名為libfacedetection,此次是團隊第三次開源,這版模型新增加了五點人臉檢測功能,人臉檢測速度可以達到1000FPS,目前該開源項目在GitHub上已經獲得了8000個星。


地址:https://github.com/ShiqiYu/libfacedetection


與之前的人臉檢測版本相比,主要變化有:


  • 增加了五點人臉關鍵點檢測,關鍵點檢測和人臉檢測同步進行。


  • 計算量未增加。


此開源人臉檢測庫libfacedetection,有如下特點:


卷積操作無浮點計算,算法基本全是8位整數操作。


採用AVX512/AVX2/NEON指令提速。


代碼更加簡短和簡潔,只有一千多行代碼。


代碼不依賴任何其他第三方庫,只要平臺能編譯C++則可使用。


項目License採用3-Clause BSD License,可以商業應用!


算法運行速度如下:


已開源 | 極速CNN人臉檢測,速度可達1000FPS


另外,團隊在訓練V3這個新模型時,沒有繼續使用Caffe進行訓練,而改用了PyTorch。因為訓練時會涉及頻繁的模型修改,PyTorch在自定義模型方面比Caffe更加方便。


新的PyTorch訓練程序參考了中科院自動化所張士峰的GitHub項目FaceBoxes.PyTorch以及Max deGroot的GitHub項目ssd.pytorch,並把代碼整理的更簡潔。


之所以能夠人臉檢測和關鍵點檢測同時做,是採用了下面策略:


  • 前100個Epoch僅訓練人臉檢測;


  • 後400個Epoch人臉檢測和關鍵點檢測交替訓練。


本項目的亮點是

將訓練好的模型進行8位定點化,並自動生成libfacedetection庫所需的CPP文件;還可以自動將卷積層conv和批歸一化層bn進行融合,使之成為一個新的卷積層,這樣不需要再進行bn操作,以提升速度。定點化和層融合詳見Readme文檔和代碼。


地址: https://github.com/ShiqiYu/libfacedetection.train


分享到:


相關文章: