Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Förutsägelser av Avgränsningsrutor | Sektion
Tillämpad Datorseende

bookFörutsägelser av Avgränsningsrutor

Svep för att visa menyn

Avgränsningsrutor är avgörande för objektigenkänning och används för att markera objektens positioner. Objektigenkänningsmodeller använder dessa rutor för att definiera position och dimensioner för identifierade objekt i en bild. Noggrann förutsägelse av avgränsningsrutor är grundläggande för tillförlitlig objektigenkänning.

Hur CNN:er förutsäger koordinater för avgränsningsrutor

Konvolutionella neurala nätverk (CNN:er) bearbetar bilder genom lager av konvolutioner och pooling för att extrahera egenskaper. För objektigenkänning genererar CNN:er feature maps som representerar olika delar av en bild. Förutsägelse av avgränsningsrutor uppnås vanligtvis genom:

  1. Extrahering av egenskapsrepresentationer från bilden;
  2. Tillämpning av en regressionsfunktion för att förutsäga koordinater för avgränsningsrutor;
  3. Klassificering av identifierade objekt inom varje ruta.

Förutsägelser för avgränsningsrutor representeras som numeriska värden som motsvarar:

  • (x, y): koordinaterna för rutans centrum;
  • (w, h): rutans bredd och höjd.

Exempel: Förutsägelse av avgränsningsrutor med en förtränad modell

Istället för att träna ett CNN från grunden kan vi använda en förtränad modell såsom Faster R-CNN från TensorFlows model zoo för att förutsäga avgränsningsrutor på en bild. Nedan visas ett exempel på hur man laddar en förtränad modell, laddar en bild, gör förutsägelser och visualiserar avgränsningsrutorna med klassetiketter.

Importera bibliotek

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

Ladda modell och bild

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

Förbehandla bilden

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

Utför prediktion och extrahera egenskaper för avgränsningsrutor

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

Rita avgränsningsrutor

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

Visualisera

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

Resultat:

predict_bbox_example

Regressionsbaserade förutsägelser av avgränsningsrutor

Ett tillvägagångssätt för att förutsäga avgränsningsrutor är direkt regression, där ett CNN returnerar fyra numeriska värden som representerar boxens position och storlek. Modeller såsom YOLO (You Only Look Once) använder denna teknik genom att dela upp en bild i ett rutnät och tilldela förutsägelser av avgränsningsrutor till rutnätsceller.

Direkt regression har dock begränsningar:

  • Svårigheter med objekt av varierande storlekar och proportioner;
  • Hanterar inte överlappande objekt effektivt;
  • Avgränsningsrutor kan förskjutas oförutsägbart, vilket leder till inkonsekvenser.
yolo

Ankarbaserade vs. Ankarfria metoder

Ankarbaserade metoder

Ankarboxar är fördefinierade avgränsningsrutor med fasta storlekar och bildförhållanden. Modeller som Faster R-CNN och SSD (Single Shot MultiBox Detector) använder ankarboxar för att förbättra prediktionsnoggrannheten. Modellen förutspår justeringar av ankarboxarna istället för att förutsäga avgränsningsrutor från grunden. Denna metod fungerar bra för att detektera objekt i olika skalor men ökar den beräkningsmässiga komplexiteten.

Ankarfria metoder

Ankarfria metoder, såsom CenterNet och FCOS (Fully Convolutional One-Stage Object Detection), eliminerar fördefinierade ankarboxar och förutspår istället objektens centrum direkt. Dessa metoder erbjuder:

  • Enklare modellarkitekturer;
  • Snabbare inferenshastigheter;
  • Förbättrad generalisering till okända objektstorlekar.
anchor_vs_anchorfree
Note
Notering

A (Anchor-baserad): förutspår förskjutningar (gröna linjer) från fördefinierade ankare (blå) för att matcha markdata (röd). B (Anchor-fri): uppskattar direkt förskjutningar från en punkt till dess gränser.

Förutsägelse av avgränsningsrutor är en viktig komponent inom objektigenkänning, och olika metoder balanserar noggrannhet och effektivitet. Medan anchor-baserade metoder förbättrar precisionen genom att använda fördefinierade former, förenklar anchor-fria metoder detektionen genom att direkt förutsäga objektens positioner. Förståelse för dessa tekniker hjälper till att utforma bättre system för objektigenkänning för olika tillämpningar i verkliga världen.

1. Vilken information innehåller vanligtvis en bounding box-prediktion?

2. Vilken är den främsta fördelen med ankare-baserade metoder inom objektdetektering?

3. Vilken utmaning möter direkt regression vid bounding box-prediktion?

question mark

Vilken information innehåller vanligtvis en bounding box-prediktion?

Select the correct answer

question mark

Vilken är den främsta fördelen med ankare-baserade metoder inom objektdetektering?

Select the correct answer

question mark

Vilken utmaning möter direkt regression vid bounding box-prediktion?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 1. Kapitel 21

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

Avsnitt 1. Kapitel 21
some-alt