Aplicação MATLAB em reconhecimento facial: código, descrição e sintaxe
Publicados: 2020-06-23Toda vez que você desbloqueia seu celular com o rosto ou passa pelo sistema de vigilância de alta tecnologia do escritório, uma elaborada tecnologia de reconhecimento facial está operando em segundo plano. Então, o que é reconhecimento facial e como você pode realizar o reconhecimento facial usando o MATLAB ?
O reconhecimento facial é o processo de identificação de rostos humanos por meio da tecnologia. O sistema de reconhecimento facial usa técnicas de visão computacional e Machine Learning para modelar e classificar características faciais extraídas de imagens e vídeos. Algoritmos para identificação de rostos extraem e mapeiam características faciais e as comparam com um banco de dados de rostos conhecidos para encontrar a melhor correspondência.
Fonte
Índice
MATLAB em reconhecimento facial
É possível obter o reconhecimento facial usando o código MATLAB. A classe e função integradas no MATLAB podem ser usadas para detectar o rosto, olhos, nariz e boca. O sistema de visão de objeto.CascadeObjectDetector da caixa de ferramentas do sistema de visão por computador reconhece objetos com base no algoritmo de detecção de face Viola-Jones.
Descrição do Detector de Objetos MATLAB
O vision.CascadeObjectDetector faz uso do algoritmo Viola-Jones para a identificação de rostos, olhos, boca, nariz ou parte superior do corpo. Um classificador personalizado pode ser treinado usando o Image Labeler do MATLAB e usado junto com o objeto System. Então, como as características faciais ou a parte superior do corpo são detectadas em uma imagem? Aqui estão os passos:
- A primeira etapa envolve a criação do objeto vision.CascadeObjectDetector e a configuração de suas propriedades.
- Nesta etapa, o objeto é invocado com argumentos (como se estivesse se comportando como uma função).
Leia: 15 ideias e tópicos interessantes de projetos MATLAB para iniciantes

Sintaxe para a Criação do Detector de Objetos
A sintaxe utilizada para a criação do Object Detector é a seguinte:
- detector = visão.CascadeObjectDetector
- detector = vision.CascadeObjectDetector(mode1)
- Detector = vision.CascadeObjectDetector(Nome,Valor)
- detector = visão.CascadeObjectDetector(XMLFILE)
Descrição da Sintaxe
- detector = vision.CascadeObjectDetector: Esta sintaxe é utilizada para a criação de um detector que detecta objetos utilizando o algoritmo Viola-Jones.
- detector = vision.CascadeObjectDetector(mode1): Esta sintaxe é utilizada para a criação de um detector que está configurado para detectar objetos definidos pelo vetor de entrada – mode1.
- detector = vision.CascadeObjectDetector(Name,Value): Essa sintaxe é usada para definir propriedades usando um ou mais pares nome-valor, onde cada nome de propriedade é colocado entre aspas. Por exemplo: detector = vision.CascadeObjectDetector('ClassificationModel','UpperBody')
Confira: Ideias de projetos de aprendizado de máquina
Propriedades
A menos que especificado de outra forma, os recursos do Detector de Objetos em cascata não são ajustáveis, o que significa que após chamar o objeto, seus valores não podem ser alterados. Os objetos são bloqueados quando são invocados, e seu desbloqueio é feito pela função 'release'.
Por outro lado, uma propriedade ajustável significaria que seu valor pode ser alterado a qualquer momento. Então, vamos dar uma olhada em alguns dos recursos antes de entendermos o reconhecimento facial usando códigos MATLAB.
- ClassificationModel: Definida como um vetor de caracteres, esta propriedade é responsável por controlar o tipo de objeto a ser detectado. A configuração padrão do detector detecta rostos.
- MinSize: O tamanho do menor objeto reconhecível é indicado como um vetor de dois elementos [altura largura]. A menos que um valor de propriedade seja especificado, o detector o define para o tamanho da imagem usado para treinar o modelo de classificação.
- MaxSize: O tamanho do menor objeto reconhecível é indicado como um vetor de dois elementos [altura largura] . A menos que um valor de propriedade seja especificado, o detector o define como tamanho (I).
- ScaleFactor: Tem um valor especificado maior que 1,0001. Esta propriedade é para escalonamento incremental da resolução de detecção entre MinSize e MaxSize.
- MergeThreshold: Possui um valor inteiro especificado igual a 4. Caso haja múltiplas detecções ao redor de um objeto alvo, o limite define os critérios finais de detecção.
- UseROI: Especificado como false, esta propriedade pode ser definida como true para a detecção de objetos dentro de uma região retangular de interesse na imagem de entrada.
Sintaxe para usar o detector de objetos
- bbox = detector(I)
- bbox = detector(I,roi)
Descrição da Sintaxe
- bbox = detector(I) retorna bbox, uma matriz M -por-4, que define caixas delimitadoras ' M ' que contêm os objetos detectados.
- bbox = detector(I,roi) é usado para detectar objetos dentro da região retangular de interesse, especificada por roi.
Argumentos de entrada

- I — Imagem de entrada: É especificada como true color ou grayscale (RGB).
- model — Modelo de classificação: É especificado como um vetor de caracteres e descreve o tipo de objeto a ser detectado.
- XMLFILE — Modelo de classificação personalizado: especificado como um arquivo XML, pode ser criado usando a funcionalidade de treinamento OpenCV ou a função trainCascadeObjectDetector.
- roi — Região retangular de interesse: Um vetor de quatro elementos [ x y largura altura ] é usado para especificar este argumento de entrada.
Argumentos de saída
bbox — Detecções: As detecções são retornadas como uma matriz de elementos M por 4, cada linha contendo o vetor de quatro elementos [ x y largura altura ].
Funções de objeto comuns a todos os objetos do sistema
- passo: Para executar o algoritmo System Object
- release: Para liberar recursos do sistema
- reset: Para redefinir os estados internos do System Object.
Código MATLAB para reconhecimento facial
Nesta seção, veremos um exemplo de reconhecimento facial usando o código MATLAB.
Detecção de rosto
Fonte
Fonte
O step(Detector,I) retornará o valor da Bounding Box contendo [x,y,Height,Width] dos objetos sob detecção:
Fonte
Detecção de nariz
Fonte
Fonte
Descrição:
- A passagem do argumento 'Nariz' denota que o objeto de interesse é o nariz.
- A sintaxe padrão de detecção de nariz é vision.CascadeObjectDetector('Nose')
- Os valores de parâmetro padrão passados para vision.CascadeObjectDetector podem ser modificados com base na imagem de entrada.
- O valor 'MergeThreshold' pode ser substituído para evitar várias detecções em torno do objeto de destino (como na imagem acima).
Detecção de Olhos
Fonte
Fonte

Detecção de boca
Fonte
Fonte
Leia também: While loop no MATLAB: tudo o que você precisa saber
Empacotando
Embora a tecnologia de reconhecimento facial seja benéfica para a verificação da identidade pessoal, ela levanta problemas de privacidade. Como a tecnologia usa a impressão do rosto de um indivíduo, muitas vezes é considerada uma violação da privacidade, segurança e proteção de uma pessoa. O reconhecimento facial usando MATLAB pode ser empregado em vários casos em que a segurança é a maior preocupação. De aeroportos e escritórios a smartphones, o reconhecimento facial tornou-se um componente integral de muitos sistemas e organizações.
Se você estiver interessado em aprender mais sobre aprendizado de máquina, confira o PG Diploma in Machine Learning & AI do IIIT-B e upGrad, projetado para profissionais que trabalham e oferece mais de 450 horas de treinamento rigoroso, mais de 30 estudos de caso e atribuições, IIIT- B Status de ex-aluno, mais de 5 projetos práticos práticos e assistência de trabalho com as principais empresas.
O que é reconhecimento facial?
O reconhecimento facial pode ser usado para proteger contra roubo de identidade, bem como para identificar indivíduos pelo nome. No entanto, dado que o reconhecimento facial é relativamente novo e está sendo desenvolvido continuamente, é importante entender os fundamentos do reconhecimento facial para usá-lo de forma eficaz. O reconhecimento facial refere-se ao processo de determinar se uma imagem facial pertence a uma pessoa conhecida. O problema do reconhecimento facial pode ser dividido em duas tarefas: 1) Detecção de Rosto – localizar o rosto na imagem, 2) Reconhecimento de Rosto – identificação da pessoa de quem é o rosto.
O que é o Matlab?
Matlab é uma linguagem de programação para cálculo numérico. Basicamente, é uma linguagem de programação matricial. É muito usado em cálculos científicos e de engenharia. Ao contrário das outras linguagens de programação, o MATLAB foi projetado para ser uma linguagem matricial, adequada para computação em matrizes. As matrizes são usadas em muitas equações diferentes, especialmente em cálculos científicos e de engenharia. Matlab é uma linguagem de programação de alto nível que vem com um grande número de funções. É usado para resolver problemas matemáticos, analisar dados e criar gráficos.
O que é Viola Jones no Matlab?
O algoritmo Viola Jones é usado para detecção de rosto e reconhecimento de expressão facial. O algoritmo Viola Jones é baseado em Histogramas de Gradientes Orientados (HOG) que foi introduzido pela primeira vez por Paul Viola e Michael Jones em 2001. Ele é usado em visão computacional, aprendizado de máquina e processamento de imagens. O algoritmo Viola Jones fornece um sistema completo de detecção de objetos e pode ser usado na detecção de pedestres, detecção de objetos ou detecção humana. O algoritmo Viola Jones consiste em uma etapa de extração de recursos, uma etapa de agrupamento e uma etapa de classificação de objetos.