hans

hans

【人臉檢測】基於mtcnn的人臉框穩定算法


前言#

基於深度卷積神經網絡的人臉檢測算法得到的人臉框一般普遍存在較大抖動的現象,在某些應用上這種抖動會帶來很大的影響。這篇文章分享一下我對人臉框穩定的一些處理方法。

正文#

現在移動端上十有八九都是在使用 mtcnn 做人臉檢測,我也是基於這個網絡結構做的。其實哪怕用其他方法,比如 SSD、yolo,做人臉檢測也可以,只需要將人臉框再過一遍 mtcnn 中的 Onet 輸出人臉五個特徵點就好。

具體思路很簡單,Onet 輸出人臉五個特徵點,取鼻頭坐標,做 N 幀平均。然後基於鼻頭坐標取固定長寬的人臉框,再對當前幀和上一幀人臉框做 IOU,如果結果大於 IOUrate,使用上一幀人臉框坐標為當前幀的人臉框坐標。再對人臉框坐標做 N 幀平均。這樣最後得到的人臉框基本沒有抖動,而且人臉移動後,框也會相對平滑的跟著移動。

解釋一下,IOU 可以有效抑制框的小幅度抖動,但人臉移動的時候,IOU 會引起框的大步跨越式移動。所以後面又加了個 N 幀平均,就是為了讓框能平滑的移動。前面對鼻頭做 N 幀平均,我考慮的是為了盡量降低引起 IOU 跨越移動的情況。

caffe+gpu+python 組合,這個算法速度也一般般吧。我 1080Ti 也要 100ms 一幀。

C++、ncnn、cpu 組合就快多了,一幀 10ms 左右。cpu 是 Intel® Xeon (R) CPU E5-2673 v3

C++ + ncnn 以及 python + caffe 代碼地址: GitHub - HansRen1024/Face-Tracking-Using-
CNN-and-Optical-Flow: C++ implementation for paper: A Real-Time and Long-Term
Face Tracking Method using Convolutional Neural Network and Optical Flow

Python + pytorch 代碼地址: https://github.com/HansRen1024/C-OF

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。