Een beeldverwerkingspipeline
Je collega heeft een preprocessingfunctie geschreven voor de American Sign Language-afbeeldingen om de nauwkeurigheid van je Machine Learning-model te verhogen. Deze functie neemt een grijswaardenafbeelding en voert Canny edge detection erop uit. Canny edge detection wordt vaak gebruikt in klassieke computervisie en markeert de randen van objecten in een afbeelding. Je wilt dit op alle afbeeldingen in je gegevensset toepassen.
De functie die je collega heeft geschreven is in je omgeving beschikbaar als compute_edges(), en verwacht een afbeelding met afmetingen (1, h, w), waarbij de hoogte h en de breedte w willekeurige gehele getallen kunnen zijn.
De Dask-array met je afbeeldingen is in de omgeving beschikbaar als image_array. Deze array heeft vorm (N, h, w, 3) waarbij N het aantal afbeeldingen is, en er 3 kanalen zijn voor rood, blauw en groen.
dask.array is voor je geïmporteerd als da.
Deze oefening maakt deel uit van de cursus
Parallel programmeren met Dask in Python
Oefeninstructies
- Zet de afbeelding van kleur naar grijswaarden door het gemiddelde over de laatste dimensie te nemen.
- Gebruik de
.map_blocks()-methode van de grijswaardenafbeeldingen om de functiecompute_edges()op elke afbeelding toe te passen. - Selecteer alleen de nulde edge-afbeelding en compute die.
- Gebruik
plt.imshow()om de randen te plotten.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# Convert the color photos to grayscale
grayscale_images = ____
# Apply the edge detection function
edge_images = ____.____(____)
# Select the zeroth image and compute its values
sample_image = ____
# Show the result
____(____, cmap='gray')
plt.show()