【Python】批量检测图片中的人脸并制作数据集(Dlib)

您所在的位置:网站首页 黑暗中的人脸图片 【Python】批量检测图片中的人脸并制作数据集(Dlib)

【Python】批量检测图片中的人脸并制作数据集(Dlib)

2024-07-09 17:36| 来源: 网络整理| 查看: 265

文章目录 写在前面安装依赖素材准备单图预览多图预览 人脸检测数据处理最终结果代码仓库

写在前面

本教程教你使用卷积神经网络深度学习模型批量检测图片中的人脸,并制作人脸数据集。

安装依赖

【Python】Dlib库安装教程(Windows)

素材准备

素材用我们之前在唯美女生网站爬取的17601张共1.62GB的小姐姐图片。

爬虫教程:【Python】多线程爬取某站高颜值小姐姐照片(共1.62GB) 素材下载:微软云盘 | 百度网盘(提取码:2233) | 天翼云盘

单图预览

在这里插入图片描述

多图预览

在这里插入图片描述

人脸检测

采用多线程技术批量检测图片中人脸并将其裁剪保存下来。

import os import cv2 import dlib import time from tqdm import tqdm import concurrent.futures as cf class MakeFaceDataset(): def __init__(self, srcdir, dstdir): self.srcdir = srcdir # 指定图像文件夹路径 self.dstdir = dstdir # 指定人脸文件夹路径 os.makedirs(dstdir, exist_ok=True) def crop(self, subdir): for j in tqdm(os.listdir(f'{self.srcdir}/{subdir}'), desc=subdir): in_path = f'{self.srcdir}/{subdir}/{j}' out_path = f'{self.dstdir}/{subdir}_{j.split(".")[0]}' model_path = './cnn_human_face_detect.dat' cnn_face_detector = dlib.cnn_face_detection_model_v1(model_path) img = cv2.imread(in_path) img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) img_hist = cv2.equalizeHist(img_gray) faces = cnn_face_detector(img_hist, 1) for index, face in enumerate(faces): x1 = face.rect.left() y1 = face.rect.top() x2 = face.rect.right() y2 = face.rect.bottom() cp = img[y1:y2, x1:x2] cv2.imwrite(f'{out_path}_{index+1}.jpg', cp) def main(self): with cf.ThreadPoolExecutor() as tp: for i in os.listdir(self.srcdir): tp.submit(self.crop, i) print('Face Detection Finished!') if __name__ == '__main__': MakeFaceDataset('./vmgs', './vmgs-face').main() 数据处理

对提取出来的人脸图像进行筛选,只保留长、宽都大于128的,并resize到128x128大小。

import os from tqdm import tqdm from PIL import Image import concurrent.futures as cf class DataProcessing(object): def __init__(self, srcdir, dstdir): self.srcdir = srcdir # 指定人脸文件夹路径 self.dstdir = dstdir # 指定处理后的人脸文件夹路径 os.makedirs(self.dstdir, exist_ok=True) def size(self, in_path, out_path, pbar): img = Image.open(in_path) w, h = img.size if w >= 128 and h >= 128: img = img.resize((128, 128), Image.ANTIALIAS) img.save(out_path, quality=95) else: pass pbar.update(1) def main(self): total = len(os.listdir(self.srcdir))![在这里插入图片描述](https://img-blog.csdnimg.cn/20210503113427465.jpg?x-oss-process=image,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyOTUxNTYw,size_16,color_FFFFFF,t_70#pic_center) with tqdm(total=total) as pbar: with cf.ThreadPoolExecutor() as tp: for item in os.listdir(self.srcdir): in_path = f'{self.srcdir}/{item}' out_path = f'{self.dstdir}/{item}' tp.submit(self.size, in_path, out_path, pbar) if __name__ == '__main__': DataProcessing('./vmgs-face', './vmgs-face-processing').main() 最终结果

数据处理后人脸数据集就制作好了,共8768张128x128的小姐姐人脸图像。

微软云盘:点击下载 百度网盘:点击下载 天翼云盘:点击下载

在这里插入图片描述

代码仓库

Github:https://github.com/XavierJiezou/python-vmgirls-crawl



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3