Обнаружение объектов — одна из самых интересных областей компьютерного зрения, позволяющая машинам распознавать и определять местонахождение объектов на изображениях или видео. Это руководство познакомит вас с обнаружением объектов с помощью Python и поможет вам реализовать базовый конвейер обнаружения с помощью популярных библиотек. Независимо от того, являетесь ли вы новичком или хотите развить имеющиеся навыки, это руководство предоставит вам необходимую информацию для начала работы.
Обнаружение объектов включает в себя две основные задачи:
Это делает ее более сложной, чем простая классификация изображений, где модель просто прогнозирует метки классов. Обнаружение объекта требует прогнозирования как класса, так и местоположения объекта на изображении.
Чтобы начать обнаружение объектов в Python, вам понадобится несколько библиотек.
Зайдите на сайт python.org и загрузите последнюю версию Python (3.8 ).
Мы будем использовать OpenCV для обработки изображений и TensorFlow для обнаружения объектов.
pip install opencv-python tensorflow
При желании установите Matplotlib для визуализации результатов обнаружения.
pip install matplotlib
Вместо обучения с нуля используйте предварительно обученные модели из TensorFlow's Object Detection API или PyTorch. Предварительно обученные модели экономят ресурсы за счет использования таких наборов данных, как COCO (общие объекты в контексте).
В этом уроке мы будем использовать ssd_mobilenet_v2 от TensorFlow, быструю и точную предварительно обученную модель.
Вот как реализовать простой конвейер обнаружения объектов.
import tensorflow as tf # Load the pre-trained model model = tf.saved_model.load("ssd_mobilenet_v2_fpnlite_320x320/saved_model")
Вы можете скачать модель из зоопарка моделей 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()
Этот код загружает изображение, обнаруживает объекты и визуализирует их с помощью ограничивающих рамок. Порог достоверности установлен на 50 %, отфильтровывая обнаружения с низкой достоверностью.
Готовы поднять свои навыки обнаружения объектов на новый уровень?
Обнаружение объектов в Python открывает мир возможностей в таких отраслях, как здравоохранение, безопасность и автономное вождение. С помощью таких инструментов, как TensorFlow и OpenCV, вы можете быстро реализовать конвейеры обнаружения, используя предварительно обученные модели, такие как YOLO или SSD. Освоив основы, вы сможете изучить более сложные темы, такие как обнаружение в реальном времени и обучение пользовательской модели.
Где вы будете применять обнаружение объектов в следующий раз? Давайте обсудим в комментариях ниже!
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3