Cero-media y unidad de varianza de unidad por lotes -- python campo con numpy camp Relacionados El problema

Zero-mean and unit variance image batch


0
vote

problema

Español

Estoy trabajando en la implementación de una red neuronal convolucional para clasificar las imágenes médicas y estoy intentando cero-media y varianza de unidad Mis datos de entrada (imágenes RGB) antes de alimentarla a mi red. Mis datos son de forma [num_images, image_width, image_height, image_channels]

Estoy usando NOMPY:

  mean_val = np.mean(X_train, axis=0) std_val = np.std(X_train, axis=0) normalized_images = (X_train-mean_val)/std_val   

Sin embargo, las imágenes tienen diferentes formas, por lo tanto, obtengo el siguiente error:

  Traceback (most recent call last): File "/Users/TristanSaunders/Desktop/IndividualProject/Amazon_Test.py", line  162, in <module> mean_val = np.mean(lab_images, axis=0) File "/Users/TristanSaunders/anaconda3/lib/python3.6/site-  packages/numpy/core/fromnumeric.py", line 2909, in mean out=out, **kwargs) File "/Users/TristanSaunders/anaconda3/lib/python3.6/site-  packages/numpy/core/_methods.py", line 70, in _mean ret = umr_sum(arr, axis, dtype, out, keepdims) ValueError: operands could not be broadcast together with shapes (767,1022,3)  (488,744,3)    

Esto solo funciona cuando las imágenes tienen la misma forma. Esto está bien porque remodela las imágenes a 224x224x3 antes de alimentarlas a la red, pero para que las imágenes tengan la misma forma que necesito redimensionar y luego rellenarlas para mantener la relación de aspecto de la imagen. Pero hacer una variación media de cero y unidad en las imágenes acolchadas, la abundancia de píxeles de valor cero (relleno) sesga el valor medio.

Por lo tanto, estoy intentando cero Mal y la variación de la unidad Mis imágenes antes de cambiarlas y me preguntaba si hay una solución que hacerlo cuando las imágenes tienen diferentes formas?

¡Gracias!

Original en ingles

I'm working on implementing a convolutional neural network for classifying medical images and I am trying to zero-mean and unit variance my input data (RGB images) before feeding it to my network. My data is of shape [num_images, image_width, image_height, image_channels]

I'm using numpy:

mean_val = np.mean(X_train, axis=0) std_val = np.std(X_train, axis=0) normalized_images = (X_train-mean_val)/std_val 

However the images have different shapes therefore I get the following error:

Traceback (most recent call last): File "/Users/TristanSaunders/Desktop/IndividualProject/Amazon_Test.py", line  162, in <module> mean_val = np.mean(lab_images, axis=0) File "/Users/TristanSaunders/anaconda3/lib/python3.6/site-  packages/numpy/core/fromnumeric.py", line 2909, in mean out=out, **kwargs) File "/Users/TristanSaunders/anaconda3/lib/python3.6/site-  packages/numpy/core/_methods.py", line 70, in _mean ret = umr_sum(arr, axis, dtype, out, keepdims) ValueError: operands could not be broadcast together with shapes (767,1022,3)  (488,744,3)  

This only works when the images have the same shape. This is fine because I reshape the images to 224x224x3 before feeding them to the network but to get the images to have the same shape I need to resize and then pad them in order to keep the aspect ratio of the image. But doing zero-mean and unit variance on padded images causes the abundance of zero-valued pixels (padding) to skew the mean-value.

Therefore I am trying to zero-mean and unit variance my images before reshaping them and I was wondering if there's a solution to do so when the images have different shapes?

Thanks!

     
         
         

Lista de respuestas

0
 
vote

Parece que x_train es una lista. Puede llamar a NP.Mean () en él si todos los elementos de la lista tienen la misma forma. Si las formas son diferentes, puedes hacer

  Variant5  

Esto debe calcular, pero las imágenes con pequeños números de píxeles estarían demasiado representados.

Entonces, para compensar, podrías hacer

  Variant6  
 

It seems that X_train is a list. You can call np.mean() on it if all elements of the list have the same shape. If the shapes are different, you can do

mean_val = np.mean([np.mean(a) for a in X_train]) 

This should compute, but images with small pixel numbers would be over-represented.

So, to compensate, you could do

total_pixels = np.sum([a.flatten().shape for a in X_train]) mean_val = np.sum([a.flatten().shape * np.mean(a) for a in X_train]) / total_pixels 
 
 

Relacionados problema

-1  Scipy Solver devuelve un error / ¿Cómo usar Numpy.Seterr?  ( Scipy solver returns an error how to use numpy seterr ) 
¿Cómo puedo entender qué causa este error? RuntimeWarning: invalid value encountered in double_scalars and dx_norm/self.x_rtol <= x_norm)) Realmente no...

1  Clasificación de valores eigen en Python en For-Loop  ( Sorting of eigenvalues in python in for loop ) 
Estoy calculando y trazando los valores propios de una matriz 5x5 en función de un parámetro X. Sé que tengo que ordenar los valores propios, ya que no están ...

0  PIPLOT DE CRESCAS DE ARRAY  ( Pyplot of array crashes ) 
Estoy intentando trazar valores de matriz obtenidos de sumar columnas individuales de una matriz NUTPY. Trabajando en Win XP, Python 2.5, MatPlotlib-1.0.1, Nu...

0  Lógica de bucle para calcular% cambio  ( Loop logic to calculate change ) 
MI FREAFAME: A B C A_Q B_Q C_Q 27 40 41 2 1 etc 28 39 40 1 5 30 28 29 3 6 28 27 28 4 1 15 10 ...

-2  Levantar ioError ("% s no encontrado".% ruta)  ( Raise ioerrors not found path ) 
En la semana pasada, pasé mi tiempo tratando de resolver un gran problema al compilar mi programa.py. Mi script del programa es: "message": "Query key con...

8  Añadir la tasa de cambio a Pandas DataFrame  ( Add rate of change to pandas dataframe ) 
Tengo el siguiente fábrico de datos de Pandas: lastrun value 0 2013-10-24 13:10:05+00:00 55376 1 2013-...

0  Usando una columna en .txt para cálculo  ( Using a column in txt for calculation ) 
Tengo un archivo de texto con 5 columnas y 36 filas. Quiero elegir una columna específica y la use en un cálculo. Datos de muestra: #1 2 3...

1  Cómo hacer que la carga nombrada sea más rápida  ( How to make numpy load faster ) 
Me gustaría usar NOMPY para hacer que mi programa sea más rápido. La única parte que quiero usar es matrices de cadena. Cuando hago childInRed->setParentIt...

1  Obtenga elementos específicos de NDARRAY de NDARrays con forma (n,)  ( Get specific elements from ndarray of ndarrays with shape n ) 
Dado el NDARRAY: A = np.array([np.array([1], dtype='f'), np.array([2, 3], dtype='f'), np.array([4, 5], dtype='f'), ...

8  Calcule la media en los valores en las colecciones de Python.Counter  ( Calculate mean on values in python collections counter ) 
Estoy perfilando algunas mediciones de tiempo numérico que se agrupan extremadamente de cerca. Me gustaría obtener una media, desviación estándar, etc. Alguna...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos