ПочатиПочніть безкоштовно

Відсоток пікселів із собакою

Останнє завдання з розбору анотацій про собак — визначити, який відсоток пікселів на кожному зображенні відповідає собаці (або кільком собакам). Вам знадобляться прийоми, які ви вивчили в цьому курсі, щоб обчислити це та додати як стовпці для подальшого аналізу.

Щоб обчислити відсоток пікселів, спершу порахуйте загальну кількість пікселів, що представляють кожну собаку, а потім підсумуйте їх для зображення. Обмежувальну рамку можна порахувати за формулою:

(Xend - Xstart) * (Yend - Ystart)

ПРИМІТКА: У цьому завданні можна ігнорувати можливе перекривання обмежувальних рамок.

Для відсотка обчисліть загальну кількість «собачих» пікселів, поділену на загальний розмір зображення, помножену на 100.
Датафрейм joined_df — у тому стані, в якому ви використовували його востаннє. pyspark.sql.functions має псевдонім F.

Ця вправа є частиною курсу

Очищення даних у PySpark

Переглянути курс

Інструкції до вправи

  • Визначте функцію Python, яка приймає список кортежів (об'єкти собак) і обчислює загальну кількість «собачих» пікселів на зображення.
  • Створіть UDF на основі цієї функції та використайте його, щоб створити новий стовпець 'dog_pixels' у DataFrame.
  • Створіть ще один стовпець, 'dog_percent', що представляє відсоток 'dog_pixels' на зображенні. Переконайтеся, що значення в межах 0–100%. Використовуйте лише рядкову назву стовпця (тобто «columnname», а не df.columnname).
  • Показати перші 10 рядків, де на зображенні понад 60% 'dog_pixels'. Для цього використайте рядок у стилі SQL (тобто 'columnname > ____').

Інтерактивна практична вправа

Спробуйте виконати цю вправу, доповнивши цей зразок коду.

# 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
____
Редагувати та запускати код