Resumo da API e aplicação da detecção facial face_recognition

face_recognition é a biblioteca de reconhecimento facial mais simples do mundo, você pode usá-la por meio de referência Python ou linha de comando para gerenciar e reconhecer faces. Este pacote de software usa o algoritmo de aprendizado profundo mais avançado para reconhecimento facial em dlib, fazendo com que a taxa de precisão de reconhecimento atinja 99,38% no conjunto de dados de rostos rotulados no mundo.

Ao instalar face_recognition, você precisa primeiro instalar a biblioteca dlib. A biblioteca dlib é uma biblioteca python para detecção de pontos-chave faciais, mas por ser escrita em C++, ela precisa de algumas dependências e é mais complicada. Recomenda-se usar a instalação conda para baixar automaticamente as dependências relacionadas.

instalação da biblioteca face_recognition

# 安装dlib
conda install -c https://conda.anaconda.org/conda-forge dlib
# -i https://pypi.tuna.tsinghua.edu.cn/simple 国内下载比较慢,清华镜像
pip install face_recognition -i https://pypi.tuna.tsinghua.edu.cn/simple

Introdução às APIs comuns

load_image_file(arquivo, mode='RGB')

Carregue um arquivo de imagem em um objeto do tipo array numpy.
parâmetro:

  • arquivo: o nome do arquivo de imagem a ser carregado
  • mode: O formato da imagem convertida. Apenas "RGB" (RGB de 8 bits, 3 canais) e "L" (preto e branco) são suportados
  • return: um objeto do tipo numpy array contendo os dados da imagem

face_landmarks(face_image,face_locations=Nenhum,model=“grande”)

Dada uma imagem, extraia a localização das características faciais para cada rosto na imagem

parâmetro:

  • face_image: insira a imagem do rosto
  • face_locations=None: parâmetro opcional, o valor padrão é None, representando cada face na imagem decodificada padrão. Se você inserir face_locations()[i], poderá especificar a face para decodificação
  • model="large": O modelo de recurso de saída, o padrão é "large" e "small" é opcional. Quando "pequeno" é selecionado, apenas o olho esquerdo, o olho direito e a ponta do nariz são extraídos.

face_encodings(face_image, known_face_locations=Nenhum, num_jitters=1)

Dada uma imagem, retorne as 128 codificações de face (vetores de recursos) para cada face na imagem.
parâmetro:

  • face_image: insira a imagem do rosto
  • known_face_locations: parâmetro opcional, se você souber a caixa delimitadora onde cada face está localizada
  • num_jitters=1: Número de vezes para reamostrar ao calcular a codificação. Maior é mais preciso, mas mais lento (100 será 100 vezes mais lento)
  • retorno: uma lista de codificação de face de 128 dimensões

batch_face_locations(imagens, number_of_times_to_upsample=1, batch_size=128)

Dada uma imagem, retorna a posição de cada face na imagem
Parâmetros:

  • img: uma imagem (tipo de matriz numpy)
  • number_of_times_to_upsample: Quantas vezes encontrar faces a partir das amostras de imagens. Quanto maior o valor deste parâmetro, menor a face pode ser encontrada.
  • modelo: qual modelo de detecção facial usar. "hog" é menos preciso, mas roda mais rápido em CPUs, "cnn" é mais preciso e profundo (e acelerado por GPU/CUDA, se houver suporte a GPU disponível), o padrão é "hog"
  • return: uma lista de tuplas, cada tupla na lista contém a posição da face (superior, direita, inferior, esquerda)

compare_faces(known_face_encodings, face_encoding_to_check, tolerância=0,6)

Compare a lista de codificações faciais e codificações candidatas para ver se elas correspondem.
parâmetro:

  • known_face_encodings: lista de codificações de face conhecidas
  • face_encoding_to_check: dados de codificação de face única a serem comparados
  • tolerância: Quanta distância entre duas faces é considerada uma correspondência. Quanto menor o valor, mais estrito o contraste e 0,6 é um valor ideal típico.
  • return: Uma lista de valores True ou False indicando o resultado correspondente para cada membro da lista known_face_encodings

face_distance(face_encodings, face_to_compare)

Dado um conjunto de codificações faciais, compare-as com as codificações faciais conhecidas para obter a distância euclidiana. Para cada face comparada, a distância euclidiana representa quão semelhantes são as faces.
parâmetro:

  • faces: lista de códigos faciais para comparar
  • face_to_compare: dados de codificação de face única a serem comparados
  • tolerância: Quanta distância entre duas faces é considerada uma correspondência. Quanto menor o valor, mais rigorosa a comparação, 0,6 é um valor ideal típico
  • retorno: um ndarray numpy, a distância euclidiana na matriz corresponde à ordem da matriz de faces uma a uma

prática de código de aplicativo de reconhecimento facial:

Pontos importantes

from PIL import Image, ImageDraw
import face_recognition
# Load the jpg file into a numpy array
image = face_recognition.load_image_file("./data/zjl.jpg")
# Find all facial features in all the faces in the image
ace_landmarks_list = face_recognition.face_landmarks(image)

pil_image = Image.fromarray(image)

for face_landmarks in face_landmarks_list:
    draw = ImageDraw.Draw(pil_image, 'RGBA')
    for key in face_landmarks.keys():
        #左图
        draw.point(face_landmarks[feature_key],fill=(256, 256, 256))
        #右图
        #draw.line(face_landmarks[feature_key], width=5)
    pil_image.show()    

Efeito de execução de código:
insira a descrição da imagem aqui insira a descrição da imagem aqui

Referências:
https://github.com/ageitgey/face_recognition

Acho que você gosta

Origin blog.csdn.net/Peyzhang/article/details/126321202
Recomendado
Clasificación