In [5]:
import pickle

path = '../../rsc/obj/'

real_x_path = path + 'real_x_train.sav'
real_y_path = path + 'real_y_train.sav'

X_train = pickle.load(open(real_x_path, 'rb'))
y_train = pickle.load(open(real_y_path, 'rb'))

2. Crear vocabulario

A. Extracción de características

Una vez obtenido el conjunto de entrenamiento, procedemos a extraer sus características. Para ello, extraemos las características por cada una de las imagenes. Y, finalmente, unimos todas en un mismo conjunto de características.

Este proceso es aplicable a cualquier tipo de características, aunque en este caso se le aplique a las características HoG.


In [6]:
from skimage.feature import daisy
import pickle # Módulo para serializar

path = '../../rsc/obj/BoW_features/'

daisy_features_path = path + 'BoW_features'
ext= '.sav'

train_features = []
i = 0

# Cada 3000 imágenes creamos un conjunto de entrenamiento
for img in X_train: 
    if i%15000 ==0:
        print("Procesada imagen"+str(i)+"/"+str(len(X_train)))
        pickle.dump(train_features, open(daisy_features_path+str(i)+ext, 'wb'))
        train_features = []
#     img_grey = rgb2gray(img)
    features = daisy(img)
    numFils, numCols, sizeDesc = features.shape
    features = features.reshape((numFils*numCols,sizeDesc))
    train_features.append(features)
    i=i+1

print("Procesada imagen"+str(i)+"/"+str(len(X_train)))
pickle.dump(train_features, open(daisy_features_path+str(i)+ext, 'wb'))


Procesada imagen0/53688
Procesada imagen15000/53688
Procesada imagen30000/53688
Procesada imagen45000/53688
Procesada imagen53688/53688

In [7]:
import numpy as np
all_features = np.concatenate(train_features)
all_features.shape


Out[7]:
(347520, 200)