CommencezCommencez gratuitement

Pourcentage de pixels « dog »

La dernière étape pour analyser les annotations de chiens consiste à déterminer le pourcentage de pixels dans chaque image qui représente un chien (ou des chiens). Vous devrez utiliser les différentes techniques vues dans ce cours pour calculer cette information et l'ajouter sous forme de colonnes pour une analyse ultérieure.

Pour calculer le pourcentage de pixels, commencez par calculer le nombre total de pixels représentant chaque chien, puis faites la somme pour l'image. Vous pouvez calculer le rectangle englobant avec la formule :

(Xend - Xstart) * (Yend - Ystart)

REMARQUE : dans ce cas, vous pouvez ignorer la possibilité que des rectangles englobants se chevauchent.

Pour le pourcentage, calculez le nombre total de pixels « dog » divisé par la taille totale de l'image, puis multipliez par 100.
Le DataFrame joined_df est le même que lors de votre dernière utilisation. pyspark.sql.functions est abrégé en F.

Cette activité fait partie du cours

Nettoyer des données avec PySpark

Voir le cours

Instructions de l’exercice

  • Définissez une fonction Python qui reçoit une liste de tuples (les objets « dog ») et calcule le nombre total de pixels « dog » par image.
  • Créez une UDF à partir de cette fonction et utilisez-la pour créer une nouvelle colonne nommée 'dog_pixels' dans le DataFrame.
  • Créez une autre colonne, 'dog_percent', représentant le pourcentage de 'dog_pixels' dans l'image. Assurez-vous que la valeur est entre 0 et 100 %. Utilisez uniquement le nom de la colonne sous forme de chaîne (p. ex., « columnname » plutôt que df.columnname).
  • Affichez les 10 premières lignes ayant plus de 60 % de 'dog_pixels' dans l'image. Utilisez une chaîne de style SQL pour cela (p. ex., 'columnname > ____').

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

# 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
____
Modifier et exécuter le code