Search
Close this search box.
Inteligência artificial para vigilância: detecção de rostos com Python
Inteligência artificial para vigilância

Posts Relacionados:

Você pode se esconder de um algoritmo de detecção facial? Provavelmente não. Por isso, ele pode ser um grande aliado no monitoramento e proteção do nosso entorno. Neste post, implementaremos um sistema de detecção de rostos com Yolo, um algoritmo ideal para aplicações em tempo real.

Receba nossa newsletter

AI

Neste post, exploraremos a integração perfeita da inteligência artificial para vigilância com um algoritmo de detecção de rostos. A detecção de rostos é uma das mais importantes aplicações de inteligência artificial para vigilância. Ela também é uma das principais técnicas de visão computacional. A visão computacional também conta com algoritmos de reconhecimento facial, reconhecimento de emoções, detecção de veículos e outros objetos, além de outras técnicas.

A detecção de rostos é uma técnica que revoluciona a maneira como monitoramos e protegemos nosso entorno. Além disso, ela é facilmente implementada em Python.

Existem vários algoritmos e modelos pré-treinados de detecção de rostos disponíveis em repositórios como GitHub e em diversos sites (veja aqui, aqui e aqui). Eles podem ser usados facilmente no desenvolvimento de aplicativos para as mais variadas finalidades.

Neste post, usaremos um dos melhores algoritmos disponíveis para detecção de objetos: o yolo. Já falamos sobre o yolo antes. Ele é um algoritmo excelente de detecção de objetos em geral. Nessa postagem, utilizaremos o yolo para detecção de rostos. Além de possuir alta acurácia e ser facilmente customizado, o yolo também é rápido. Por isso, ele é ideal para aplicações que requerem processamento em tempo real.

Inteligência Artificial para Vigilância: Detecção de Rostos

Para realizar detecção de rostos com yolo, é preciso instalar as seguintes bibliotecas: ultralytics, torch (PyTorch), torchvision e OpenCV. Instale tudo preferencialmente em um ambiente virtual. Aparentemente, na data dessa postagem, o PyTorch ainda não tem suporte estável para Python 3.12, portanto, use uma versão mais antiga do Python. O código do post foi implementado em Python 3.10. Para instalar as bibliotecas com pip:

				
					pip install opencv-python ultralytics torch torchvision
				
			

Instalações com conda podem ser feitas com os comandos:

				
					conda install conda-forge::ultralytics
conda install pytorch::pytorch  
conda install pytorch::torchvision
conda install conda-forge::opencv
				
			

Detecção de Rostos em Vídeo e em Tempo Real

Faremos a detecção de rostos diretamente em vídeo. O código é bem simples. Primeiro importamos os pacotes que usaremos. O PyTorch e torchvision são usados no background.

				
					import os
import cv2
from ultralytics import YOLO
from ultralytics.utils.plotting import Annotator
				
			

Para capturar um vídeo, é necessário criar um objeto VideoCapture com OpenCV. Seu argumento pode ser o índice do dispositivo ou o nome de um arquivo de vídeo.  Para usar um arquivo de vídeo, o comando é:

				
					video_cap = cv2.VideoCapture("PATH PARA SEU VIDEO AQUI")
				
			

Um índice de dispositivo é apenas o número para especificar qual câmera abastecerá o código quando se deseja usar o yolo com vídeos captados em tempo real. Normalmente, apenas uma câmera é conectada. Então, o índice usado é 0. Se houver mais de uma câmera, a segunda câmera pode ser selecionada passando 1 e assim por diante. Portanto, para usar a câmera do computador no lugar de um arquivo de vídeo, substitua a linha de código acima pelo comando abaixo:

				
					video_cap = cv.VideoCapture(0)
				
			

Detecção de Rostos com Yolo

O uso do yolo é fácil. Primeiro, selecionamos o modelo que utilizaremos para detecção de rostos. Ele será baixado na primeira vez em que o código for executado. O yolo possui modelos de diferentes tamanhos, usaremos o modelo m que tem um tamanho intermediário.

				
					model = YOLO("yolov8m-face.pt")
				
			

Depois, basta fazer um loop pelos frames do vídeo. O código para isso é mostrado inteiro abaixo. Esse trecho de código aplica o yolo em cada frame para detectar rostos. Depois, ele faz um loop por todos os rostos detectados e anota uma caixa ao redor deles.

				
					while True:
    ret, frame = video_cap.read()
    controlkey = cv2.waitKey(1)

    if not ret:
        break
    detections = model(frame)[0] # detecta rostos
    
    for r in detections: # executa um loop pelos rostos detectados
        annotator = Annotator(frame) # anotador
        boxes = r.boxes 
        for box in boxes:
            b = box.xyxy[0]  # coordenadas dos rostos
            annotator.box_label(b) # anota coordenadas em cada rosto localizado

    cv2.imshow("Frame", frame) # mostra frame com rostos localizados
    if cv2.waitKey(1) == ord("q"):
        break

video_cap.release()
cv2.destroyAllWindows()
				
			

Abaixo mostramos um exemplo de vídeo com os rostos detectados com o yolo.

Outro exemplo só para mostrar que o yolo é bom mesmo.

Agora basta você conectar esse código numa câmera na sua residência e o Python detectará se alguém entrar sem autorização.

Imagem com IA Generativa – Dia 102

IA generativa img102

Arte com IA generativa: imagem do dia

Todos os dias, postamos um exemplo de imagem artística gerada com inteligência artificial.

Tutoriais

Postagens Mais Recentes

Outras Postagens Que Podem Interessar

Veja
Mais

Fique em contato

Se inscreva para receber nossa newsletter com novidades.

aprendiz artificial