Procentul de pixeli câine
Ultima sarcină pentru analiza datelor de adnotare a câinilor este să determini ce procent din pixelii fiecărei imagini reprezintă un câine (sau mai mulți câini). Va trebui să aplici diverse tehnici învățate în acest curs pentru a calcula aceste informații și a le adăuga ca noi coloane, utile în analizele ulterioare.
Pentru a calcula procentul de pixeli, calculează mai întâi numărul total de pixeli care reprezintă fiecare câine, apoi sumează-i pentru întreaga imagine. Poți calcula dreptunghiul de delimitare cu formula:
(Xend - Xstart) * (Yend - Ystart)
NOTĂ: Poți ignora posibilitatea suprapunerii dreptunghiurilor de delimitare în acest caz.
Pentru procent, împarte numărul total de pixeli „câine" la dimensiunea totală a imaginii și înmulțește cu 100.
DataFrame-ul joined_df este în starea în care l-ai lăsat ultima dată. pyspark.sql.functions este importat cu aliasul F.
Acest exercițiu face parte din cursul
Curățarea datelor cu PySpark
Instrucțiuni pentru exercițiu
- Definește o funcție Python care primește o listă de tuple (obiectele câine) și calculează numărul total de pixeli „câine" per imagine.
- Creează un UDF din funcție și folosește-l pentru a adăuga o nouă coloană numită
'dog_pixels'în DataFrame. - Creează o altă coloană,
'dog_percent', care să reprezinte procentul de'dog_pixels'din imagine. Asigură-te că valorile sunt între 0 și 100%. Folosește numele coloanei ca șir de caractere (adică"columnname"în loc dedf.columnname). - Afișează primele 10 rânduri în care mai mult de 60% din pixeli sunt
'dog_pixels'. Folosește un șir de caractere în stil SQL pentru aceasta (adică'columnname > ____').
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# 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
____