ComeçarComece de graça

Porcentagem de pixels de cães

A tarefa final para analisar os dados de anotação de cães é determinar a porcentagem de pixels em cada imagem que representa um cão (ou cães). Você precisará usar as várias técnicas que aprendeu neste curso para ajudar a calcular essas informações e adicioná-las como colunas para análise posterior.

Para calcular a porcentagem de pixels, primeiro calcule o número total de pixels que representam cada cão e, em seguida, some-os para a imagem. Você pode calcular a caixa delimitadora com a fórmula:

(Xend - Xstart) * (Yend - Ystart)

NOTE: Você pode ignorar a possibilidade de sobreposição de caixas delimitadoras nesse caso.

Para obter a porcentagem, calcule o número total de pixels de "cachorro" dividido pelo tamanho total da imagem, multiplicado por 100.
O DataFrame joined_df está como você o usou pela última vez. pyspark.sql.functions é um alias para F.

Este exercício faz parte do curso

Limpeza de dados com o PySpark

Ver curso

Instruções do exercício

  • Defina uma função Python para pegar uma lista de tuplas (os objetos cachorro) e calcular o número total de pixels de "cachorro" por imagem.
  • Crie um UDF da função e use-o para criar uma nova coluna chamada 'dog_pixels' no DataFrame.
  • Crie outra coluna, 'dog_percent', representando a porcentagem de 'dog_pixels' na imagem. Certifique-se de que esse valor esteja entre 0-100%. Use apenas o nome da coluna (ou seja, "columnname" em vez de df.columnname).
  • Mostre as 10 primeiras linhas com mais de 60% 'dog_pixels' na imagem. Use uma string no estilo SQL para isso (ou seja, 'columnname > ____').

Exercício interativo prático

Experimente este exercício completando este código de exemplo.

# 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
____
Editar e executar o código