Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Прогнозування Обмежувальних Рамок | Розділ
Прикладний комп'ютерний зір

bookПрогнозування Обмежувальних Рамок

Свайпніть щоб показати меню

Обмежувальні прямокутники є ключовими для задач виявлення об'єктів, оскільки дозволяють позначати їх розташування. Моделі для виявлення об'єктів використовують ці прямокутники для визначення позиції та розмірів знайдених об'єктів на зображенні. Точне передбачення обмежувальних прямокутників є основою надійного виявлення об'єктів.

Як CNN прогнозують координати обмежувальних прямокутників

Згорткові нейронні мережі (CNN) обробляють зображення за допомогою шарів згорток і пулінгу для виділення ознак. Для задач виявлення об'єктів CNN створюють карти ознак, які відображають різні частини зображення. Прогнозування обмежувальних прямокутників зазвичай здійснюється шляхом:

  1. Виділення ознак із зображення;
  2. Застосування регресійної функції для передбачення координат обмежувального прямокутника;
  3. Класифікації знайдених об'єктів у кожному прямокутнику.

Прогнози обмежувальних прямокутників подаються у вигляді числових значень, що відповідають:

  • (x, y): координати центру прямокутника;
  • (w, h): ширина та висота прямокутника.

Приклад: прогнозування обмежувальних прямокутників із використанням попередньо навченої моделі

Замість навчання CNN з нуля можна скористатися попередньо навченою моделлю, наприклад Faster R-CNN із TensorFlow model zoo, для прогнозування обмежувальних прямокутників на зображенні. Нижче наведено приклад завантаження попередньо навченої моделі, завантаження зображення, отримання прогнозів і візуалізації обмежувальних прямокутників із класовими мітками.

Імпорт бібліотек

import cv2
import tensorflow as tf
import tensorflow_hub as hub
import matplotlib.pyplot as plt
from tensorflow.image import draw_bounding_boxes

Завантаження моделі та зображення

# Load a pretrained Faster R-CNN model from TensorFlow Hub
model = hub.load("https://www.kaggle.com/models/tensorflow/faster-rcnn-resnet-v1/TensorFlow2/faster-rcnn-resnet101-v1-1024x1024/1")

# Load and preprocess the image
img_path = "../../../Documents/Codefinity/CV/Pictures/Section 4/object_detection/bikes_n_persons.png"
img = cv2.imread(img_path)  

Попередня обробка зображення

img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
img_resized = tf.image.resize(img, (1024, 1024))
# Convert to uint8
img_resized = tf.cast(img_resized, dtype=tf.uint8) 
# Convert to tensor 
img_tensor = tf.convert_to_tensor(img_resized)[tf.newaxis, ...]

Виконання передбачення та витягнення ознак обмежувальних рамок

# Make predictions
output = model(img_tensor)

# Extract bounding box coordinates
num_detections = int(output['num_detections'][0])
bboxes = output['detection_boxes'][0][:num_detections].numpy()
class_names = output['detection_classes'][0][:num_detections].numpy().astype(int)
scores = output['detection_scores'][0][:num_detections].numpy()
# Example labels from COCO dataset
labels = {1: "Person", 2: "Bike"}

Відображення обмежувальних рамок

# Draw bounding boxes with labels
for i in range(num_detections):
    # Confidence threshold
    if scores[i] > 0.5:  
        y1, x1, y2, x2 = bboxes[i]
        start_point = (int(x1 * img.shape[1]), int(y1 * img.shape[0]))
        end_point = (int(x2 * img.shape[1]), int(y2 * img.shape[0]))
        cv2.rectangle(img, start_point, end_point, (0, 255, 0), 2)
        # Get label or 'Unknown'
        label = labels.get(class_names[i], "Unknown")  
        cv2.putText(img, f"{label} ({scores[i]:.2f})", (start_point[0], start_point[1] - 10),
                    cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 0, 0), 2)

Візуалізація

# Display image with bounding boxes and labels
plt.figure()
plt.imshow(img)
plt.axis("off")
plt.title("Object Detection with Bounding Boxes and Labels")
plt.show()

Результат:

predict_bbox_example

Регресійне прогнозування обмежувальних рамок

Одним із підходів до прогнозування обмежувальних рамок є пряма регресія, коли згорткова нейронна мережа (CNN) видає чотири числові значення, що визначають положення та розмір рамки. Моделі, такі як YOLO (You Only Look Once), використовують цю техніку, розбиваючи зображення на сітку та призначаючи прогнозування обмежувальних рамок коміркам сітки.

Однак пряма регресія має обмеження:

  • Важко працює з об'єктами різних розмірів і співвідношень сторін;
  • Неефективно обробляє перекриття об'єктів;
  • Обмежувальні рамки можуть зміщуватися непередбачувано, що призводить до непослідовності.
yolo

Підходи на основі якорів та безякорні підходи

Методи на основі якорів

Якорні бокси — це заздалегідь визначені обмежувальні прямокутники з фіксованими розмірами та співвідношеннями сторін. Моделі, такі як Faster R-CNN та SSD (Single Shot MultiBox Detector), використовують якорні бокси для підвищення точності передбачень. Модель прогнозує коригування до якорних боксів, а не створює обмежувальні прямокутники з нуля. Цей метод добре підходить для виявлення об'єктів різних масштабів, але збільшує обчислювальну складність.

Безякорні методи

Безякорні методи, такі як CenterNet та FCOS (Fully Convolutional One-Stage Object Detection), усувають необхідність у заздалегідь визначених якорних боксах і натомість напряму прогнозують центри об'єктів. Ці методи забезпечують:

  • Простішу архітектуру моделей;
  • Вищу швидкість інференсу;
  • Кращу здатність до узагальнення на невідомі розміри об'єктів.
anchor_vs_anchorfree
Note
Примітка

A (З використанням якорів): прогнозує зсуви (зелені лінії) від попередньо визначених якорів (сині) для співставлення з еталонним об'єктом (червоний). B (Без використання якорів): безпосередньо оцінює зсуви від точки до її меж.

Прогнозування обмежувальних рамок є ключовим елементом виявлення об'єктів, і різні підходи забезпечують баланс між точністю та ефективністю. Методи на основі якорів підвищують точність завдяки використанню попередньо визначених форм, тоді як методи без якорів спрощують виявлення шляхом прямого прогнозування розташування об'єктів. Розуміння цих технік допомагає розробляти кращі системи виявлення об'єктів для різних практичних застосувань.

1. Яку інформацію зазвичай містить прогноз обмежувального прямокутника?

2. Яка основна перевага методів на основі якорів у задачах детекції об'єктів?

3. З якою проблемою стикається пряме регресування у прогнозуванні обмежувальних прямокутників?

question mark

Яку інформацію зазвичай містить прогноз обмежувального прямокутника?

Select the correct answer

question mark

Яка основна перевага методів на основі якорів у задачах детекції об'єктів?

Select the correct answer

question mark

З якою проблемою стикається пряме регресування у прогнозуванні обмежувальних прямокутників?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 1. Розділ 21

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Секція 1. Розділ 21
some-alt