Realice el reconocimiento de imágenes basado en face_recognition

Face Recognition es una biblioteca de reconocimiento facial basada en Python. También proporciona una herramienta de línea de comandos que le permite realizar operaciones de reconocimiento facial en imágenes en cualquier carpeta a través de la línea de comandos.

La biblioteca está construida utilizando la tecnología de reconocimiento facial de aprendizaje profundo de primer nivel de dlib, y tiene una tasa de precisión del 99,38% en el punto de referencia de la base de datos de detección de rostros en exteriores (punto de referencia de Faces in the Wild).

Esta publicación de blog utiliza face_recognition para implementar un reconocimiento de imagen simple.

Las imágenes a reconocer se encuentran en la carpeta unknow_people: Fan Bingbing, Yang Ying, Liu Yifei, Di Lieba, Deng Chao.

Las imágenes reconocidas por la computadora están en la carpeta know_people: Liu Yifei y Di Lieba

Utilice face_recognition para comparar las imágenes de la carpeta unknow_people con las imágenes de la carpeta know_people para el reconocimiento de imágenes.

import face_recognition
import os

# 获取图片名列表
# 只读取文件名以'.png'或'.jpg'或'.jpeg'结尾的图片
unknow_people_list = [i for i in os.listdir('unknow_people') if (i.endswith('.jpg')) or (i.endswith('.png')) or (i.endswith('.jpeg'))]
know_people_list = [i for i in os.listdir('know_people') if (i.endswith('.jpg')) or (i.endswith('.png')) or (i.endswith('.jpeg'))]


def face_select():
    # 定义flag
    flag = 0
    for unknow_people in unknow_people_list:
        # 读取待识别图片
        unknow = face_recognition.load_image_file('unknow_people/' + unknow_people)
        # 待识别图片转化为特征向量
        unknow_encode = face_recognition.face_encodings(unknow)[0]
        for know_people in know_people_list:
            # 读取计算机已经认识的图片
            know = face_recognition.load_image_file('know_people/'+know_people)
            # 图片转化为特征向量
            know_encode = face_recognition.face_encodings(know)[0]
            # 两张图片进行比较
            # tolerance刻画了比较的难易程度,值越小越难
            res = face_recognition.compare_faces([know_encode],unknow_encode,tolerance=0.5)
            if res[0]:
                flag = 1
                break
            else:
                flag = 0
        if flag == 1:
            print(f'匹配{unknow_people.split(".")[0]}')
        else:
            print(f'未匹配{unknow_people.split(".")[0]}')


if __name__ == '__main__':
    face_select()

Los resultados son los siguientes:

El resultado de la operación es el esperado: solo hay Liu Yifei y Di Lieba en la carpeta know_people, por lo que el código solo coincide con Liu Yifei y Di Lieba, pero no con Deng Chao, Yang Ying y Fan Bingbing.

También soy un poco blanco de la visión por computadora, y espero poder seguir aprendiendo de todos y hacer un progreso continuo ~

Supongo que te gusta

Origin blog.csdn.net/gf19960103/article/details/89914024
Recomendado
Clasificación