Pour les personnes qui viennent de Google et qui cherchent un moyen rapide de sous-échantillonner des images en numpy
pour l'utilisation dans des applications d'apprentissage automatique, voici une méthode super rapide (adaptée de aquí ). Cette méthode ne fonctionne que lorsque les dimensions d'entrée sont un multiple des dimensions de sortie.
Les exemples suivants réduisent l'échantillonnage de 128x128 à 64x64 (ceci peut être facilement modifié).
Dernières commandes de 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)
Commande de canaux en premier lieu
# 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, il suffit de modifier le paramètre 3
à un 1
comme ça :
Commande de canaux en premier lieu
# 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 max pooling. C'est la méthode la plus rapide que j'ai trouvée.
0 votes
Pouvez-vous montrer le code de votre tableau numpy ?
1 votes
scipy.misc.imresize
2 votes
@sascha Déprécié, selon la page que vous avez liée.
1 votes
@ShpielMeister Je n'arrive pas à faire en sorte qu'IntelliJ imprime complètement le tableau numpy, pour une raison quelconque, lorsque les sorties sont importantes, il met ... tout le temps, de sorte que je ne peux voir qu'une partie de la sortie du tableau dans la console.