IA para Detecção Facial
A detecção facial é uma tecnologia de IA desenvolvida para encontrar rostos humanos em imagens ou vídeos. Ela é extremamente importante para a IA porque atua como o primeiro passo para muitas outras tarefas de análise facial. Por exemplo, o reconhecimento facial, tarefa de identificar pessoas específicas, depende da detecção facial para localizar rostos.
A detecção facial tem inúmeras aplicações. Ela pode ajudar a identificar pessoas em imagens de segurança ou áreas públicas. Seu uso também pode ser feito como parte de tarefas de reconhecimento de identidade, emoções, idade e muito mais.
Rastreamento facial com IA
Rastreamento de objetos se refere à tarefa crítica de identificar a localização e a classe de objetos em um quadro de vídeo e manter um ID exclusivo para cada objeto detectado à medida que o vídeo progride. As aplicações dessa técnica são ilimitadas e abrangem desde tarefas de vigilância e segurança até análises esportivas em tempo real.
O rastreamento pode ser realizado com qualquer tipo de objeto como alvo. Para esse post, nos concentraremos no rastreamento facial. Nessa técnica, algoritmos de IA são usados para detectar rostos, atribuir IDs a eles e rastreá-los ao longo do tempo.
Detecção e Rastreamento Facial com YOLO e ByteTrack
YOLO é uma poderosa rede neural do tipo deep learning para visão computacional. Embora YOLO seja popularmente conhecido para detecção e identificação de objetos em imagens e vídeos, ele não se restringe apenas a essas tarefas. YOLO também tem capacidades para realizar tarefas ainda mais avançadas, como o rastreamento de objetos. Para rastreamento, seu algoritmo padrão é combinado com algoritmos adicionais como BoT-SORT (rastreador padrão) e ByteTrack. Neste post, usaremos o ByteTrack.
A saída dos rastreadores YOLO é consistente com a detecção de objetos padrão, mas com a adição de IDs. Isso permite o rastreamento de objetos em fluxos de vídeo em tempo real e a realização de análises subsequentes.
Bibliotecas Python
Para realizar a detecção e rastreamento facial com YOLO, usaremos o YOLOv8 para aproveitarmos o modelo pré-treinado YOLO-face. Ele requer a instalação do PyTorch (acesse esse link se precisar de instruções adicionais).
# Install pytorch for CUDA 11.7 from pip
pip3 install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
O modelo YOLO-face pré-treinado precisa ser baixado aqui. Existem vários tamanhos de modelos disponíveis, usaremos o médio.
Para fazer a instalação do YOLO com pip (para mais opções, consulte o site da Ultralytics), o comando é mostrado abaixo:
pip install ultralytics
Também usaremos OpenCV para ler e anotar vídeos.
pip install opencv-python
Rastreamento Facial com YOLO em Código
Num código Python, primeiro fazemos as importações necessárias:
import cv2
from ultralytics import YOLO
from ultralytics.utils.plotting import Annotator
Depois selecionamos o modelo do YOLO que usaremos e criamos um objeto de detecção. O modelo baixado precisa estar na mesma pasta do código ou você terá que especificar a localização correta.
model = YOLO("yolov8m-face.pt")
Rastreamento em Vídeo Quadro a Quadro
Por fim, fazemos um simples while loop que aplica o algoritmo em um vídeo quadro a quadro.
video_cap = cv2.VideoCapture("SEU_VIDEO_AQUI.mp4")
while True:
ret, frame = video_cap.read() # leitura do vídeo
controlkey = cv2.waitKey(1)
if not ret:
break
detections = model.track(frame, persist=True, tracker="bytetrack.yaml")[0] # detecta rosto e atribui ID com track
for r in detections:
annotator = Annotator(frame) # anota face detectada
boxes = r.boxes
for box in boxes:
b = box.xyxy[0] # pega as coordenadas do local da face detectada
c = box.cls
annotator.box_label(b, model.names[int(c)]) # adiciona caixa delimitadora na face
cv2.imshow("Frame", frame) # exibe vídeo
if cv2.waitKey(1) == ord("q"):
break
video_cap.release()
cv2.destroyAllWindows()
Pronto! Detecção e rastreamento facial com alta precisão em menos de 30 linhas de código. Veja um exemplo abaixo.