• Stars
    star
    448
  • Rank 96,852 (Top 2 %)
  • Language
    Python
  • Created almost 4 years ago
  • Updated almost 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

10种轻量级人脸检测算法的比拼,其中还包含人脸关键点检测与对齐,人脸特征向量提取和计算距离相似度

10种轻量级人脸检测算法的比拼

极简,高效,尽可能少的依赖第三方库,是本套程序的特点

在下载完程序后,需要下载模型文件,才能正常运行程序。由于模型文件太多,无法直接上传,可以去百度云盘下载, 链接: https://pan.baidu.com/s/16EBjFG5tj6rp0m8TadDgHg 提取码: rqfb

下载完成后一共有12个文件夹,把它们放到本仓库代码文件夹里。程序依赖pytorch和opencv,如果你的python环境里没有这两个库,那在Terminal输入pip安装。 pytorch的安装命令是 pip install torch和pip install torchvision 而opencv的安装命令是 pip install opencv-python 配置好运行环境之后,就可以运行程序了。 运行 Run_all_compare_time.py,就可以看到10种人脸检测算法的结果和运行耗时统计直方图。效果可以看我的csdn博客文章(地址是 https://blog.csdn.net/nihate/article/details/108798831 )里的图

每一种人脸检测算法,我都用一个类包装起来的,在这个类有构造函数__init__和成员函数detect。其中 centerface,dbface,retinaface,mtcnn,yoloface,libface 这六个人脸检测网络在输出检测框的同时还输出人脸里的5个关键点, 用这5个关键点可以做人脸对齐的。它们的类构造函数里有个初始化参数align是用来决定是否做人脸对齐的开关,在人脸识别系统里,人脸对齐这一步不是必选项的。

如果你想构建一个人脸识别系统,那可以先运行get_face_feature.py,它是获取人脸特征向量的,最后会生成一个已知身份的人脸特征向量的pkl文件。 在这个.py文件里,使用的人脸检测器是yoloface,如果你想换用其它的人脸检测器,那就修改主函数开头的from...import...即可。 假如你使用的人脸检测器的输出没有关键点,而你想在人脸检测后做人脸对齐,那么检测人脸关键点的功能可以使用 mtcnn_pfld_landmark.py里的类pfld_landmark,它就是PFLD人脸关键点检测,需要注意的是,它的输入是在人脸检测之后剪切出的人脸roi区域。 接下来是提取人脸特征向量,用的是arcface。

在得到人脸特征向量的pkl文件后,运行detect_face_align_rec.py,就是做人脸检测→人脸对齐→人脸识别,需要注意的是 在上一步提取已知身份的人脸特征向量的pkl文件时,get_face_feature.py使用的人脸检测器和现在detect_face_align_rec.py里使用的人脸检测器一致。

看近几年顶会的paper,在人脸检测→人脸对齐→人脸识别这三大模块里,做的最多的是人脸检测这个模块,几乎每年都有新的网络提出,我关心和感兴趣的也是人脸检测这个模块。 而在人脸识别提取特征向量这个模块,创新性的工作都是在最后的全连接层后面的loss做改动创新,怎样让同类人脸更加聚拢,让不同类人脸的间距更大。 在提取人脸特征向量这一步,目前也有很多种网络,比如ArcFace、SphereFace、CosFace等等的,如果想继续扩充现在的程序,读者可以把这些模块添加进来。

需要注意的是,这里面有blazeface,我是参考 https://github.com/hollance/BlazeFace-PyTorch/blob/master/Inference.ipynb 把blazeface修改成类的形式,程序是能正常运行的。但是blazeface要求输入图片是128x128的,这个分辨率太低了, 用本代码文件夹里的两幅图片resize到128x128,喂给blazeface做人脸检测的效果太差。 因而我就没有把blazeface加入到Run_all_compare_time.py里做比较的。

10月15日,经过这几天运行程序比较,想要做一个实时人脸识别系统,libfacedetect是做人脸检测的最佳选择, 此外,我把PFLD人脸关键点检测模型转换成onnx格式的,这样就可以使用opencv的dnn模块做PFLD人脸关键点检测, 这部分代码在libfacedetect_align_module.py里。我依然编写一个类,把libfacedetect和PFLD串联起来, 仅仅使用opencv的dnn模块,实现一个人脸+关键点检测的功能。

10月21日,我编写了retinaface的dnn版本,使得用retinaface做人脸检测,只依赖opencv的dnn模块,解码和nms后处理依赖numpy, 从而使retinaface的整个人脸检测流程彻底摆脱对pytorch的依赖。

2021年5月1日,我编写了使用OpenCV部署yolov5人脸和关键点检测,包含C++和Python两种版本的程序,源码在我的github仓库的另一个项目里,地址是: https://github.com/hpc203/yolov5-face-landmarks-opencv-v2

2021年10月17日,我编写了使用OpenCV部署SCRFD人脸和关键点检测,包含C++和Python两种版本的程序,源码在我的github仓库的另一个项目里,地址是: https://github.com/hpc203/scrfd-opencv

2021年11月6日,我编写了使用OpenCV部署libface人脸检测和SFace人脸识别,包含C++和Python两种版本的程序,源码在我的github仓库的另一个项目里,地址是: https://github.com/hpc203/libface-sface_detect-recognition-opencv 其中libface人脸检测有一个特点就是输入图像的尺寸是动态的,也就是说对输入图像不需要做resize到固定尺寸,就能输入到神经网络做推理的

有兴趣的开发者,可以把这3个人脸检测程序也添加进来

More Repositories

1

yolov5-dnn-cpp-python

用opencv的dnn模块做yolov5目标检测,包含C++和Python两个版本的程序
Python
506
star
2

YOLOP-opencv-dnn

使用OpenCV部署全景驾驶感知网络YOLOP,可同时处理交通目标检测、可驾驶区域分割、车道线检测,三项视觉感知任务,包含C++和Python两种版本的程序实现。本套程序只依赖opencv库就可以运行, 从而彻底摆脱对任何深度学习框架的依赖。
Python
259
star
3

yolov5-v6.1-opencv-onnxrun

分别使用OpenCV、ONNXRuntime部署yolov5-v6.1目标检测,包含C++和Python两个版本的程序。支持yolov5s,yolov5m,yolov5l,yolov5n,yolov5x,yolov5s6,yolov5m6,yolov5l6,yolov5n6,yolov5x6的十种结构的yolov5-v6.1
C++
242
star
4

virtual_try_on_use_deep_learning

使用深度学习算法实现虚拟试衣镜,结合了人体姿态估计、人体分割、几何匹配和GAN,四种模型。仅仅只依赖opencv库就能运行
Python
234
star
5

yolov34-cpp-opencv-dnn

基于opencv的4种YOLO目标检测,C++和Python两个版本的实现,仅仅只依赖opencv库就可以运行
C++
216
star
6

yolov8-face-landmarks-opencv-dnn

使用OpenCV部署yolov8检测人脸和关键点以及人脸质量评价,包含C++和Python两个版本的程序,只依赖opencv库就可以运行,彻底摆脱对任何深度学习框架的依赖。
Python
192
star
7

yolov7-opencv-onnxrun-cpp-py

分别使用OpenCV、ONNXRuntime部署YOLOV7目标检测,一共包含14个onnx模型,依然是包含C++和Python两个版本的程序
Python
184
star
8

bytetrack-opencv-onnxruntime

分别使用OpenCV、ONNXRuntime部署YOLOX+ByteTrack目标跟踪,包含C++和Python两个版本的程序
C++
180
star
9

yolox-opencv-dnn

使用OpenCV部署YOLOX,支持YOLOX-S、YOLOX-M、YOLOX-L、YOLOX-X、YOLOX-Darknet53五种结构,包含C++和Python两种版本的程序
C++
156
star
10

yolov5-face-landmarks-opencv-v2

更新的yolov5检测人脸和关键点,只依赖opencv库就可以运行,程序包含C++和Python两个版本的
Python
121
star
11

yolov5-dnn-cpp-python-v2

用opencv的dnn模块做yolov5目标检测,包含C++和Python两个版本的程序,优化后的
Python
114
star
12

license-plate-detect-recoginition-pytorch

深度学习车牌检测与识别,检测结果包含车牌矩形框和4个角点,基于pytorch框架运行
Python
109
star
13

scrfd-opencv

使用OpenCV部署SCRFD人脸检测,包含C++和Python两种版本的程序实现,本套程序只依赖opencv库就可以运行, 从而彻底摆脱对任何深度学习框架的依赖。
Python
106
star
14

nanodet-plus-opencv

分别使用OpenCV、ONNXRuntime部署NanoDet-Plus,包含C++和Python两个版本的程序
C++
103
star
15

yolo-fastestv2-opencv

使用OpenCV部署Yolo-FastestV2,包含C++和Python两种版本的程序
Python
103
star
16

nanodet-opncv-dnn-cpp-python

用opencv部署nanodet目标检测,包含C++和Python两种版本程序的实现
C++
101
star
17

libface-sface_detect-recognition-opencv

使用OpenCV部署libface人脸检测和SFace人脸识别,包含C++和Python两种版本的程序,仅仅只依赖OpenCV库就能运行
C++
89
star
18

yolact-opencv-dnn-cpp-python

使用opencv部署yolact实例分割,包含C++和Python两种版本的程序
Python
85
star
19

yolov5_pose_opencv

使用OpenCV部署yolov5-pose目标检测+人体姿态估计,包含C++和Python两个版本的程序。支持yolov5s,yolov5m,yolov5l
Python
71
star
20

yolopv2-opencv-onnxrun-cpp-py

分别使用OpenCV、ONNXRuntime部署YOLOPV2目标检测+可驾驶区域分割+车道线分割,一共包含54个onnx模型,依然是包含C++和Python两个版本的程序。仅仅只依赖OpenCV就能运行,彻底摆脱对任何深度学习框架的依赖。
C++
69
star
21

yolov5-detect-car_plate_corner

分别使用OpenCV、ONNXRuntime部署yolov5检测车牌和4个角点,包含C++和Python两个版本的程序
C++
68
star
22

yolov6-opencv-onnxruntime

分别使用OpenCV、ONNXRuntime部署YOLOV6目标检测,包含C++和Python两个版本的程序
C++
64
star
23

yolov5-face-landmarks-opencv

yolov5检测人脸和关键点,只依赖opencv库就可以运行,程序包含C++和Python两个版本的
Python
62
star
24

PaddleOCR-v3-onnxrun-cpp-py

使用ONNXRuntime部署PaddleOCR-v3, 包含C++和Python两个版本的程序
C++
61
star
25

rotate-yolov5-opencv-onnxrun

分别使用OpenCV、ONNXRuntime部署yolov5旋转目标检测,包含C++和Python两个版本的程序
C++
60
star
26

facefusion-onnxrun

使用onnxruntime部署facefusion换脸,包含C++和Python两个版本的程序
C++
60
star
27

yolov5-lite-onnxruntime

使用ONNXRuntime部署yolov5-lite目标检测,包含C++和Python两个版本的程序
C++
55
star
28

FaceMaskDetection-dnn

用opencv的dnn模块实现人脸口罩检测,包含C++和Python两种版本的实现
Python
53
star
29

crowdcounting-p2pnet-opencv

使用OpenCV部署P2PNet人群检测和计数,包含C++和Python两种版本的实现
C++
49
star
30

yolov7-detect-face-onnxrun-cpp-py

使用ONNXRuntime部署YOLOV7人脸+关键点检测,包含C++和Python两个版本的程序
C++
48
star
31

license-plate-detect-recoginition-opencv

使用opencv部署深度学习车牌检测与识别,包含Python和C++两种版本的实现
C++
48
star
32

libface-detect-recognition

一种适合工业级应用的基于深度学习的实时人脸检测与识别算法的C++实现,仅仅只依赖opencv库
C++
47
star
33

Yolo-Fastest-opencv-dnn

用opencv的dnn模块实现Yolo-Fastest的目标检测
Python
47
star
34

Chinese-CLIP-opencv-onnxrun

使用OpenCV+onnxruntime部署中文clip做以文搜图,给出一句话来描述想要的图片,就能从图库中搜出来符合要求的图片。包含C++和Python两个版本的程序
C++
46
star
35

Ultra-Fast-Lane-Detection-v2-opencv-onnxrun

分别使用OpenCV、ONNXRuntime部署Ultra-Fast-Lane-Detection-v2车道线检测,包含C++和Python两种版本的程序
C++
43
star
36

PP-Vehicle-onnxrun-cpp-py

使用ONNXRuntime部署百度飞桨开源PP-Vehicle车辆分析,包含车辆检测,识别车型和车辆颜色,车牌检测,车牌识别5个功能,不依赖PaddlePaddle就能运行,包含C++和Python两个版本的程序
C++
42
star
37

yolor-onnxruntime

使用ONNXRuntime部署anchor-free系列的YOLOR,包含C++和Python两种版本的程序
C++
40
star
38

FastestDet-opencv-dnn

使用OpenCV部署FastestDet,包含C++和Python两种版本的程序。模型文件不超过1M
Python
39
star
39

robustvideomatting-onnxruntime

使用ONNXRuntime部署鲁棒性视频抠图,包含C++和Python两种版本的程序
C++
38
star
40

AnimeGAN-onnxruntime

使用ONNXRuntime部署人脸动漫化——AnimeGAN,包含C++和Python两个版本的代码实现
C++
38
star
41

dbnet-barcode

使用DBNet检测条形码,包含C++和Python两种版本的程序
Python
36
star
42

Dense-Head-Pose-Estimation-Face-Mesh-3D-Face-Reconstruction

使用ONNXRuntime部署3D人脸重建,人脸Mesh,人头姿势估计,包含C++和Python两个版本的程序
C++
36
star
43

OCR-dbnet-crnn

身份证全卡面文字识别:Faster-rcnn检测图片里的证件照,DBNet检测证件照里的文字,CRNN识别证件照里的文字
Python
36
star
44

pp-yoloe-hrnet-human_pose_estimation

PP-YOLOE行人检测+HRNet人体骨骼关键点检测,使用ONNXRuntime部署,包含C++和Python两个版本的程序
Python
34
star
45

dbnet-opencv-cpp-python

使用opencv部署DBNet文字检测,包含C++和Python两种版本的实现
C++
33
star
46

GroundingDINO-onnxrun

使用onnxruntime部署GroundingDINO开放世界目标检测,包含C++和Python两个版本的程序
Python
33
star
47

u2net-onnxruntime

使用ONNXRuntime部署U-2-Net生成人脸素描画,包含C++和Python两个版本的程序
C++
32
star
48

FreeYOLO-opencv-onnxrun-cpp-py

分别使用OpenCV、ONNXRuntime部署FreeYOLO目标检测,总共包含143个onnx模型,有COCO目标检测,人脸检测,密集行人检测的三种检测功能,依然是包含C++和Python两个版本的程序
C++
31
star
49

DAMO-YOLO-detect-onnxrun-cpp-py

使用ONNXRuntime部署阿里达摩院开源DAMO-YOLO目标检测,一共包含27个onnx模型,依然是包含了C++和Python两个版本的程序
C++
31
star
50

CodeFormer-onnxrun-cpp-py

使用ONNXRuntime部署CodeFormer图像清晰修复,包含C++和Python两个版本的程序
C++
31
star
51

yoloface-landmark106

纯YOLO系列的人脸检测+106个关键点检测
Python
30
star
52

yolov7-head-detect-onnxrun-cpp-py

使用ONNXRuntime部署YOLOV7人头检测,包含C++和Python两个版本的程序
C++
30
star
53

ocr-opencv-dnn

用opencv的dnn模块做文本检测与识别,包含C++和Python两种版本的实现
Python
29
star
54

multiyolov5-opencv-onnxrun

分别使用OpenCV、ONNXRuntime部署多任务的yolov5目标检测+语义分割,包含C++和Python两个版本的程序
C++
28
star
55

polygonyolov5-opencv-onnxrun

分别使用OpenCV,ONNXRuntime部署yolov5不规则四边形目标检测,包含C++和Python两个版本的程序
C++
27
star
56

Face-restoration-models

当下热门的模糊人脸修复模型的部署,分别是:Codeformer,GFPGAN,GPEN,Restoreformer
Python
27
star
57

picodet-onnxruntime

使用ONNXRuntime部署PicoDet目标检测,包含C++和Python两个版本的程序
C++
26
star
58

PP-HumanSeg-opencv-onnxrun

分别使用OpenCV、ONNXRuntime部署PP-HumanSeg肖像分割模型,包含C++和Python两个版本的程序
C++
26
star
59

rotateyolov5-opencv-onnxrun

分别使用OpenCV,ONNXRuntime部署yolov5旋转目标检测,包含C++和Python两个版本的程序
C++
26
star
60

PP-MattingV2-onnxrun-cpp-py

使用ONNXRuntime部署百度PaddleSeg发布的实时人像抠图模型PP-MattingV2,一共包含18个onnx模型,依然是包含C++和Python两个版本的程序
C++
26
star
61

MOWA-onnxrun

使用onnxruntime部署MOWA:多合一图像扭曲模型,能处理6种图像扭曲任务,依然是包含C++和Python两个版本的程序
C++
21
star
62

LSTR-lane-detect-onnxrun-cpp-py

使用ONNXRuntime部署LSTR基于Transformer的端到端实时车道线检测,包含C++和Python两个版本的程序
C++
20
star
63

yolo-qrcode-opencv

使用OpenCV部署YOLOV3检测二维码,包含C++和Python两种版本的程序,仅仅只依赖opencv库就能运行
Python
20
star
64

Low-Light-Image-Enhancement-onnxrun

使用onnxruntime部署LYT-Net轻量级低光图像增强,包含C++和Python两个版本的程序
C++
19
star
65

Real-Time-Frame-Interpolation-onnxrun

使用onnxruntime部署实时视频帧插值,包含C++和Python两个版本的程序
C++
19
star
66

pp-yoloe-onnxrun-cpp-py

使用ONNXRuntime部署PP-YOLOE目标检测,支持PP-YOLOE-s、PP-YOLOE-m、PP-YOLOE-l、PP-YOLOE-x四种结构,包含C++和Python两个版本的程序
C++
18
star
67

DeDoDe-onnxrun-cpp-py

使用ONNXRuntime部署DeDoDe:"局部特征匹配:检测,不要描述——描述,不要检测"。依然是C++和Python两个版本的程序
C++
18
star
68

photo2cartoon-onnxrun-cpp-py

使用ONNXRuntime部署StyleGAN人像卡通画,包含C++和Python两个版本的程序
C++
18
star
69

hybridnets-opencv-dnn

使用OpenCV部署HybridNets,同时处理车辆检测、可驾驶区域分割、车道线分割,三项视觉感知任务,包含C++和Python两种版本的程序实现。本套程序只依赖opencv库就可以运行, 彻底摆脱对任何深度学习框架的依赖。
C++
18
star
70

face-gaze-estimation-opencv-dnn

使用OpenCV部署L2CS-Net人脸朝向估计,包含C++和Python两个版本的程序,只依赖opencv库就可以运行
C++
18
star
71

convertyaml2py

yolov5.yaml转换成yolov5.py
Python
17
star
72

YOLObile-opencv-dnn

使用opencv的dnn模块做YOLObile的目标检测
Python
17
star
73

M-LSD-onnxrun-cpp-py

使用ONNXRuntime部署面向轻量实时的M-LSD直线检测,包含C++和Python两个版本的程序
C++
16
star
74

CoupledTPS-opencv-dnn

使用OpenCV部署CoupledTPS,包含了肖像矫正,不规则边界的图像矩形化,旋转图像矫正,三个模型。依然是包含C++和Python两个版本的程序
C++
16
star
75

Detic-onnxrun-cpp-py

使用ONNXRuntime部署Detic检测2万1千种类别的物体,包含C++和Python两个版本的程序
C++
15
star
76

E2Pose-detect-onnxrun-cpp-py

使用ONNXRuntime部署E2Pose人体关键点检测,一共包含20个onnx模型,依然是C++和Python两个版本的程序
C++
15
star
77

gaze-estimation-opencv-dnn

使用OpenCV部署眼睛凝视估计,包含C++和Python两个版本的程序,只依赖opencv库就可以运行,彻底摆脱对任何深度学习框架的依赖。
C++
15
star
78

YOWOv2-video-action-detect-onnxrun

使用onnxruntime部署YOWOv2视频动作检测,包含C++和Python两个版本的程序
Python
15
star
79

3DDFA-V3-opencv-dnn

使用opencv部署3D人脸重建3DDFA-V3,包含C++和Python两个版本的程序,只依赖opencv库就能运行
C++
15
star
80

low-light-image-enhancement-opencv-dnn

使用OpenCV部署低光照图像增强,包含C++和Python两个版本的程序
C++
14
star
81

liveportrait-onnxrun

使用onnxruntime部署LivePortrait人像动画生成,包含C++和Python两个版本的程序
C++
14
star
82

faster-rcnn-card-opencv

使用OpenCV部署faster-rcnn检测证件照,包含C++和Python两种版本的程序,仅仅只依赖opencv库就能运行
C++
13
star
83

yolov4-opencv-dnn

使用opencv的dnn模块做yolov4目标检测
Python
13
star
84

DIS-opencv-onnxrun

分别使用OpenCV、ONNXRuntime部署DIS高精度图像二类分割,包含C++和Python两种版本的程序
C++
13
star
85

informative-drawings-onnxrun-cpp-py

使用ONNXRuntime部署Informative-Drawings生成素描画,包含C++和Python两个版本的程序
C++
12
star
86

Face-Parsing-pytorch-opencv-onnxruntime

使用BiSeNet做人脸面部解析,包含了基于pytorch, opencv, onnxruntime三种库的程序实现,并且比较了在调用三种库的输入和输出的差异
Python
12
star
87

Open-Vocabulary-Object-Detection-opencv-onnxrun

使用OpenCV+onnxruntime部署开放域目标检测,包含C++和Python两个版本的程序
C++
10
star
88

nighttime_dehaze-onnxrun

使用onnxruntime部署夜间雾霾图像的可见度增强,包含C++和Python两个版本的程序
C++
10
star
89

image_captioning-opencv-onnxrun

使用OpenCV部署图像描述Image_Captioning,包含C++和Python两个版本的程序
C++
10
star
90

centernet-opencv-onnxrun-cpp-py

分别使用OpenCV、ONNXRuntime部署CenterNet目标检测,包含C++和Python两个版本的程序
C++
9
star
91

LDC-onnxrun-cpp-py

使用ONNXRuntime部署一种用于边缘检测的轻量级密集卷积神经网络LDC,包含C++和Python两个版本的程序
C++
9
star
92

recrecnet-opencv-dnn

使用OpenCV部署RecRecNet广角图像畸变矫正,包含C++和Python两个版本的程序
C++
9
star
93

image-retouching-opencv-dnn

使用OpenCV部署图像修饰,包含C++和Python两个版本的程序
C++
9
star
94

DirectMHP-opencv-onnxrun

分别使用OpenCV、ONNXRuntime部署DirectMHP:用于全范围角度2D多人头部姿势估计,包含C++和Python两种版本的程序,一共有186个onnx文件
C++
8
star
95

Diffusion-Low-Light-onnxrun

使用onnxruntime部署Diffusion-Low-Light低光照图像增强,包含C++和Python两个版本的程序
C++
7
star
96

HAWP-onnxrun-cpp-py

使用ONNXRuntime部署HAWP线框检测,包含C++和Python两个版本的程序
C++
7
star
97

MPCount-onnxrun

使用onnxruntime部署人群计数MPCount,包含C++和Python两个版本的程序
C++
7
star
98

MVANet-BiRefNet-onnxrun

使用onnxruntime部署高精度二分类图像分割MVANet和BiRefNet,依然是包含C++和Python两个版本的程序
C++
7
star
99

PP-YOLOE-Plus-detect-onnxrun-cpp-py

使用ONNXRuntime部署百度飞桨开源PP-YOLOE-Plus目标检测,支持s、m、l、x四种结构,包含C++和Python两个版本的程序
C++
6
star
100

C2PNet-onnxrun

使用onnxruntime部署C2PNet图像去雾,包含C++和Python两个版本的程序
C++
6
star