Search
Close this search box.
Contagem de objetos em movimento com IA
IA e contagem de objetos em movimento

Posts Relacionados:

A contagem de objetos em movimento é uma das aplicações mais populares em visão computacional. Domine a implementação dessa tarefa com YOLO e Python!

Receba nossa newsletter

IA Para contagem de Objetos em Movimento

contagem de objetos em movimento YOLO

A contagem de objetos em movimento é uma das aplicações mais importantes em visão computacional, área da IA dedicada a capacitar máquinas a perceberem estímulos visuais. Ela pode ser usada em muitas tarefas, incluindo controle de estoque, de tráfego, vigilância, prevenção de furtos e muito mais.

A maioria dos algoritmos de detecção de objetos em imagens e vídeos funciona detectando objetos quadro a quadro. Para executar a contagem, um algoritmo precisa ser capaz de não apenas detectar objetos, mas rastreá-los em múltiplos quadros. Isso é feito através da atribuição de IDs.

Já falamos previamente do YOLO (You Only Look Once). Esse modelo é uma rede neural do tipo deep learning desenvolvida para tarefas de visão computacional. Popularmente conhecido por sua boa capacidade de detecção em alta velocidade, o YOLO não se restringe a isso. Ele também pode ser usado para outras tarefas, como rastreamento e contagem de objetos em movimento.

YOLO para Rastremaneto e Contagem

Para realizar contagem com YOLO, ele precisa ser instalado, o que deve ser feito preferencialmente em ambiente virtual.

				
					pip install ultralytics
				
			

Sua instalação requer também PyTorch. Como a instalação do PyTorch pode precisar de configurações adicionais, consulte a documentação oficial para obter as instruções para seu sistema. Usaremos também OpenCV cujas instruções para instalação podem ser obtidas aqui.

Para usar o YOLO em código, primeiro fazemos as importações necessárias e especificamos um modelo. Embora a versão mais recente do YOLO seja o modelo v10, usaremos o v8, pois ele tem documentação melhor:

				
					import cv2
from ultralytics import YOLO, solutions

model = YOLO("yolov8n.pt")
				
			

Contagem com IA em Código

A contagem de objetos é feita em combinação com rastreamento. O rastreamento é usado para atribuir IDs aos objetos. Para a contagem, definimos uma linha ou área numa imagem. Toda vez que um objeto rastreado cruzar a linha/área definida, o contador é incrementado. Portanto, dando sequência ao nosso código, primeiro capturamos um vídeo com OpenCV (linha 1). Em seguida, obtemos a taxa de quadros por segundo (fps) e o tamanho dos quadros (w, h) (linha 3), pois esses parâmetros são necessários para escrever um novo vídeo. Depois, definimos um objeto de escrita de vídeo para exibir as IDs e contagem (linha 4).

				
					cap = cv2.VideoCapture("SEU_VIDEO_AQUI")
assert cap.isOpened(), "Erro ao ler arquivo"
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))
video_writer = cv2.VideoWriter("object_counting_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

				
			

A contagem de objetos é feita com a definição de uma linha ou área. Para esse post, usaremos uma linha. Ela é definida com uma posição de início e outra de término.

				
					line_points = [(0, 400), (2180, 400)]

				
			

O passo seguinte é definir o contador. Ele contém vários parâmetros, incluindo os nomes das classes que serão contadas, se queremos registrar os rastreamentos, a largura da linha que será usada, etc. Para saber mais detalhes sobre cada um deles, consulte a documentação oficial.

				
					
counter = solutions.ObjectCounter(
    view_img=True,
    reg_pts=line_points,
    classes_names=model.names,
    draw_tracks=True,
    line_thickness=2,
)

				
			

Por último, realizamos a aplicação do algoritmo YOLO em si, com um loop simples. O loop aplica o algoritmo de rastreamento quadro a quadro no vídeo (linha 6), realiza a contagem e escreve as informações do contador (linha 7).

				
					while cap.isOpened():
    success, im0 = cap.read()
    if not success:
        print("O quadro de vídeo está vazio ou o processamento de vídeo foi concluído com êxito.")
        break
    tracks = model.track(im0, persist=True, show=False)
    im0 = counter.start_counting(im0, tracks)
    video_writer.write(im0)

cap.release()
video_writer.release()
cv2.destroyAllWindows()

				
			

Com esse código simples, nosso contador automático está pronto. Veja um resultado abaixo:

contagem de carros

Imagem com IA Generativa – Dia 274

IA generativa img 274

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