Zacznij terazZacznij za darmo

Procentowy udział pikseli psa

Ostatnim krokiem przetwarzania danych z adnotacjami psów jest wyznaczenie procentowego udziału pikseli reprezentujących psa (lub psy) w każdym obrazie. Wykorzystaj techniki poznane w tym kursie, aby obliczyć te informacje i dodać je jako kolumny do dalszej analizy.

Aby obliczyć procentowy udział pikseli, najpierw wyznacz łączną liczbę pikseli reprezentujących każdego psa, a następnie zsumuj je dla całego obrazu. Pole ograniczającego prostokąta (bounding box) obliczysz według wzoru:

(Xend - Xstart) * (Yend - Ystart)

UWAGA: W tym przypadku możesz pominąć możliwość nakładania się prostokątów ograniczających.

Procentowy udział oblicz, dzieląc łączną liczbę pikseli „psa" przez całkowity rozmiar obrazu i mnożąc wynik przez 100.
DataFrame joined_df jest w takim stanie, w jakim go ostatnio używano. Biblioteka pyspark.sql.functions jest dostępna pod aliasem F.

To ćwiczenie jest częścią kursu

Czyszczenie danych w PySpark

Zobacz kurs

Instrukcje do ćwiczenia

  • Zdefiniuj funkcję Pythona, która przyjmuje listę krotek (obiekty psów) i oblicza łączną liczbę pikseli „psa" w obrazie.
  • Utwórz UDF z tej funkcji i użyj go do dodania do DataFrame nowej kolumny 'dog_pixels'.
  • Utwórz kolejną kolumnę, 'dog_percent', reprezentującą procentowy udział 'dog_pixels' w obrazie. Upewnij się, że wartości mieszczą się w przedziale 0–100%. Odwołaj się do kolumny wyłącznie przez jej nazwę jako ciąg znaków (tzn. "nazwakolumny", a nie df.nazwakolumny).
  • Wyświetl pierwsze 10 wierszy, w których udział 'dog_pixels' przekracza 60%. Użyj zapytania w stylu SQL (tzn. 'nazwakolumny > ____').

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

# 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
____
Edytuj i uruchom kod