头歌平台-人脸识别系统——Dlib人脸检测

EduCoder平台:人脸识别系统——Dlib人脸检测

第1关:HOG特征描述方法

编程要求:

请在右侧编辑器中的BEGIN-END之间编写代码,完成如下要求:

  • 声明OpenCV中的HOG特征描述方法;

  • 调用该方法计算指定图片的HOG特征。

代码如下:

import cv2
import numpy as np

'''****************BEGIN****************'''
img = cv2.imread("step1/image/girl1.jpg")
# 计算图片的HOG特征
hog = cv2.HOGDescriptor()

feature = hog.compute(img)
print(feature)

'''**************** END ****************'''
    

第2关:训练人脸检测模型

编程要求:

恭喜你学习完如何训练自己的人脸检测器,现在,请根据提示,在右侧编辑器中的BEGIN-END之间编写代码,完成如下要求:

  • 定义模型训练需要的参数, 其中:add_left_right_image_flips设置为True,SVM的惩罚因子C设置为5,CPU核数num_threads设置为4,be_verbose属性设置为假(False);

  • 训练模型,将模型保存到step2/my-detector.svm中;

  • 在测试集上测试模型的效果。

代码如下:

import dlib
import os
# 数据集路径
faces_folder = "step2/data/dlib_example_faces"

'''****************BEGIN****************'''
# 1. 定义模型训练需要的参数
options = dlib.simple_object_detector_training_options()
# 2.参数设定 
# 设置对数据集图片做镜像处理
options.add_left_right_image_flips = True
# 制定SVM的惩罚因子C为5
options.C = 5
# 设置训练时使用的cpu的核数为4
options.num_threads = 4
# 指定输出训练的过程中的相关信息
options.be_verbose = False

'''**************** END ****************'''

# 3. 调用训练模型函数
# 训练集xml路径
training_xml_path = os.path.join( faces_folder, "training.xml")

'''****************BEGIN****************'''
# save_model_path记录模型保存的位置,请不要修改
save_model_path ="step2/my-detector.svm"
# 训练模型
dlib.train_simple_object_detector(training_xml_path, "step2/my-detector.svm", options)
'''**************** END ****************'''

# 在测试集上检验测试结果
testing_xml_path = os.path.join(faces_folder, "testing.xml")
print("Testing accuracy: {}".format(dlib.test_simple_object_detector(testing_xml_path, save_model_path)))

第3关:检测并绘制人脸区域

编程要求:

根据提示,在右侧编辑器补充代码,完成人脸检测并使用OpenCV绘制人脸区域,并保存图片到指定路径。具体任务如下:

  • 加载官方dlib人脸检测器;

  • 调用检测器检测指定图片中的人脸;

  • 使用OpenCV绘制人脸区域。

代码如下:

import cv2
import dlib
# 读取图片
img = cv2.imread('step3/image/faces.jpg')
'''****************BEGIN****************'''
# 加载官方dlib人脸检测器
detector = dlib.get_frontal_face_detector()
# 获取到图片中所有的人脸的区域,保存在dets中
dets =  detector(img, 1)
'''**************** END ****************'''

print("检测到的人脸数目: {}".format(len(dets)))
for i, d in enumerate(dets):
    print("所在区域: {}: Left: {} Top: {} Right: {} Bottom: {}".format(i, d.left(), d.top(), d.right(), d.bottom()))
    '''****************BEGIN****************'''
    # 绘制人脸区域
    cv2.rectangle(img,(d.left(), d.top()),(d.right(), d.bottom()),(0,0,255),2)
    '''**************** END ****************'''
# 保存图片
cv2.imwrite("step3/out/new_image.jpg",img)
    

版权声明:本文为CSDN博主「Pretend ^^」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/MrKingloveyou/article/details/122115846

Pretend ^^

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

实战:使用 PyTorch 和 OpenCV 实现实时目标检测系统

点击上方“小白学视觉”,选择加"星标"或“置顶”重磅干货,第一时间送达一、引言自动驾驶汽车可能仍然难以理解人类和垃圾桶之间的区别,但这并没有使最先进的物体检测模型在过去十年中取得的惊人进步相去甚远。将其

python-OpenCV图像图形检测(四)

实例下载:图形检测,检测图形轮廓,边缘检测,轮廓拟合 一、简介 图形检测是计算机视觉的一项重要功能,通过图形检测可以分析图像中可能存在的形状,然后对这些形状进