Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Vorhersagen von Begrenzungsrahmen | Objekterkennung
Grundlagen der Computer Vision

bookVorhersagen von Begrenzungsrahmen

Begrenzungsrahmen sind entscheidend für die Objekterkennung und ermöglichen die Markierung von Objektpositionen. Objekterkennungsmodelle verwenden diese Rahmen, um die Position und die Abmessungen erkannter Objekte innerhalb eines Bildes zu definieren. Eine präzise Vorhersage der Begrenzungsrahmen ist grundlegend, um eine zuverlässige Objekterkennung zu gewährleisten.

Wie CNNs Begrenzungsrahmen-Koordinaten vorhersagen

Convolutional Neural Networks (CNNs) verarbeiten Bilder durch Schichten von Faltungen und Pooling, um Merkmale zu extrahieren. Für die Objekterkennung erzeugen CNNs Merkmalskarten, die verschiedene Bildbereiche repräsentieren. Die Vorhersage von Begrenzungsrahmen erfolgt typischerweise durch:

  1. Extraktion von Merkmalsrepräsentationen aus dem Bild;
  2. Anwendung einer Regressionsfunktion zur Vorhersage der Begrenzungsrahmen-Koordinaten;
  3. Klassifizierung der erkannten Objekte innerhalb jedes Rahmens.

Vorhersagen von Begrenzungsrahmen werden als numerische Werte dargestellt, die Folgendes entsprechen:

  • (x, y): die Koordinaten des Mittelpunkts des Rahmens;
  • (w, h): die Breite und Höhe des Rahmens.

Beispiel: Vorhersage von Begrenzungsrahmen mit einem vortrainierten Modell

Anstatt ein CNN von Grund auf zu trainieren, kann ein vortrainiertes Modell wie Faster R-CNN aus dem TensorFlow Model Zoo verwendet werden, um Begrenzungsrahmen auf einem Bild vorherzusagen. Nachfolgend ein Beispiel zum Laden eines vortrainierten Modells, Laden eines Bildes, Durchführen von Vorhersagen und Visualisieren der Begrenzungsrahmen mit Klassenbezeichnungen.

Bibliotheken importieren

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

Modell und Bild laden

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

Bild vorverarbeiten

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

Vorhersage durchführen und Bounding-Box-Merkmale extrahieren

# 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"}

Bounding-Boxen zeichnen

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

Visualisierung

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

Ergebnis:

predict_bbox_example

Regressionsbasierte Vorhersage von Begrenzungsrahmen

Ein Ansatz zur Vorhersage von Begrenzungsrahmen ist die direkte Regression, bei der ein CNN vier numerische Werte ausgibt, die die Position und Größe des Rahmens darstellen. Modelle wie YOLO (You Only Look Once) verwenden diese Technik, indem sie ein Bild in ein Raster unterteilen und den Rasterzellen Begrenzungsrahmen-Vorhersagen zuweisen.

Die direkte Regression weist jedoch Einschränkungen auf:

  • Schwierigkeiten bei Objekten mit unterschiedlichen Größen und Seitenverhältnissen;
  • Unzureichende Handhabung überlappender Objekte;
  • Begrenzungsrahmen können sich unvorhersehbar verschieben, was zu Inkonsistenzen führt.
yolo

Ankerbasierte vs. Ankerfreie Ansätze

Ankerbasierte Methoden

Ankerboxen sind vordefinierte Begrenzungsrahmen mit festen Größen und Seitenverhältnissen. Modelle wie Faster R-CNN und SSD (Single Shot MultiBox Detector) verwenden Ankerboxen, um die Vorhersagegenauigkeit zu verbessern. Das Modell sagt Anpassungen an den Ankerboxen voraus, anstatt Begrenzungsrahmen von Grund auf zu bestimmen. Diese Methode eignet sich gut zur Erkennung von Objekten in unterschiedlichen Maßstäben, erhöht jedoch die Rechenkomplexität.

Ankerfreie Methoden

Ankerfreie Methoden wie CenterNet und FCOS (Fully Convolutional One-Stage Object Detection) verzichten auf vordefinierte Ankerboxen und sagen stattdessen direkt die Objektzentren voraus. Diese Methoden bieten:

  • Einfachere Modellarchitekturen;
  • Schnellere Inferenzzeiten;
  • Verbesserte Generalisierung auf unbekannte Objektgrößen.
anchor_vs_anchorfree
Note
Hinweis

A (Anker-basiert): Sagt Offsets (grüne Linien) von vordefinierten Ankern (blau) voraus, um mit dem Ground Truth (rot) übereinzustimmen. B (Anker-frei): Schätzt Offsets direkt von einem Punkt zu seinen Begrenzungen.

Vorhersage von Begrenzungsrahmen ist ein zentrales Element der Objekterkennung, wobei verschiedene Ansätze Genauigkeit und Effizienz ausbalancieren. Während ankerbasierte Methoden die Präzision durch vordefinierte Formen erhöhen, vereinfachen ankerfreie Methoden die Erkennung, indem sie Objektpositionen direkt vorhersagen. Das Verständnis dieser Techniken unterstützt die Entwicklung leistungsfähiger Objekterkennungssysteme für vielfältige Anwendungen in der Praxis.

1. Welche Informationen enthält eine Bounding-Box-Vorhersage typischerweise?

2. Was ist der Hauptvorteil von Anker-basierten Methoden in der Objekterkennung?

3. Welcher Herausforderung steht die direkte Regression bei der Bounding-Box-Vorhersage gegenüber?

question mark

Welche Informationen enthält eine Bounding-Box-Vorhersage typischerweise?

Select the correct answer

question mark

Was ist der Hauptvorteil von Anker-basierten Methoden in der Objekterkennung?

Select the correct answer

question mark

Welcher Herausforderung steht die direkte Regression bei der Bounding-Box-Vorhersage gegenüber?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 4. Kapitel 3

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

Suggested prompts:

Can you explain the difference between anchor-based and anchor-free methods in more detail?

What are some common challenges in bounding box prediction?

How does the choice of method affect the performance of object detection models?

Awesome!

Completion rate improved to 3.45

bookVorhersagen von Begrenzungsrahmen

Swipe um das Menü anzuzeigen

Begrenzungsrahmen sind entscheidend für die Objekterkennung und ermöglichen die Markierung von Objektpositionen. Objekterkennungsmodelle verwenden diese Rahmen, um die Position und die Abmessungen erkannter Objekte innerhalb eines Bildes zu definieren. Eine präzise Vorhersage der Begrenzungsrahmen ist grundlegend, um eine zuverlässige Objekterkennung zu gewährleisten.

Wie CNNs Begrenzungsrahmen-Koordinaten vorhersagen

Convolutional Neural Networks (CNNs) verarbeiten Bilder durch Schichten von Faltungen und Pooling, um Merkmale zu extrahieren. Für die Objekterkennung erzeugen CNNs Merkmalskarten, die verschiedene Bildbereiche repräsentieren. Die Vorhersage von Begrenzungsrahmen erfolgt typischerweise durch:

  1. Extraktion von Merkmalsrepräsentationen aus dem Bild;
  2. Anwendung einer Regressionsfunktion zur Vorhersage der Begrenzungsrahmen-Koordinaten;
  3. Klassifizierung der erkannten Objekte innerhalb jedes Rahmens.

Vorhersagen von Begrenzungsrahmen werden als numerische Werte dargestellt, die Folgendes entsprechen:

  • (x, y): die Koordinaten des Mittelpunkts des Rahmens;
  • (w, h): die Breite und Höhe des Rahmens.

Beispiel: Vorhersage von Begrenzungsrahmen mit einem vortrainierten Modell

Anstatt ein CNN von Grund auf zu trainieren, kann ein vortrainiertes Modell wie Faster R-CNN aus dem TensorFlow Model Zoo verwendet werden, um Begrenzungsrahmen auf einem Bild vorherzusagen. Nachfolgend ein Beispiel zum Laden eines vortrainierten Modells, Laden eines Bildes, Durchführen von Vorhersagen und Visualisieren der Begrenzungsrahmen mit Klassenbezeichnungen.

Bibliotheken importieren

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

Modell und Bild laden

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

Bild vorverarbeiten

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

Vorhersage durchführen und Bounding-Box-Merkmale extrahieren

# 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"}

Bounding-Boxen zeichnen

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

Visualisierung

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

Ergebnis:

predict_bbox_example

Regressionsbasierte Vorhersage von Begrenzungsrahmen

Ein Ansatz zur Vorhersage von Begrenzungsrahmen ist die direkte Regression, bei der ein CNN vier numerische Werte ausgibt, die die Position und Größe des Rahmens darstellen. Modelle wie YOLO (You Only Look Once) verwenden diese Technik, indem sie ein Bild in ein Raster unterteilen und den Rasterzellen Begrenzungsrahmen-Vorhersagen zuweisen.

Die direkte Regression weist jedoch Einschränkungen auf:

  • Schwierigkeiten bei Objekten mit unterschiedlichen Größen und Seitenverhältnissen;
  • Unzureichende Handhabung überlappender Objekte;
  • Begrenzungsrahmen können sich unvorhersehbar verschieben, was zu Inkonsistenzen führt.
yolo

Ankerbasierte vs. Ankerfreie Ansätze

Ankerbasierte Methoden

Ankerboxen sind vordefinierte Begrenzungsrahmen mit festen Größen und Seitenverhältnissen. Modelle wie Faster R-CNN und SSD (Single Shot MultiBox Detector) verwenden Ankerboxen, um die Vorhersagegenauigkeit zu verbessern. Das Modell sagt Anpassungen an den Ankerboxen voraus, anstatt Begrenzungsrahmen von Grund auf zu bestimmen. Diese Methode eignet sich gut zur Erkennung von Objekten in unterschiedlichen Maßstäben, erhöht jedoch die Rechenkomplexität.

Ankerfreie Methoden

Ankerfreie Methoden wie CenterNet und FCOS (Fully Convolutional One-Stage Object Detection) verzichten auf vordefinierte Ankerboxen und sagen stattdessen direkt die Objektzentren voraus. Diese Methoden bieten:

  • Einfachere Modellarchitekturen;
  • Schnellere Inferenzzeiten;
  • Verbesserte Generalisierung auf unbekannte Objektgrößen.
anchor_vs_anchorfree
Note
Hinweis

A (Anker-basiert): Sagt Offsets (grüne Linien) von vordefinierten Ankern (blau) voraus, um mit dem Ground Truth (rot) übereinzustimmen. B (Anker-frei): Schätzt Offsets direkt von einem Punkt zu seinen Begrenzungen.

Vorhersage von Begrenzungsrahmen ist ein zentrales Element der Objekterkennung, wobei verschiedene Ansätze Genauigkeit und Effizienz ausbalancieren. Während ankerbasierte Methoden die Präzision durch vordefinierte Formen erhöhen, vereinfachen ankerfreie Methoden die Erkennung, indem sie Objektpositionen direkt vorhersagen. Das Verständnis dieser Techniken unterstützt die Entwicklung leistungsfähiger Objekterkennungssysteme für vielfältige Anwendungen in der Praxis.

1. Welche Informationen enthält eine Bounding-Box-Vorhersage typischerweise?

2. Was ist der Hauptvorteil von Anker-basierten Methoden in der Objekterkennung?

3. Welcher Herausforderung steht die direkte Regression bei der Bounding-Box-Vorhersage gegenüber?

question mark

Welche Informationen enthält eine Bounding-Box-Vorhersage typischerweise?

Select the correct answer

question mark

Was ist der Hauptvorteil von Anker-basierten Methoden in der Objekterkennung?

Select the correct answer

question mark

Welcher Herausforderung steht die direkte Regression bei der Bounding-Box-Vorhersage gegenüber?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 4. Kapitel 3
some-alt