当前位置: 首页 > news >正文

潍城区住房和城乡建设局网站网站怎么做中英文交互

潍城区住房和城乡建设局网站,网站怎么做中英文交互,上海保洁服务网站建设,网站seo源码引言 在当今数字化时代,人脸识别技术已经广泛应用于各个领域,如安防监控、门禁系统、人脸支付等。Python 中有许多强大的库可以帮助我们实现人脸识别功能,其中 face_recognition 库以其简单易用和高效的特点受到了广大开发者的喜爱。本文将详…

引言

在当今数字化时代,人脸识别技术已经广泛应用于各个领域,如安防监控、门禁系统、人脸支付等。Python 中有许多强大的库可以帮助我们实现人脸识别功能,其中 face_recognition 库以其简单易用和高效的特点受到了广大开发者的喜爱。本文将详细介绍如何使用 face_recognition 库提取人脸嵌入向量,并基于这些向量进行人脸识别。

项目背景


face_recognition号称是世界上最简单的开源人脸识别库,可以通过Python或命令行识别和操作人脸。face_recognition提供了十分完整的技术文档和应用实例,人脸识别初学者建议研究该库上手。face_recognition的官方代码仓库为:face_recognition。face_recognition也有自己的官方中文文档,该文档详情见:face_recognition中文使用说明。

face_recognition中的人脸识别模型来自开源的机器学习库Dlib,Dlib的官方代码仓库见:dlib。大部分模型用Labeled Faces in the Wild人脸数据集进行测试,有高达99.38%的准确率。但对小孩和亚洲人脸的识别准确率尚待提升。Labeled Faces in the Wild是美国麻省大学安姆斯特分校(University of Massachusetts Amherst)制作的人脸数据集,该数据集包含了从网络收集的13,000多张面部图像。该数据集算是一个非常小型的人脸数据集。

总体而言这个项目的人脸识别模型是基于成年人的,在孩子身上效果可能会一般,如果需要更多了解请参考博客:
[深度学习] Python人脸识别库face_recognition使用教程_人脸识别,特征库-CSDN博客

假设我们有一个包含大量人脸图片的文件夹,我们希望对这些图片进行处理,提取每张图片中的人脸嵌入向量,并将处理后的图片和嵌入向量保存下来。同时,如果在处理过程中出现错误(如未检测到人脸、无法提取嵌入向量等),需要记录相应的错误信息。

实现步骤

1. 环境准备

首先,我们需要安装所需的库。可以使用以下命令进行安装:

pip install opencv-python
pip install face_recognition
pip install tqdm

这些库分别用于图像处理、人脸检测和特征提取以及进度条显示。

2. 代码实现

import os
import cv2
import time
import face_recognition
import shutil
import pickle
from tqdm import tqdm# 输入文件夹路径
input_folder = input("请输入输入文件夹的路径: ")
# 输出文件夹路径
output_folder = input("请输入输出文件夹的路径: ")
# 错误日志文件路径
error_file = os.path.join(output_folder, "error.txt")
# 嵌入向量保存文件路径
embeddings_file = os.path.join(output_folder, "face_embeddings.pkl")# 创建输出文件夹
if not os.path.exists(output_folder):os.makedirs(output_folder)# 用于保存图片 ID 和对应嵌入向量的字典
face_embeddings = {}# 检查嵌入向量文件是否存在,如果存在则加载已有数据
if os.path.exists(embeddings_file):with open(embeddings_file, "rb") as f:face_embeddings = pickle.load(f)# 获取已经处理过的图片 ID
processed_ids = set(face_embeddings.keys())# 获取输入文件夹中的图片文件列表
image_files = [filename for filename in os.listdir(input_folder) if filename.lower().endswith(('.png', '.jpg', '.jpeg'))]# 过滤掉已经处理过的图片
unprocessed_files = [filename for filename in image_files if os.path.splitext(filename)[0] not in processed_ids]def process_image(filename):image_path = os.path.join(input_folder, filename)img_id = os.path.splitext(filename)[0]  # 获取图片的唯一 IDtry:start_time = time.time()# 读取图片img = cv2.imread(image_path)# 使用更高效的人脸检测模型(可选)# 这里使用 'hog' 模型,速度相对较快,但精度可能略低face_locations = face_recognition.face_locations(img, model='hog')print(f"\n正在处理 {filename}: 检测到的人脸数量 ==> {len(face_locations)}")if len(face_locations) == 0:with open(error_file, "a") as error_log:error_log.write(f"{img_id}: No face detected.\n")return None# 提取人脸嵌入向量face_encodings = face_recognition.face_encodings(img, face_locations)if len(face_encodings) == 0:with open(error_file, "a") as error_log:error_log.write(f"{img_id}: Failed to extract face embeddings.\n")return None# 复制原始图片到输出文件夹output_path = os.path.join(output_folder, filename)shutil.copyfile(image_path, output_path)print(f"{filename} 的人脸识别检测时间: {time.time() - start_time:.2f} 秒")return img_id, face_encodingsexcept Exception as e:with open(error_file, "a") as error_log:error_log.write(f"{img_id}: Error occurred - {str(e)}\n")return None# 处理未处理的图片
for filename in tqdm(unprocessed_files, desc="正在处理图片", unit="张"):result = process_image(filename)if result is not None:img_id, face_encodings = resultface_embeddings[img_id] = face_encodings# 将嵌入向量字典保存到文件
with open(embeddings_file, "wb") as f:pickle.dump(face_embeddings, f)print("处理完成。")

3. 代码解释

3.1 路径设置和数据加载

通过 input 函数让用户输入输入文件夹和输出文件夹的路径,同时设置错误日志文件和嵌入向量保存文件的路径。如果嵌入向量文件已存在,则加载其中的数据。

3.2 图片筛选

获取输入文件夹中的所有图片文件列表,并过滤掉已经处理过的图片,只处理未处理的图片。

3.3 图片处理函数 process_image

该函数用于处理单张图片,具体步骤如下:

  • 读取图片。
  • 使用 face_recognition.face_locations 函数进行人脸检测,这里使用 'hog' 模型,速度相对较快,但精度可能略低。
  • 如果未检测到人脸,将错误信息记录到错误日志文件中。
  • 提取人脸嵌入向量,如果无法提取,同样记录错误信息。
  • 将原始图片复制到输出文件夹。
  • 返回图片 ID 和人脸嵌入向量。
3.4 处理未处理的图片

使用 for 循环依次处理未处理的图片,并使用 tqdm 库显示处理进度。

3.5 保存处理结果

将处理后的图片的 ID 和人脸嵌入向量保存到 face_embeddings 字典中,并使用 pickle 库将字典保存到文件中。

总结

通过上述步骤,我们可以使用 face_recognition 库提取人脸嵌入向量,并将处理后的图片和嵌入向量保存下来。这些嵌入向量可以用于后续的人脸识别任务,如人脸匹配、人脸分类等。同时,代码中记录了错误信息,方便我们进行调试和排查问题。

需要注意的是,face_recognition 库的 hog 模型速度较快,但精度可能略低。如果对精度有较高要求,可以考虑使用 cnn 模型,但处理速度会较慢。此外,在处理大量图片时,可以考虑使用多进程或多线程来提高处理效率。

希望本文对你理解和使用 face_recognition 库进行人脸识别有所帮助,下一期我们来做人脸比对来获取同一个人的不同图片。

http://www.dtcms.com/a/513308.html

相关文章:

  • 厨房电子秤方案:厨房秤常规的功能有那些?
  • 旅游景点网站模板大全哪家网站开发培训好
  • FontBook for mac字体管理工具
  • 网站聚合页面芙蓉区建设局网站
  • 美容店网站建设网站做海康直播
  • 网站如何做留言板mxd 主题Wordpress
  • 为什么里程碑设置不清晰会拖慢进度
  • 搭建影视网站wordpress修改登陆界面
  • php做企业网站需要多久模仿别人网站
  • 丰和园林建设集团网站wordpress模板结构
  • 推广网站建设做外贸一般看什么网站
  • 网站建站六个目标ip网站查询服务器
  • 【Java全栈项目定制开发】承接各类程序编写与系统开发任务
  • 【队列 + 宽搜(BFS)】4. 在每个树⾏中找最⼤值(medium)
  • 泰安有口碑的企业建站公司建设外贸网站的细节
  • 360免费建站软仵下载查看网站被恶意镜像
  • 一个人做网站时间展厅设计手绘图
  • 怎么做门淘宝网站开发公司的安全生产工作方案
  • 用asp.net做的网站有哪些企业网站建设中有哪几个重要点
  • [人工智能-大模型-31]:大模型应用层技术栈 - 智能决策层(AI Agent)
  • 东营网站推广排名旅游景区网站建设方案文档
  • 江苏国泰做的网站案例软件开发工具性能审计不包括
  • c语言精品课程网站开发wordpress上传功能
  • 多模态大模型真的需要原生分辨率吗?
  • Kafka 概念与部署手册
  • 计算某天是某年里的第几天
  • 网站外链收录很多 内链收录几个苏州网站建设哪家好
  • 为什么要建设门户网站中企动力科技股份有限公司佛山分公司
  • 湖南智能网站建设平台阿里巴巴外贸网站首页
  • 零基础从头教学Linux(Day 53)