【深度学习图片】图片清洗,只留下图像中只有一张人脸的,而且人脸是全的

环境:

bash 复制代码
conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia -y

pip install onnx==1.15 onnxruntime-gpu==1.17

pip install insightface==0.7.3

pip install opencv-python

pip install gradio

图片清洗,只留下图像中只有一张人脸的,而且人脸是全的。

bash 复制代码
import os
import shutil

import cv2
import numpy as np
from insightface.app import FaceAnalysis


def is_full_face(facedata, img_shape, threshold=0.5):
    """
    判断是否为整张脸
    :param facedata: 人脸数据
    :param img_shape: 图片尺寸
    :param threshold: 阈值
    :return: 布尔值,True 表示整张脸,False 表示部分脸
    """
    img_width, img_height = img_shape[1], img_shape[0]

    # 检查人脸关键点是否在图片内部
    kps = facedata['kps']
    if np.all(kps >= 10) and np.all(kps[:, 0] <= img_width - 10) and np.all(kps[:, 1] <= img_height - 10):
        keypoints_inside = True
    else:
        keypoints_inside = False

    # 满足阈值并且关键点在图片内部
    return keypoints_inside


def listPathAllfiles(dirname):
    result = []
    for maindir, subdir, file_name_list in os.walk(dirname):
        for filename in file_name_list:
            apath = os.path.join(maindir, filename)
            result.append(apath)
    return result


# 使用的检测模型名为 buffalo_sc
app = FaceAnalysis(name='buffalo_sc', providers=['CUDAExecutionProvider'])
app.prepare(ctx_id=0, det_size=(640, 640))  # ctx_id 小于0 表示用 CPU 预测,det_size 表示 resize 后的图片分辨率

src = r"C:\Users\Administrator\Pictures\girl_no_train\mangguo_dst"
dst = r"C:\Users\Administrator\Pictures\girl_no_train\mangguo_dst2"
os.makedirs(dst, exist_ok=True)

files = listPathAllfiles(src)
for file in files:
    img = cv2.imread(file)  # 读取图片
    faces = app.get(img)  # 得到人脸信息
    if len(faces) == 0:
        continue
    if len(faces) > 1:
        continue
    for facedata in faces:
        if is_full_face(facedata, img.shape):
            # print("This is a full face.")
            shutil.copy(file, dst)
相关推荐
LabVIEW开发1 小时前
LabVIEW 机载 DIAL:每秒万次甲烷测量
人工智能·labview·labview知识·labview功能·labview程序
飞猫的边缘AI2 小时前
英特尔量子生意
人工智能·量子计算·边缘ai
深蓝AI2 小时前
桌面 Agent 缺的不是视觉:Vercel 开源 agent-desktop,用无障碍树 ref 替代截图坐标
人工智能·程序员
镜子AI2 小时前
镜子AI 技术复盘:三条自动化链路上的“停止条件“设计
运维·人工智能·自动化
向哆哆2 小时前
羊行为目标检测数据集:4类别、2,000张图像 | 目标检测
人工智能·yolo·目标检测·目标跟踪
如若1233 小时前
【论文复现】CoFailMed:从零复现医学图像分割的共享失败审计,含完整代码流程与科研绘图
人工智能·python
赛博守夜人3 小时前
AI安全攻防与治理之十六:对抗样本、恶意文件与多模态攻击,AI 内容安全检测的真实盲区
人工智能·安全
罗西的思考3 小时前
【轻量化复刻大模型 / KIMI K3】KDA(Kimi Delta Attention):并行
人工智能·算法·机器学习
yh弓长4 小时前
Agent 的 ReAct、Plan、Execute、Reflection 模式
人工智能
GlobalInfo4 小时前
2026年全球机器人用超平执行器市场研究报告:市场规模达7.51亿美元,人形机器人商业化与轻量化运动控制需求推动行业增长
大数据·人工智能·数码相机·microsoft·机器人