项目简介
本项目借助多任务级联卷积神经网络(MTCNN)达成人脸检测功能。MTCNN作为深度学习模型,综合考虑人脸检测概率、人脸边框回归以及面部关键点检测,通过多任务同时建立损失函数并训练,实现高效准确的人脸检测。
项目的主要特性和功能
- 人脸多任务检测:可同时完成人脸检测、人脸边框回归和面部关键点检测。
- 图像金字塔处理:构建图像金字塔,处理不同尺寸的人脸,提升检测的适用性。
- 两种检测方式:支持静态图像检测和摄像头实时检测,满足不同场景需求。
- 归一化操作:将图像归一化到 [-1, 1] 区间,加快收敛速度。
安装使用步骤
环境准备
安装Python和PyTorch框架,保证PyTorch版本与代码兼容。
依赖安装
使用pip安装opencv-python、PIL等必要依赖包。
代码运行
静态图像检测
参考以下代码示例: ```python from src import FaceDetector from PIL import Image
detector = FaceDetector()
image = Image.open("./images/face_1.jpg")
bboxes, landmarks = detector.detect(image)
drawed_image = detector.draw_bboxes(image) drawed_image.save("./images/drawed_image.jpg") drawed_image.show()
```
摄像头实时检测
参考以下代码示例: ```python import cv2 from src import FaceDetector from PIL import Image import numpy as np
detector = FaceDetector()
def camera_detect(): video = cv2.VideoCapture(0) while True: ret, frame = video.read()
pil_im = Image.fromarray(cv2.cvtColor(frame, cv2.COLOR_BGR2RGB))
drawed_pil_im = detector.draw_bboxes(pil_im)
frame = cv2.cvtColor(np.asarray(drawed_pil_im), cv2.COLOR_RGB2BGR)
cv2.imshow("Face Detection", frame)
if cv2.waitKey(1) & 0xFF == ord("q"):
break
video.release()
cv2.destroyAllWindows()
if name == "main": camera_detect() ```
结果查看
对于静态图像检测,可查看保存的标注图像;对于摄像头实时检测,可在屏幕上查看检测结果。
注意:本项目假设用户已经下载了本项目的源码文件,并具备运行Python代码的环境。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】