FaceBoxes
FaceBoxes: A CPU Real-time Face Detector with High Accuracy
1. introduction
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, 55+FPS cpu (i7 8700k), 160+FPS GPU(2080ti), 就模型大小,性能以及耗時上可以說是一個十分適合應用的算法了
fddb |
---|
0.96 |
如果只是想跑一下看看效果,可以下載訓好的模型
-
baidu disk (code eb6b )
2. demo
3. train
- 1
git clone https://github.com/610265158/faceboxes-tensorflow.git
- 2 下載 widerface ,並解壓 WIDER_train, WIDER_val and wider_face_split 到 ./WIDER,
- 3 下載 FDDB, 並解壓到 ./FDDB
- 4
python prepare_data.py
會產生train.txt 和val.txt - 5 然後
python train.py
- 6 等待訓練結束,轉換爲pb 模型,`python tools/auto_freeze.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.pb
--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.pb --data_dir 'FDDB/img/' --split_dir FDDB/FDDB-folds/ --result 'result/'
5. visulization
看一下 vis.py 很簡單,,
python vis.py --img_dir 'your images dir ,by default it detect pics with .jpg
如果,想試試從攝像頭檢測,
`python vis.py --cam_id 0``