Kom igångKom igång gratis

Procentandel hundpixlar

Den sista uppgiften när det gäller att tolka hundannoteringsdatan är att bestämma hur stor andel av pixlarna i varje bild som föreställer en hund (eller hundar). Du behöver använda de olika tekniker du lärt dig under kursen för att beräkna denna information och lägga till den som kolumner för senare analys.

För att beräkna pixelprocentandelen börjar du med att beräkna det totala antalet pixlar som representerar varje hund och summerar dem sedan för bilden. Du kan beräkna avgränsningsrutan med formeln:

(Xend - Xstart) * (Yend - Ystart)

OBS: Du kan bortse från möjligheten att avgränsningsrutor överlappar varandra i det här fallet.

För procentandelen beräknar du det totala antalet "hund"-pixlar dividerat med bildens totala storlek, multiplicerat med 100.
DataFrame:en joined_df är som du senast använde den. pyspark.sql.functions är aliasad till F.

Den här övningen är en del av kursen

Datarensning med PySpark

Visa kurs

Övningsinstruktioner

  • Definiera en Python-funktion som tar en lista med tupler (hundobjekten) och beräknar det totala antalet "hund"-pixlar per bild.
  • Skapa en UDF av funktionen och använd den för att skapa en ny kolumn kallad 'dog_pixels' i DataFrame:en.
  • Skapa ytterligare en kolumn, 'dog_percent', som representerar procentandelen 'dog_pixels' i bilden. Se till att värdet ligger mellan 0–100 %. Använd enbart kolumnnamnet som sträng (dvs. "kolumnnamn" i stället för df.kolumnnamn).
  • Visa de första 10 raderna där mer än 60 % av pixlarna är 'dog_pixels'. Använd en SQL-liknande sträng för detta (dvs. 'kolumnnamn > ____').

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

# 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
____
Redigera och kör kod