Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Forudsigelser af Afgrænsningsbokse | Sektion
Anvendt Computer Vision

bookForudsigelser af Afgrænsningsbokse

Stryg for at vise menuen

Afgrænsningsbokse er afgørende for objektdetektion og giver en metode til at markere objektplaceringer. Objektdetektionsmodeller anvender disse bokse til at definere position og dimensioner af detekterede objekter i et billede. Præcis forudsigelse af afgrænsningsbokse er grundlæggende for at sikre pålidelig objektdetektion.

Hvordan CNN'er forudsiger koordinater for afgrænsningsbokse

Convolutional Neural Networks (CNN'er) behandler billeder gennem lag af konvolutioner og pooling for at udtrække træk. Til objektdetektion genererer CNN'er feature maps, der repræsenterer forskellige dele af et billede. Forudsigelse af afgrænsningsbokse opnås typisk ved:

  1. Udtrækning af trækrepræsentationer fra billedet;
  2. Anvendelse af en regressionsfunktion til at forudsige koordinater for afgrænsningsbokse;
  3. Klassificering af de detekterede objekter inden for hver boks.

Forudsigelser af afgrænsningsbokse repræsenteres som numeriske værdier svarende til:

  • (x, y): koordinaterne for centrum af boksen;
  • (w, h): bredden og højden af boksen.

Eksempel: Forudsigelse af afgrænsningsbokse ved brug af en prætrænet model

I stedet for at træne en CNN fra bunden kan vi anvende en prætrænet model såsom Faster R-CNN fra TensorFlows model zoo til at forudsige afgrænsningsbokse på et billede. Nedenfor ses et eksempel på indlæsning af en prætrænet model, indlæsning af et billede, udførelse af forudsigelser og visualisering af afgrænsningsboksene med klasselabels.

Importér biblioteker

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

Indlæs model og billede

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

Forbehandl billedet

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

Udfør forudsigelse og udtræk bounding box-egenskaber

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

Tegn bounding boxes

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

Visualisering

# 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

Regressionsbaserede forudsigelser af afgrænsningsbokse

En metode til at forudsige afgrænsningsbokse er direkte regression, hvor et CNN-netværk returnerer fire numeriske værdier, der repræsenterer boksens position og størrelse. Modeller som YOLO (You Only Look Once) anvender denne teknik ved at opdele et billede i et gitter og tildele forudsigelser af afgrænsningsbokse til gitterceller.

Dog har direkte regression begrænsninger:

  • Vanskeligheder med objekter i varierende størrelser og størrelsesforhold;
  • Ineffektiv håndtering af overlappende objekter;
  • Afgrænsningsbokse kan flytte sig uforudsigeligt, hvilket fører til inkonsistens.
yolo

Anchor-baserede vs. Anchor-fri tilgange

Anchor-baserede metoder

Anchor-bokse er foruddefinerede afgrænsningsbokse med faste størrelser og størrelsesforhold. Modeller som Faster R-CNN og SSD (Single Shot MultiBox Detector) anvender anchor-bokse for at forbedre prædiktionsnøjagtigheden. Modellen forudsiger justeringer til anchor-boksene i stedet for at forudsige afgrænsningsbokse fra bunden. Denne metode fungerer godt til at detektere objekter i forskellige skalaer, men øger den beregningsmæssige kompleksitet.

Anchor-fri metoder

Anchor-fri metoder, såsom CenterNet og FCOS (Fully Convolutional One-Stage Object Detection), eliminerer foruddefinerede anchor-bokse og forudsiger i stedet objektcentrene direkte. Disse metoder tilbyder:

  • Enklere modelarkitekturer;
  • Hurtigere inferenshastigheder;
  • Forbedret generalisering til ukendte objektstørrelser.
anchor_vs_anchorfree
Note
Bemærk

A (Anchor-baseret): forudsiger forskydninger (grønne linjer) fra foruddefinerede ankre (blå) for at matche sand grund (rød). B (Anchor-fri): estimerer direkte forskydninger fra et punkt til dets grænser.

Forudsigelse af afgrænsningsbokse er en væsentlig del af objektdetektion, og forskellige tilgange balancerer nøjagtighed og effektivitet. Mens anchor-baserede metoder forbedrer præcisionen ved at bruge foruddefinerede former, forenkler anchor-frie metoder detektionen ved direkte at forudsige objektplaceringer. Forståelse af disse teknikker hjælper med at designe bedre objektdetektionssystemer til forskellige virkelige anvendelser.

1. Hvilke oplysninger indeholder en bounding box-forudsigelse typisk?

2. Hvad er den primære fordel ved anchor-baserede metoder i objektdetektion?

3. Hvilken udfordring står direkte regression overfor i bounding box-forudsigelse?

question mark

Hvilke oplysninger indeholder en bounding box-forudsigelse typisk?

Select the correct answer

question mark

Hvad er den primære fordel ved anchor-baserede metoder i objektdetektion?

Select the correct answer

question mark

Hvilken udfordring står direkte regression overfor i bounding box-forudsigelse?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 1. Kapitel 21

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

Sektion 1. Kapitel 21
some-alt