Как внедрить авто-кодировщик keras в набор данных изображений, такой как OXFORD5k, для поиска информации? - PullRequest
0 голосов
/ 11 января 2020

Я прошел через реализацию keras autoencoder , используя python on MNIST набор данных , который доступен в форматах idx-ubyte и npz, и для кодирования требуется патч 28 на 28 и чем декодировать. В моем случае я хочу применить ту же схему кодирования к моим наборам данных чистых изображений (не в формате idx-ubyte или .npz). Я использовал пакет gzip в google colab для того, чтобы прочитать файл набора изображений .tgz, содержащий изображения .jpeg. Но, к сожалению, изображения не загружаются в чистом виде, а скорее информируют об искаженных пикселях, таких как необработанные байты. Моя единственная цель - сначала прочитать изображения в чистом виде для кератов, чтобы обучить их кодированию и декодированию. Ниже приведен мой код:

import keras
from matplotlib import pyplot as plt
import numpy as np
import gzip
%matplotlib inline
from keras.layers import Input,Conv2D,MaxPooling2D,UpSampling2D
from keras.models import Model
from keras.optimizers import RMSprop

def extract_data(filename, num_images):
  with gzip.open(filename) as bytestream:
    bytestream.read(16)
    buf = bytestream.read(28 * 28 * num_images)
    data = np.frombuffer(buf, dtype=np.uint8).astype(np.float32)
    data = data.reshape(num_images, 28,28)
    return data
    #Here i am loading my dataset
    train_data = extract_data('oxbuild_images.tgz', 5062)

    query = train_data[5061]
    plt.imshow(query.reshape(28,28), cmap='gray')

Запрос изображения в искаженном виде, что нежелательно!

...