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
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
____