Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Rajauslaatikon Ennusteet | Osio
Soveltava tietokonenäkö

bookRajauslaatikon Ennusteet

Pyyhkäise näyttääksesi valikon

Rajat laatikot ovat keskeisiä objektien tunnistuksessa, tarjoten tavan merkitä objektien sijainnit. Objektien tunnistusmallit käyttävät näitä laatikoita määrittääkseen havaittujen objektien sijainnin ja mitat kuvassa. Rajalaatikoiden tarkka ennustaminen on olennaista luotettavan objektien tunnistuksen varmistamiseksi.

Kuinka CNN:t ennustavat rajalaatikoiden koordinaatit

Konvoluutioneuroverkot (CNN:t) käsittelevät kuvia konvoluutio- ja pooling-kerrosten kautta piirteiden erottamiseksi. Objektien tunnistuksessa CNN:t tuottavat piirrekarttoja, jotka kuvaavat kuvan eri osia. Rajalaatikoiden ennustus saavutetaan tyypillisesti seuraavasti:

  1. Piirre-edustusten erottaminen kuvasta;
  2. Regressiofunktion soveltaminen rajalaatikoiden koordinaattien ennustamiseen;
  3. Havaittujen objektien luokittelu jokaisen laatikon sisällä.

Rajalaatikoiden ennusteet esitetään numeerisina arvoina, jotka vastaavat:

  • (x, y): laatikon keskikohdan koordinaatit;
  • (w, h): laatikon leveys ja korkeus.

Esimerkki: Rajalaatikoiden ennustaminen valmiiksi koulutetulla mallilla

Sen sijaan, että koulutetaan CNN alusta alkaen, voidaan käyttää valmiiksi koulutettua mallia, kuten Faster R-CNN TensorFlow'n model zoo -kokoelmasta, ennustamaan rajalaatikot kuvasta. Alla on esimerkki valmiiksi koulutetun mallin lataamisesta, kuvan lataamisesta, ennusteiden tekemisestä ja rajalaatikoiden visualisoinnista luokkamerkintöjen kanssa.

Kirjastojen tuonti

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

Mallin ja kuvan lataus

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

Kuvan esikäsittely

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

Ennusteen tekeminen ja rajaavan laatikon ominaisuuksien poiminta

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

Rajaavien laatikoiden piirtäminen

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

Visualisointi

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

Tulokset:

predict_bbox_example

Regressiopohjaiset rajauslaatikon ennusteet

Yksi tapa ennustaa rajauslaatikoita on suora regressio, jossa CNN tuottaa neljä numeerista arvoa, jotka kuvaavat laatikon sijaintia ja kokoa. Mallit kuten YOLO (You Only Look Once) hyödyntävät tätä tekniikkaa jakamalla kuvan ruudukkoon ja liittämällä rajauslaatikon ennusteet ruutuihin.

Suoralla regressiolla on kuitenkin rajoituksia:

  • Se ei suoriudu hyvin erikokoisista ja -muotoisista kohteista;
  • Se ei käsittele päällekkäisiä kohteita tehokkaasti;
  • Rajauslaatikot voivat siirtyä arvaamattomasti, mikä johtaa epäjohdonmukaisuuksiin.
yolo

Ankkuripohjaiset vs. ankkurittomat lähestymistavat

Ankkuripohjaiset menetelmät

Ankkurilaatikot ovat ennalta määriteltyjä rajoituslaatikoita, joilla on kiinteät koot ja kuvasuhteet. Mallit kuten Faster R-CNN ja SSD (Single Shot MultiBox Detector) käyttävät ankkurilaatikoita parantaakseen ennustetarkkuutta. Malli ennustaa säätöjä ankkurilaatikoihin sen sijaan, että se ennustaisi rajoituslaatikot alusta alkaen. Tämä menetelmä soveltuu hyvin erikokoisten kohteiden tunnistamiseen, mutta lisää laskennallista monimutkaisuutta.

Ankkurittomat menetelmät

Ankkurittomat menetelmät, kuten CenterNet ja FCOS (Fully Convolutional One-Stage Object Detection), poistavat ennalta määritellyt ankkurilaatikot ja ennustavat sen sijaan kohteiden keskikohdat suoraan. Näiden menetelmien etuja ovat:

  • Yksinkertaisemmat mallirakenteet;
  • Nopeammat päättelyajat;
  • Parempi yleistettävyys tuntemattomiin kohdekokoihin.
anchor_vs_anchorfree
Note
Huomio

A (Ankkuriin perustuva): ennustaa siirtymät (vihreät viivat) ennalta määritetyistä ankkureista (sininen) vastaamaan todellista arvoa (punainen). B (Ankkuriton): arvioi suoraan siirtymät pisteestä sen rajoihin.

Rajatunnuksen ennustaminen on olennainen osa objektin tunnistusta, ja eri lähestymistavat tasapainottavat tarkkuutta ja tehokkuutta. Ankkuriin perustuvat menetelmät parantavat tarkkuutta käyttämällä ennalta määritettyjä muotoja, kun taas ankkurittomat menetelmät yksinkertaistavat tunnistusta ennustamalla kohteen sijainnit suoraan. Näiden tekniikoiden ymmärtäminen auttaa suunnittelemaan parempia objektin tunnistusjärjestelmiä erilaisiin käytännön sovelluksiin.

1. Mitä tietoja rajoittavan laatikon ennuste yleensä sisältää?

2. Mikä on ankkuripohjaisten menetelmien ensisijainen etu objektintunnistuksessa?

3. Minkä haasteen suora regressio kohtaa rajoittavan laatikon ennustamisessa?

question mark

Mitä tietoja rajoittavan laatikon ennuste yleensä sisältää?

Select the correct answer

question mark

Mikä on ankkuripohjaisten menetelmien ensisijainen etu objektintunnistuksessa?

Select the correct answer

question mark

Minkä haasteen suora regressio kohtaa rajoittavan laatikon ennustamisessa?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 1. Luku 21

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

Osio 1. Luku 21
some-alt