forked from PaddlePaddle/Paddle
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
add blazeface & update rcnn modelzoo (PaddlePaddle#2303)
* add blazeface & update rcnn modelzoo * remove condition num_priors
- Loading branch information
Showing
29 changed files
with
1,256 additions
and
36 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
metric: WiderFace | ||
num_classes: 1 | ||
|
||
TrainDataset: | ||
!WIDERFaceDataSet | ||
dataset_dir: dataset/wider_face | ||
anno_path: wider_face_split/wider_face_train_bbx_gt.txt | ||
image_dir: WIDER_train/images | ||
data_fields: ['image', 'gt_bbox', 'gt_class'] | ||
|
||
EvalDataset: | ||
!WIDERFaceDataSet | ||
dataset_dir: dataset/wider_face | ||
anno_path: wider_face_split/wider_face_val_bbx_gt.txt | ||
image_dir: WIDER_val/images | ||
data_fields: ['image'] | ||
|
||
TestDataset: | ||
!ImageFolder | ||
use_default_label: true |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,96 @@ | ||
# 人脸检测模型 | ||
|
||
## 简介 | ||
`face_detection`中提供高效、高速的人脸检测解决方案,包括最先进的模型和经典模型。 | ||
|
||
 | ||
|
||
## 模型库 | ||
|
||
#### WIDER-FACE数据集上的mAP | ||
|
||
| 网络结构 | 输入尺寸 | 图片个数/GPU | 学习率策略 | Easy/Medium/Hard Set | 预测时延(SD855)| 模型大小(MB) | 下载 | 配置文件 | | ||
|:------------:|:--------:|:----:|:-------:|:-------:|:---------:|:----------:|:---------:|:--------:| | ||
| BlazeFace | 640 | 8 | 1000e | 0.889 / 0.859 / 0.740 | - | 0.472 |[下载链接](https://paddledet.bj.bcebos.com/models/blazeface_1000e.pdparams) | [配置文件](/~https://github.com/PaddlePaddle/PaddleDetection/tree/master/dygraph/configs/face_detection/blazeface_1000e.yml) | | ||
|
||
**注意:** | ||
- 我们使用多尺度评估策略得到`Easy/Medium/Hard Set`里的mAP。具体细节请参考[在WIDER-FACE数据集上评估](#在WIDER-FACE数据集上评估)。 | ||
|
||
## 快速开始 | ||
|
||
### 数据准备 | ||
我们使用[WIDER-FACE数据集](http://shuoyang1213.me/WIDERFACE/)进行训练和模型测试,官方网站提供了详细的数据介绍。 | ||
- WIDER-Face数据源: | ||
使用如下目录结构加载`wider_face`类型的数据集: | ||
|
||
``` | ||
dataset/wider_face/ | ||
├── wider_face_split | ||
│ ├── wider_face_train_bbx_gt.txt | ||
│ ├── wider_face_val_bbx_gt.txt | ||
├── WIDER_train | ||
│ ├── images | ||
│ │ ├── 0--Parade | ||
│ │ │ ├── 0_Parade_marchingband_1_100.jpg | ||
│ │ │ ├── 0_Parade_marchingband_1_381.jpg | ||
│ │ │ │ ... | ||
│ │ ├── 10--People_Marching | ||
│ │ │ ... | ||
├── WIDER_val | ||
│ ├── images | ||
│ │ ├── 0--Parade | ||
│ │ │ ├── 0_Parade_marchingband_1_1004.jpg | ||
│ │ │ ├── 0_Parade_marchingband_1_1045.jpg | ||
│ │ │ │ ... | ||
│ │ ├── 10--People_Marching | ||
│ │ │ ... | ||
``` | ||
|
||
- 手动下载数据集: | ||
要下载WIDER-FACE数据集,请运行以下命令: | ||
``` | ||
cd dataset/wider_face && ./download_wider_face.sh | ||
``` | ||
|
||
### 训练与评估 | ||
训练流程与评估流程方法与其他算法一致,请参考[GETTING_STARTED_cn.md](../../docs/tutorials/GETTING_STARTED_cn.md)。 | ||
**注意:** | ||
- 人脸检测模型目前不支持边训练边评估。 | ||
|
||
#### 在WIDER-FACE数据集上评估 | ||
评估并生成结果文件: | ||
```shell | ||
python -u tools/eval.py -c configs/face_detection/blazeface_1000e.yml \ | ||
-o weights=output/blazeface_1000e/model_final \ | ||
multi_scale=True | ||
``` | ||
设置`multi_scale=True`进行多尺度评估,评估完成后,将在`output/pred`中生成txt格式的测试结果。 | ||
|
||
- 下载官方评估脚本来评估AP指标: | ||
``` | ||
wget http://mmlab.ie.cuhk.edu.hk/projects/WIDERFace/support/eval_script/eval_tools.zip | ||
unzip eval_tools.zip && rm -f eval_tools.zip | ||
``` | ||
- 在`eval_tools/wider_eval.m`中修改保存结果路径和绘制曲线的名称: | ||
``` | ||
# Modify the folder name where the result is stored. | ||
pred_dir = './pred'; | ||
# Modify the name of the curve to be drawn | ||
legend_name = 'Fluid-BlazeFace'; | ||
``` | ||
- `wider_eval.m` 是评估模块的主要执行程序。运行命令如下: | ||
``` | ||
matlab -nodesktop -nosplash -nojvm -r "run wider_eval.m;quit;" | ||
``` | ||
|
||
|
||
## Citations | ||
|
||
``` | ||
@article{bazarevsky2019blazeface, | ||
title={BlazeFace: Sub-millisecond Neural Face Detection on Mobile GPUs}, | ||
author={Valentin Bazarevsky and Yury Kartynnik and Andrey Vakunov and Karthik Raveendran and Matthias Grundmann}, | ||
year={2019}, | ||
eprint={1907.05047}, | ||
archivePrefix={arXiv}, | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
architecture: SSD | ||
|
||
SSD: | ||
backbone: BlazeNet | ||
ssd_head: FaceHead | ||
post_process: BBoxPostProcess | ||
|
||
BlazeNet: | ||
blaze_filters: [[24, 24], [24, 24], [24, 48, 2], [48, 48], [48, 48]] | ||
double_blaze_filters: [[48, 24, 96, 2], [96, 24, 96], [96, 24, 96], | ||
[96, 24, 96, 2], [96, 24, 96], [96, 24, 96]] | ||
|
||
FaceHead: | ||
in_channels: [96, 96] | ||
anchor_generator: AnchorGeneratorSSD | ||
loss: SSDLoss | ||
|
||
SSDLoss: | ||
overlap_threshold: 0.35 | ||
neg_overlap: 0.35 | ||
|
||
AnchorGeneratorSSD: | ||
steps: [8., 16.] | ||
aspect_ratios: [[1.], [1.]] | ||
min_sizes: [[16.,24.], [32., 48., 64., 80., 96., 128.]] | ||
max_sizes: [[], []] | ||
offset: 0.5 | ||
flip: False | ||
min_max_aspect_ratios_order: false | ||
|
||
BBoxPostProcess: | ||
decode: | ||
name: SSDBox | ||
nms: | ||
name: MultiClassNMS | ||
keep_top_k: 750 | ||
score_threshold: 0.01 | ||
nms_threshold: 0.3 | ||
nms_top_k: 5000 | ||
nms_eta: 1.0 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
worker_num: 2 | ||
TrainReader: | ||
inputs_def: | ||
num_max_boxes: 90 | ||
sample_transforms: | ||
- Decode: {} | ||
- RandomDistort: {brightness: [0.5, 1.125, 0.875], random_apply: False} | ||
- RandomExpand: {fill_value: [123.675, 116.28, 103.53]} | ||
- RandomFlip: {} | ||
- CropWithDataAchorSampling: { | ||
anchor_sampler: [[1, 10, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.2, 0.0]], | ||
batch_sampler: [ | ||
[1, 50, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0, 0.0], | ||
[1, 50, 0.3, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0, 0.0], | ||
[1, 50, 0.3, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0, 0.0], | ||
[1, 50, 0.3, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0, 0.0], | ||
[1, 50, 0.3, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0, 0.0], | ||
], | ||
target_size: 640} | ||
- Resize: {target_size: [640, 640], keep_ratio: False, interp: 1} | ||
- NormalizeBox: {} | ||
- PadBox: {num_max_boxes: 90} | ||
batch_transforms: | ||
- NormalizeImage: {mean: [123, 117, 104], std: [127.502231, 127.502231, 127.502231], is_scale: false} | ||
- Permute: {} | ||
batch_size: 8 | ||
shuffle: true | ||
drop_last: true | ||
|
||
|
||
EvalReader: | ||
sample_transforms: | ||
- Decode: {} | ||
- NormalizeImage: {mean: [123, 117, 104], std: [127.502231, 127.502231, 127.502231], is_scale: false} | ||
- Permute: {} | ||
batch_size: 1 | ||
drop_empty: false | ||
|
||
|
||
TestReader: | ||
sample_transforms: | ||
- Decode: {} | ||
- NormalizeImage: {mean: [123, 117, 104], std: [127.502231, 127.502231, 127.502231], is_scale: false} | ||
- Permute: {} | ||
batch_size: 1 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
epoch: 1000 | ||
|
||
LearningRate: | ||
base_lr: 0.001 | ||
schedulers: | ||
- !PiecewiseDecay | ||
gamma: 0.1 | ||
milestones: | ||
- 333 | ||
- 800 | ||
- !LinearWarmup | ||
start_factor: 0.3333333333333333 | ||
steps: 500 | ||
|
||
OptimizerBuilder: | ||
optimizer: | ||
momentum: 0.0 | ||
type: RMSProp | ||
regularizer: | ||
factor: 0.0005 | ||
type: L2 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
_BASE_: [ | ||
'../datasets/wider_face.yml', | ||
'../runtime.yml', | ||
'_base_/optimizer_1000e.yml', | ||
'_base_/blazeface.yml', | ||
'_base_/face_reader.yml', | ||
] | ||
weights: output/blazeface_1000e/model_final | ||
multi_scale_eval: True |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
# All rights `PaddleDetection` reserved | ||
# References: | ||
# @inproceedings{yang2016wider, | ||
# Author = {Yang, Shuo and Luo, Ping and Loy, Chen Change and Tang, Xiaoou}, | ||
# Booktitle = {IEEE Conference on Computer Vision and Pattern Recognition (CVPR)}, | ||
# Title = {WIDER FACE: A Face Detection Benchmark}, | ||
# Year = {2016}} | ||
|
||
DIR="$( cd "$(dirname "$0")" ; pwd -P )" | ||
cd "$DIR" | ||
|
||
# Download the data. | ||
echo "Downloading..." | ||
wget https://dataset.bj.bcebos.com/wider_face/WIDER_train.zip | ||
wget https://dataset.bj.bcebos.com/wider_face/WIDER_val.zip | ||
wget https://dataset.bj.bcebos.com/wider_face/wider_face_split.zip | ||
# Extract the data. | ||
echo "Extracting..." | ||
unzip -q WIDER_train.zip | ||
unzip -q WIDER_val.zip | ||
unzip -q wider_face_split.zip |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Oops, something went wrong.