sklearn scikit learn español python machine-learning scikit-learn classification scikit-image

python - sklearn - scikit learn español



Cómo aplicar un clasificador ScikitLearn a los mosaicos/ventanas en una imagen grande (1)

Dado es un clasificador entrenado en scikit learn, por ejemplo, un RandomForestClassifier . El clasificador ha sido entrenado en muestras de tamaño, por ejemplo, 25x25.

¿Cómo puedo aplicar esto fácilmente a todos los mosaicos / ventanas en una imagen grande (por ejemplo, 640x480)?

Lo que podría hacer es (código lento por delante!)

x_train = np.arange(25*25*1000).reshape(25,25,1000) # just some pseudo training data y_train = np.arange(1000) # just some pseudo training labels clf = RandomForestClassifier() clf.train( ... ) #train the classifier img = np.arange(640*480).reshape(640,480) #just some pseudo image data clf.magicallyApplyToAllSubwindoes( img )

¿Cómo puedo aplicar clf a todas las ventanas de 25x25 en img ?


Quizás esté buscando algo como skimage.util.view_as_windows . Por favor, asegúrese de leer la advertencia sobre el uso de la memoria al final de la documentación.

Si el uso de view_as_windows es un enfoque asequible para usted, puede generar mágicamente datos de prueba de todas las ventanas de la imagen modificando la matriz devuelta de esta manera:

import numpy as np from skimage import io from skimage.util import view_as_windows img = io.imread(''image_name.png'') window_shape = (25, 25) windows = view_as_windows(img, window_shape) n_windows = np.prod(windows.shape[:2]) n_pixels = np.prod(windows.shape[2:]) x_test = windows.reshape(n_windows, n_pixels) clf.apply(x_test)