LoslegenKostenlos loslegen

Prozentsatz Hundepixel

Die letzte Aufgabe beim Parsen der Hundekennzeichnungsdaten besteht darin, den Prozentsatz der Pixel in jedem Bild zu bestimmen, der einen Hund (oder mehrere Hunde) darstellt. Du musst die verschiedenen Techniken anwenden, die du in diesem Kurs gelernt hast, um diese Informationen zu berechnen und sie als Spalten für die spätere Analyse hinzuzufügen.

Um den Prozentsatz der Pixel zu berechnen, berechne zunächst die Gesamtzahl der Pixel für jeden Hund und addiere sie dann für das Bild. Du kannst den Begrenzungsrahmen mit der Formel berechnen:

(XEnde - XStart) * (YEnde - YStart)

HINWEIS: In diesem Fall kannst du die Möglichkeit überlappender Bounding Boxes ignorieren.

Für den Prozentsatz berechnest du die Gesamtzahl der "Hunde"-Pixel geteilt durch die Gesamtgröße des Bildes, multipliziert mit 100.
Der DataFrame joined_df ist so, wie du ihn zuletzt benutzt hast. pyspark.sql.functions ist ein Alias für F.

Diese Übung ist Teil des Kurses

Daten bereinigen mit PySpark

Kurs anzeigen

Anleitung zur Übung

  • Definiere eine Python-Funktion, die aus einer Liste von Tupeln (den Hundeobjekten) die Gesamtzahl der "Hunde"-Pixel pro Bild berechnet.
  • Erstelle eine UDF der Funktion und verwende sie, um eine neue Spalte namens 'dog_pixels' im DataFrame zu erstellen.
  • Erstelle eine weitere Spalte, 'dog_percent', die den Prozentsatz von 'dog_pixels' im Bild angibt. Achte darauf, dass dieser Wert zwischen 0-100% liegt. Verwende nur den Stringnamen der Spalte (d.h. "Spaltenname" statt df.columnname).
  • Zeige die ersten 10 Zeilen mit mehr als 60% 'dog_pixels' im Bild. Verwende dafür einen SQL-ähnlichen String (z. B. "Spaltenname > ____").

Interaktive Übung

Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.

# Calculate total pixels occupied by dogs in the image
def dogPixelCount(doglist):
  totalpixels = ____
  for dog in doglist:
    totalpixels += (dog[____] - ____[1]) * (____[____] - ____)
  return totalpixels

# Define a UDF for the pixel count
udfDogPixelCount = ____

# Add a new column 'dog_pixels' containing the pixel count for dogs in each image
joined_df = ____

# Add a column 'dog_percent' representing the percentage of the image occupied by dogs
joined_df = joined_df.____('dog_percent', (____ / (____)) * ____)

# Show the first 10 annotations with more than 60% dog
____
Code bearbeiten und ausführen