FaceBoxes
FaceBoxes: A CPU Real-time Face Detector with High Accuracy
1. introduction
tensorflow2.0 版的facecboxes released,相比於之前的更容易理解算法了,如果需要tf1 切換到tf1 分支參考readme就好。
faceboxes 是一個cpu相對高效的人臉檢測算法,本質上還是一個ssd結構,在小anchor上做了稠密策略。本文不再原理上過多贅述,想知道原理還是看論文。本文旨在幫助大家跑起來並看到結果!
其實github 上已經有一個faceboxes的tensorflow實現了,但是結果不太好,所以再實現了一下,實現也參考了其他repo。
另外這個實現和原文有些不同的地方,有一些改進。
- 默認使用512x512(原始1024x1024)的輸入,並將第一個卷積步長設爲2(原始爲4)訓練起來更快一些,不然數據在cpu的預處理過程會很耗時,inference的時候也會更快一些。
- 第一個卷積核由7x7x24 變成7x7x12
- 將兩個maxpool 變成3x3 stride2的卷積
- 替換第二個5X5,stride2 和maxpool, 爲兩個3X3,stride2的卷積
- 2.數據增強使用了anchor based sample。
因爲結構和原文不是嚴格一樣,速度更快一些,耗時:固定輸入512, 70+FPS cpu (i7 8700k), 160+FPS GPU(2080ti), 就模型大小,性能以及耗時上可以說是一個十分適合應用的算法了
fddb |
---|
0.961 |
如果只是想跑一下看看效果,可以下載訓好的模型
-
baidu disk (code zn3x )
2. demo
加上人臉關鍵點的
3. train
- 1
git clone https://github.com/610265158/faceboxes-tensorflow.git
, master 分支是tensorflow2.0,如果仍然需要在tensorflow1上面實驗,切換到tf1分支,並參考readme - 2 下載 widerface ,並解壓 WIDER_train, WIDER_val and wider_face_split 到 ./WIDER,
- 3 下載 FDDB, 並解壓到 FDDB-folds 到 ./FDDB , 2002,2003 到 ./FDDB/img
- 4
python prepare_data.py
會產生train.txt 和val.txt - 5 然後
python train.py
4. evaluation
python test/fddb.py [--model [TRAINED_MODEL]] [--data_dir [DATA_DIR]]
[--split_dir [SPLIT_DIR]] [--result [RESULT_DIR]]
--model Path of the saved model,default ./model/detector
--data_dir Path of fddb all images
--split_dir Path of fddb folds
--result Path to save fddb results
example python model_eval/fddb.py --model model/detector --data_dir 'FDDB/img/' --split_dir FDDB/FDDB-folds/ --result 'result/'
5. visulization
看一下 vis.py 很簡單,,
python vis.py --img_dir your_images_dir --model model/detector
如果,想試試從攝像頭檢測,
python vis.py --cam_id 0 --model model/detector