解释概述

人脸检测是指在图像或视频中检测出人脸的位置和大小。这个过程通常使用计算机视觉技术来实现。计算机会根据一些特征,比如肤色、面部轮廓等,来判断图像中是否存在人脸,并且确定人脸的位置和大小。人脸检测在很多应用中都有广泛的应用,比如人脸识别、视频监控等。

人脸识别是指在已知的人脸数据库中匹配并识别出一张或多张人脸。这个过程通常使用人工智能和机器学习技术来实现。计算机会通过学习已知的人脸数据库中的特征,比如面部轮廓、眼睛位置等,来识别新的人脸。人脸识别在安全领域、社交媒体等方面都有广泛的应用。

Robotpipe

robotpipe Python Library is an artificial intelligence learning library, including mainstream advanced artificial intelligence libraries, such as InsightFace, yolov8, paddleocr, etc.

本项目具备如下推理功能:

  • 人脸检测
  • 人脸识别
  • 人脸年龄与性别识别
  • 人脸106个特征点
  • 换脸

B站演示地址

安装

安装opencv

  1. pip install opencv-python-headless==4.6.0.66
  2. pip install opencv-python==4.6.0.66
  3. pip install opencv-contrib-python==4.6.0.66

安装onnxruntime

  1. pip install onnxruntime

若你的电脑支持gpu,可以进入如下安装

  1. pip install onnxruntime-gpu

pip安装

  1. pip install robotpipe

若安装失败,请指定安装路径

  1. pip install robotpipe -i https://pypi.tuna.tsinghua.edu.cn/simple

导入模型文件

在用户目录下新建.robotpipe文件夹

  1. C:\Users\KAI\.robotpipe\models
  2. models里面放入权重文件

从百度网盘中下载权重文件,并解压释放进去

功能演示

人脸检测

detect.jpg
人脸检测与识别 - 图2

  1. from robotpipe import FaceDetection
  2. from robotpipe import draw_faces
  3. import cv2 as cv
  4. import numpy as np
  5. if __name__ == '__main__':
  6. face_detection = FaceDetection()
  7. img = cv.imread('images/trump1.jpg')
  8. faces = face_detection.predict(img)
  9. dst = draw_faces(img,faces)
  10. cv.imshow('img',dst)
  11. cv.waitKey(0)

人脸识别

recog.jpg
人脸检测与识别 - 图4

  1. from robotpipe import FaceRecognition
  2. import cv2 as cv
  3. import numpy as np
  4. if __name__ == '__main__':
  5. face_recognition = FaceRecognition()
  6. trump1 = cv.imread('images/trump1.jpg')
  7. trump2 = cv.imread('images/trump2.jpg')
  8. # 获取人脸特征
  9. feats1 = face_recognition.predict(trump1)
  10. feats2 = face_recognition.predict(trump2)
  11. sim = face_recognition.compute_sim(feats1,feats2)
  12. # 根据相似度,输出结果
  13. if sim<0.2:
  14. conclu = 'they are not the same'
  15. elif sim>=0.2 and sim<0.28:
  16. conclu = 'they are looks like the same people'
  17. else:
  18. conclu = 'they are the same people'
  19. print(sim,conclu)
  20. cv.imshow('trump1',trump1)
  21. cv.imshow('trump2',trump2)
  22. cv.waitKey(0)

人脸年龄与性别识别

genderage.jpg

  1. from robotpipe import FaceAttribute
  2. from robotpipe import draw_faces
  3. import cv2 as cv
  4. import numpy as np
  5. if __name__ == '__main__':
  6. face_attr = FaceAttribute()
  7. img = cv.imread('images/trump1.jpg')
  8. # 获取人脸特征
  9. faces = face_attr.predict(img)
  10. # 1 表示男性, 0,表示女性
  11. print(faces[0])
  12. dst = draw_faces(img,faces)
  13. cv.imshow("images/1.jpg",dst)
  14. cv.waitKey(0)

人脸106个特征点

landmark.jpg

  1. from robotpipe import FaceLandmark
  2. import cv2 as cv
  3. import numpy as np
  4. from heimarobot import draw_faces,draw_landmarks
  5. if __name__ == '__main__':
  6. face_attr = FaceLandmark()
  7. trump1 = cv.imread('images/trump1.jpg')
  8. # 获取人脸特征106个特征点
  9. faces = face_attr.predict(trump1)
  10. retimg = draw_landmarks(trump1,faces)
  11. cv.imshow('trump1_landmark',retimg)
  12. cv.waitKey(0)

换脸

swapper.jpg

  1. from robotpipe import FaceSwapper
  2. import cv2 as cv
  3. import numpy as np
  4. if __name__ == '__main__':
  5. face_swapper = FaceSwapper()
  6. trump1 = cv.imread('images/trump1.jpg')
  7. target = cv.imread('images/1.jpg')
  8. sourceFace = face_swapper.get_source_face(trump1)
  9. dst = face_swapper.predict(sourceFace, target)
  10. cv.imshow("trump1",trump1)
  11. cv.imshow("1",target)
  12. cv.imshow("dst", dst)
  13. cv.waitKey()

若运行代码出现一下错误,则是opencv-python-headlessopencv-python版本不匹配的原因

  1. cv2.error: OpenCV(4.7.0) D:\a\opencv-python\opencv-python\opencv\modules\highgui\src\window.cpp:1272: error: (-2:Unspecified error) The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Cocoa support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script in function 'cvShowImage'

卸载opencv-python-headless,重新安装

  1. pip install opencv-python-headless==4.6.0.66
  2. pip install opencv-python==4.6.0.66
  3. pip install opencv-contrib-python==4.6.0.66

本项目参考以下工程:

InsightFace
PaddleOCR
yolov8