SSH 也算是人脸检测中一个经典的方法,具有较高的精度和较快的速度。项目实现了论文中的很多细节,对复现过程也有详细的讲解,容易实现。美中不足的是论文中的 Pyramid 方式,该项目没有实现
项目分析
仓库名称:SSH
标星(star):693 (不错哦,潜力股项目)
标星趋势
关注(watch):45
拷贝(fork):263
贡献人数:2
仓库大小:6 MB
主要开发语言:Python
语言分布:Python:80.20%、MATLAB:13.43%、Cuda:4.91%、Shell:1.28%、C++:0.13%、Makefile:0.05%
作者动态:
综合推荐指数
2星
项目概述
安装
- 克隆存储库:
git clone --recursive https://github.com/mahyarnajibi/SSH.git
- 安装cuDNN和NCCL(用于多GPU培训)。
- Caffe和pycaffe:你需要编译caffe-ssh一个与SSH兼容的Caffe fork存储库。应该使用cuDNN,NCCL和python层支持(默认情况下设置Makefile.config.example)构建Caffe 。你还需要make pycaffe。
- 安装python要求:
pip install -r requirements.txt
- make在lib目录中运行:
cd lib
make
运行演示
要运行演示,首先,您需要下载提供的预训练SSH模型。运行以下脚本会将SSH模型下载到其默认目录路径中:
bash scripts/download_ssh_model.sh
默认情况下,模型将保存到名为的文件夹中data/SSH_models(data如果计划使用外部路径,则可以创建符号链接)。
下载SSH模型后,您可以使用默认配置运行演示,如下所示:
python demo.py
如果一切顺利,以下检测应保存为data/demo/demo_detections_SSH.png。
有关可能的选项列表: python demo.py --help
训练模型
对于WIDER数据集的培训,您需要从数据集网站下载WIDER面部训练图像和面部注释。应将这些文件复制到(如果您希望将实际数据存储在其他位置,则可以创建符号链接)。data/datasets/wider/
您还需要下载预先培训的VGG-16 ImageNet模型。以下脚本将模型下载到默认目录中:
bash scripts/download_imgnet_model.sh
在开始训练之前,你应该有一个目录结构如下:
data
|--datasets
|--wider
|--WIDER_train/
|--wider_face_split/
|--imagenet_models
|--VGG16.caffemodel
对于使用默认参数进行训练,您可以main_train使用GPU ID列表调用模块。举个例子:
python main_train.py --gpus 0,1,2,3
有关运行的所有可能选项的列表python main_train.py --help。
请注意,默认训练参数(例如迭代次数,步长和学习速率)是针对4 GPU的训练设置的,如本文所述。
可以通过将外部配置文件传递给模块来覆盖所有SSH默认设置和配置(保存在其中SSH/configs/default_config.yml)(例如,--cfg [path-to-config-file]参见SSH/configs配置文件)。
默认情况下,模型保存到output/[EXP_DIR]/[db_name]/文件夹(EXP_DIR设置为ssh默认情况下,可以通过配置文件进行更改,并且db_name会wider_train在这种情况下)。
评估训练有素的模型
对WIDER数据集的评估基于需要MATLAB的官方WIDER评估工具。您需要从WIDER 数据集网站下载验证图像和注释(如果没有下载用于培训) 。应将这些文件复制到目录中,如下所示: data/datasets/wider
data
|--datasets
|--wider
|--WIDER_val/
|--wider_face_split/
可以通过调用main_test模块使用默认配置执行评估:
python main_test.py --model [path-to-the-trained-model]
有关运行的可能选项列表python main_test.py --help。
可以通过将外部配置文件传递给模块来覆盖所有SSH默认设置和配置(保存在其中SSH/configs/default_config.yml)(例如,--cfg [path-to-config-file]参见SSH/configs配置文件)。
评价输出被保存到output/[EXP_DIR]/[db_name]/[net_name](EXP_DIR被设置为ssh缺省,并且可以通过使配置文件被改变,net_name可以直接传递到模块,被设置为SSH缺省,并且db_name 将wider_val在此情况下)。这包括将检测文件保存为名为的文件夹detections,将检测项保存为pickle文件,以及WIDER保存在名为的文件夹中的评估图wider_plots。
请注意,检测将默认缓存,不会再次重新计算(可以通过传递--no_cache参数来禁用缓存。)
项目地址
https://github.com/mahyarnajibi/SSH
程序员新视界:分享有趣、有料的程序员话题,每天进步一点点。