ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

人工智能导论:人脸识别——Dlib人脸检测

2021-12-25 23:30:28  阅读:173  来源: 互联网

标签:xml 人脸识别 代码 dlib 人脸 path detector Dlib


题外话

我牙齿好痛啊!我牙齿好痛啊!我牙齿好痛啊!

注意:本博客仅供参考!

第一关:HOG特征描述方法

任务描述

本关任务:学习HOG特征的描述方法,并计算一张图片的HOG特征。

编程任务

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

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

2.调用该方法计算指定图片的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 ****************'''

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

任务描述

本关任务:使用Dlib,自己动手训练一个人脸检测模型。

编程要求

恭喜你学习完如何训练自己的人脸检测器,现在,请根据提示,在右侧编辑器中的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. 定义模型训练需要的参数
# 2.参数设定 
options = dlib.simple_object_detector_training_options()
options.C = 5
options.add_left_right_image_flips = True
options.be_verbose = False
options.num_threads = 4
'''**************** 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, save_model_path, 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)))

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

任务描述

本关任务:绘制图片中的人脸区域并保存绘制后的图片。

编程要求

根据提示,在右侧编辑器补充代码,完成人脸检测并使用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)

标签:xml,人脸识别,代码,dlib,人脸,path,detector,Dlib
来源: https://blog.csdn.net/qq_45795586/article/details/122150115

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有