Pour les personnes venant ici de Google à la recherche d'un moyen rapide de sous-échantillonner les images dans des numpy
tableaux pour les utiliser dans les applications d'apprentissage automatique, voici une méthode ultra rapide (adaptée à partir d' ici ). Cette méthode ne fonctionne que lorsque les dimensions d'entrée sont un multiple des dimensions de sortie.
Les exemples suivants sous-échantillonnent de 128x128 à 64x64 (cela peut être facilement changé).
Dernière commande des chaînes
# large image is shape (128, 128, 3)
# small image is shape (64, 64, 3)
input_size = 128
output_size = 64
bin_size = input_size // output_size
small_image = large_image.reshape((output_size, bin_size,
output_size, bin_size, 3)).max(3).max(1)
Première commande des chaînes
# large image is shape (3, 128, 128)
# small image is shape (3, 64, 64)
input_size = 128
output_size = 64
bin_size = input_size // output_size
small_image = large_image.reshape((3, output_size, bin_size,
output_size, bin_size)).max(4).max(2)
Pour les images en niveaux de gris, changez simplement le 3
en un 1
comme ceci:
Première commande des chaînes
# large image is shape (1, 128, 128)
# small image is shape (1, 64, 64)
input_size = 128
output_size = 64
bin_size = input_size // output_size
small_image = large_image.reshape((1, output_size, bin_size,
output_size, bin_size)).max(4).max(2)
Cette méthode utilise l'équivalent du pooling max. C'est le moyen le plus rapide que j'ai trouvé.