A detecção de objetos é uma das áreas mais interessantes da visão computacional, permitindo que máquinas reconheçam e localizem objetos em imagens ou vídeos. Este guia apresentará a detecção de objetos usando Python, ajudando você a implementar um pipeline de detecção básico com bibliotecas populares. Quer você seja um iniciante ou queira desenvolver suas habilidades existentes, este tutorial fornecerá informações essenciais para começar.
A detecção de objetos envolve duas tarefas principais:
Isso o torna mais complexo do que a simples classificação de imagens, onde o modelo apenas prevê rótulos de classe. A detecção de objetos requer a previsão da classe e da localização do objeto na imagem.
Para iniciar a detecção de objetos em Python, você precisará de algumas bibliotecas.
Acesse python.org e baixe a versão mais recente do Python (3.8).
Usaremos OpenCV para processamento de imagens e TensorFlow para detecção de objetos.
pip install opencv-python tensorflow
Opcionalmente, instale o Matplotlib para visualizar os resultados da detecção.
pip install matplotlib
Em vez de treinar do zero, use modelos pré-treinados da API de detecção de objetos do TensorFlow ou do PyTorch. Modelos pré-treinados economizam recursos aproveitando conjuntos de dados como COCO (Common Objects in Context).
Para este tutorial, usaremos o ssd_mobilenet_v2 do TensorFlow, um modelo pré-treinado rápido e preciso.
Veja como implementar um pipeline simples de detecção de objetos.
import tensorflow as tf # Load the pre-trained model model = tf.saved_model.load("ssd_mobilenet_v2_fpnlite_320x320/saved_model")
Você pode baixar o modelo do zoológico de modelos do TensorFlow.
import cv2 import numpy as np # Load an image using OpenCV image_path = 'image.jpg' image = cv2.imread(image_path) # Convert the image to a tensor input_tensor = tf.convert_to_tensor(image) input_tensor = input_tensor[tf.newaxis, ...]
# Run inference on the image detections = model(input_tensor) # Extract relevant information like bounding boxes, classes, and scores num_detections = int(detections.pop('num_detections')) detections = {key: value[0, :num_detections].numpy() for key, value in detections.items()} boxes = detections['detection_boxes'] scores = detections['detection_scores'] classes = detections['detection_classes'].astype(np.int64)
# Draw bounding boxes on the image for i in range(num_detections): if scores[i] > 0.5: # Confidence threshold box = boxes[i] h, w, _ = image.shape y_min, x_min, y_max, x_max = box start_point = (int(x_min * w), int(y_min * h)) end_point = (int(x_max * w), int(y_max * h)) # Draw rectangle cv2.rectangle(image, start_point, end_point, (0, 255, 0), 2) # Display the image cv2.imshow("Detections", image) cv2.waitKey(0) cv2.destroyAllWindows()
Este código carrega uma imagem, detecta objetos e os visualiza com caixas delimitadoras. O limite de confiança é definido como 50%, filtrando as detecções de baixa confiança.
Pronto para levar suas habilidades de detecção de objetos para o próximo nível?
A detecção de objetos em Python abre um mundo de possibilidades em setores como saúde, segurança e direção autônoma. Com ferramentas como TensorFlow e OpenCV, você pode implementar rapidamente pipelines de detecção usando modelos pré-treinados como YOLO ou SSD. Quando estiver familiarizado com o básico, você poderá explorar tópicos mais avançados, como detecção em tempo real e treinamento de modelo personalizado.
Onde você aplicará a detecção de objetos a seguir? Vamos discutir nos comentários abaixo!
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3