2016-03-18 34 views
7

Próbuję nakarmić 1750 * 1750 obrazów w Tensorflow, ale nie wiem jak etykietować i podawać dane po przekonwertowaniu obrazów na tensor za pomocą funkcji tf.image.decode_jpeg().Jak ładować, etykietować i podawać dane jpeg do Tensorflow?

Obecnie mój kod to:

import tensorflow as tf 
import numpy as np 

import imageflow 
import os, glob 

sess = tf.InteractiveSession() 

def read_jpeg(filename_queue): 
reader = tf.WholeFileReader() 
key, value = reader.read(filename_queue) 

my_img = tf.image.decode_jpeg(value) 
my_img.set_shape([1750, 1750, 1]) 
print(value) 
return my_img 

##################################################### 
def read_image_data(): 
jpeg_files = [] 
images_tensor = [] 

i = 1 
WORKING_PATH = "/Users/Zanhuang/Desktop/NNP/DATA" 
jpeg_files_path = glob.glob(os.path.join(WORKING_PATH, '*.jpeg')) 

for filename in jpeg_files_path: 
    print(i) 
    i += 1 
    jpeg_files.append(filename) 


filename_queue = tf.train.string_input_producer(jpeg_files) 

mlist = [read_jpeg(filename_queue) for _ in range(len(jpeg_files))] 

init = tf.initialize_all_variables() 

sess = tf.Session() 
sess.run(init) 

images_tensor = tf.convert_to_tensor(images_tensor) 


sess.close() 

Teraz, jak powiedziałem wcześniej, muszę nakarmić i etykiety danych. Widziałem pliki samouczka CIFAR-10, ale zapisywały etykiety w pliku i nie planuję tego robić.

Jestem całkiem nowy w firmie Tensorflow, więc prosimy o zachowanie jak najdokładniejszej odpowiedzi.

Dzięki!

+0

Jak o użyciu tego samego formatu MINST_data i korzystania input_data.py aby ją przeczytać? – ERed

Odpowiedz

22

W zależności od tego, co próbujesz zrobić, należy wziąć pod uwagę kilka wskazówek.

  1. Jeśli tylko chcesz uruchomić wnioskowanie na pliku JPEG arbitralny (tj etykiety nie są wymagane), a następnie można pójść za przykładem classify_image.py który zasila w obraz JPEG do wstępnie przeszkolony sieci Incepcja :

    github.com/tensorflow/models/blob/master/tutorials/image/imagenet/classify_image.py

  2. Jeśli chcą trenować (lub dostroić) model na małej niestandardowego zestawu danych obrazów w formacie JPEG, a następnie spójrz na ten przykład dla jak trenować model z małego zestawu obrazów JPEG.

    github.com/tensorflow/tensorflow/blob/master/tensorflow/examples/image_retraining/retrain.py

  3. Jeśli chcą trenować (lub dostroić) model na dużej niestandardowego zestawu danych obrazów w formacie JPEG, a następnie przeczytaniu wielu plików indywidualne JPEG będą nieefektywne i spowolnić szkolenia ogromnie .

Proponuję następujące procedury opisane w bibliotece Incepcja/modelu, który konwertuje katalog obrazów JPEG w sharded recordio zawierającej odcinkach obrazy JPEG.

github.com/tensorflow/models/blob/master/research/inception/inception/data/build_image_data.py

Instrukcja uruchamiając skrypt konwersji dostępne są tutaj:

github.com/tensorflow/models/blob/master/research/inception/README.md#how-to-construct-a-new-dataset-for-retraining

Po uruchomieniu konwersji, można następnie zatrudnić/skopiować rurociągu obraz przebiegu wyprzedzającego używany przez rozpoczęcia/modelu.

github.com/tensorflow/models/blob/master/research/inception/inception/image_processing.py

+0

Czy przedstawione tutaj podejścia są ogólne, które można zastosować do innych modeli tensorflow, a nie tylko do sieci początkowej? Dzięki. – user297850

+0

Tak, są to podejścia ogólne, chociaż powyższe skrypty są bardziej nastawione na problemy z rozpoznawaniem obrazów. – user5869947