«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Руководство для начинающих по обнаружению объектов в Python

Руководство для начинающих по обнаружению объектов в Python

Опубликовано 2 ноября 2024 г.
Просматривать:128

A Beginner’s Guide to Object Detection in Python

Обнаружение объектов — одна из самых интересных областей компьютерного зрения, позволяющая машинам распознавать и определять местонахождение объектов на изображениях или видео. Это руководство познакомит вас с обнаружением объектов с помощью Python и поможет вам реализовать базовый конвейер обнаружения с помощью популярных библиотек. Независимо от того, являетесь ли вы новичком или хотите развить имеющиеся навыки, это руководство предоставит вам необходимую информацию для начала работы.


Что такое обнаружение объектов? ?

Обнаружение объектов включает в себя две основные задачи:

  1. Классификация изображения: определение объекта, присутствующего на изображении.
  2. Локализация объекта: определение положения объекта с помощью ограничивающих рамок.

Это делает ее более сложной, чем простая классификация изображений, где модель просто прогнозирует метки классов. Обнаружение объекта требует прогнозирования как класса, так и местоположения объекта на изображении.


Популярные алгоритмы обнаружения объектов?

1. ЙОЛО (Ты смотришь только один раз)

  • Известная своей скоростью, YOLO — это система обнаружения объектов в реальном времени, которая одновременно прогнозирует ограничивающие рамки и вероятности классов.

2. SSD (одиночный детектор MultiBox)

  • SSD обнаруживает объекты за один проход и превосходно обнаруживает объекты в разных масштабах с использованием карт объектов.

3. Более быстрый R-CNN

  • Двухэтапная модель, которая сначала генерирует предложения регионов, а затем классифицирует их. Он точнее, но медленнее, чем YOLO и SSD.

Настройка среды Python ?️

Чтобы начать обнаружение объектов в Python, вам понадобится несколько библиотек.

Шаг 1. Установите Python

Зайдите на сайт python.org и загрузите последнюю версию Python (3.8 ).

Шаг 2. Установите необходимые библиотеки

Мы будем использовать OpenCV для обработки изображений и TensorFlow для обнаружения объектов.

pip install opencv-python tensorflow

При желании установите Matplotlib для визуализации результатов обнаружения.

pip install matplotlib

Предварительно обученные модели для обнаружения объектов?

Вместо обучения с нуля используйте предварительно обученные модели из TensorFlow's Object Detection API или PyTorch. Предварительно обученные модели экономят ресурсы за счет использования таких наборов данных, как COCO (общие объекты в контексте).

В этом уроке мы будем использовать ssd_mobilenet_v2 от TensorFlow, быструю и точную предварительно обученную модель.


Обнаружение объектов с помощью TensorFlow и OpenCV ?‍?

Вот как реализовать простой конвейер обнаружения объектов.

Шаг 1. Загрузите предварительно обученную модель

import tensorflow as tf

# Load the pre-trained model
model = tf.saved_model.load("ssd_mobilenet_v2_fpnlite_320x320/saved_model")

Вы можете скачать модель из зоопарка моделей TensorFlow.

Шаг 2. Загрузите и обработайте изображение

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, ...]

Шаг 3. Выполните обнаружение объектов

# 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)

Шаг 4: Визуализируйте результаты

# 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 %, отфильтровывая обнаружения с низкой достоверностью.


Продвинутые темы?

Готовы поднять свои навыки обнаружения объектов на новый уровень?

  • Обнаружение пользовательских объектов: обучите пользовательскую модель на собственном наборе данных с помощью TensorFlow или PyTorch.
  • Обнаружение в реальном времени: применяйте обнаружение объектов к видеопотокам в реальном времени для таких приложений, как безопасность или автономное вождение.
  • Развертывание периферийных устройств: оптимизируйте модели обнаружения объектов для мобильных устройств и устройств Интернета вещей.

Заключение ?

Обнаружение объектов в Python открывает мир возможностей в таких отраслях, как здравоохранение, безопасность и автономное вождение. С помощью таких инструментов, как TensorFlow и OpenCV, вы можете быстро реализовать конвейеры обнаружения, используя предварительно обученные модели, такие как YOLO или SSD. Освоив основы, вы сможете изучить более сложные темы, такие как обнаружение в реальном времени и обучение пользовательской модели.

Где вы будете применять обнаружение объектов в следующий раз? Давайте обсудим в комментариях ниже!


Ключевые слова: обнаружение объектов, Python, компьютерное зрение, OpenCV, TensorFlow, YOLO, SSD, Faster R-CNN.

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/abhinowww/a-beginners-guide-to-object-detection-in-python-5ahp?1 Если есть какие-либо нарушения, свяжитесь с [email protected], чтобы удалить это
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3