def _convert_dataset(split_name, filenames, class_names_to_ids, dataset_dir, output_suffix): """Converts the given filenames to a TFRecord dataset. Args: split_name: The name of the dataset, either 'train' or 'validation'. filenames: A list of absolute paths to png or jpg images. class_names_to_ids: A dictionary from class names (strings) to ids (integers). dataset_dir: The directory where the converted datasets are stored. """ assert split_name in ['train', 'validation'] num_per_shard = int(math.ceil(len(filenames) / float(_NUM_SHARDS))) with tf.Graph().as_default(): image_reader = ImageReader() with tf.Session('') as sess: for shard_id in range(_NUM_SHARDS): output_filename = _get_dataset_filename( dataset_dir, split_name, shard_id, output_suffix) with tf.python_io.TFRecordWriter(output_filename) as tfrecord_writer: start_ndx = shard_id * num_per_shard end_ndx = min((shard_id + 1) * num_per_shard, len(filenames)) for i in range(start_ndx, end_ndx): sys.stdout.write('\r>> Converting image %d/%d shard %d, %s' % ( i + 1, len(filenames), shard_id, filenames[i])) sys.stdout.flush() # Read the filename: image_data = tf.gfile.FastGFile(filenames[i], 'r').read() height, width = image_reader.read_image_dims(sess, image_data) class_name = os.path.basename(os.path.dirname(filenames[i])) class_id = class_names_to_ids[class_name] if sys.version_info[0] == 3: example = dataset_utils.image_to_tfexample( image_data, 'jpg'.encode(), height, width, class_id) else: example = dataset_utils.image_to_tfexample( image_data, 'jpg', height, width, class_id) tfrecord_writer.write(example.SerializeToString()) sys.stdout.write('\n') sys.stdout.flush()
def _add_to_tfrecord(data_filename, labels_filename, num_images, tfrecord_writer): """Loads data from the binary MNIST files and writes files to a TFRecord. Args: data_filename: The filename of the MNIST images. labels_filename: The filename of the MNIST labels. num_images: The number of images in the dataset. tfrecord_writer: The TFRecord writer to use for writing. """ images = _extract_images(data_filename, num_images) labels = _extract_labels(labels_filename, num_images) shape = (_IMAGE_SIZE, _IMAGE_SIZE, _NUM_CHANNELS) with tf.Graph().as_default(): image = tf.placeholder(dtype=tf.uint8, shape=shape) encoded_png = tf.image.encode_png(image) with tf.Session('') as sess: for j in range(num_images): sys.stdout.write('\r>> Converting image %d/%d' % (j + 1, num_images)) sys.stdout.flush() png_string = sess.run(encoded_png, feed_dict={image: images[j]}) example = dataset_utils.image_to_tfexample( png_string, 'png'.encode(), _IMAGE_SIZE, _IMAGE_SIZE, labels[j]) tfrecord_writer.write(example.SerializeToString())
def _add_to_tfrecord(data_filename, labels_filename, num_images, tfrecord_writer): """Loads data from the binary MNIST files and writes files to a TFRecord. Args: data_filename: The filename of the MNIST images. labels_filename: The filename of the MNIST labels. num_images: The number of images in the dataset. tfrecord_writer: The TFRecord writer to use for writing. """ images = _extract_images(data_filename, num_images) labels = _extract_labels(labels_filename, num_images) shape = (_IMAGE_SIZE, _IMAGE_SIZE, _NUM_CHANNELS) with tf.Graph().as_default(): image = tf.placeholder(dtype=tf.uint8, shape=shape) encoded_png = tf.image.encode_png(image) with tf.Session('') as sess: for j in range(num_images): sys.stdout.write('\r>> Converting image %d/%d' % (j + 1, num_images)) sys.stdout.flush() png_string = sess.run(encoded_png, feed_dict={image: images[j]}) example = dataset_utils.image_to_tfexample( png_string, 'png', _IMAGE_SIZE, _IMAGE_SIZE, labels[j]) tfrecord_writer.write(example.SerializeToString())
def _convert_dataset(split_name, filenames, class_names_to_ids, protobuf_dir, num_shards): """ :param split_name: :param filenames: :param class_names_to_ids: :param protobuf_dir: :return: """ assert split_name in ['train', 'validation'] num_per_shard = int(math.ceil(len(filenames) / float(num_shards))) with tf.Graph().as_default(): image_reader = ImageReader() with tf.Session('') as sess: for shard_id in range(num_shards): output_filename = _get_dataset_filename( protobuf_dir, split_name, shard_id, num_shards) with tf.python_io.TFRecordWriter( output_filename) as tfrecord_writer: start_ndx = shard_id * num_per_shard end_ndx = min((shard_id + 1) * num_per_shard, len(filenames)) for i in range(start_ndx, end_ndx): sys.stdout.write( '\r>> Converting image %d/%d shard %d' % (i + 1, len(filenames), shard_id)) sys.stdout.flush() # Read the filename: print("Converting image %s" % filenames[i]) try: image_data = tf.gfile.FastGFile( filenames[i], 'rb').read() except Exception as e: print(e) height, width = image_reader.read_image_dims( sess, image_data) class_name = os.path.basename( os.path.dirname(filenames[i])) class_id = class_names_to_ids[class_name] example = dataset_utils.image_to_tfexample( image_data, b'jpg', height, width, class_id) tfrecord_writer.write(example.SerializeToString()) sys.stdout.write('\n') sys.stdout.flush()
def _add_to_tfrecord(filename, tfrecord_writer, offset=0): """Loads data from the cifar10 pickle files and writes files to a TFRecord. Args: filename: The filename of the cifar10 pickle file. tfrecord_writer: The TFRecord writer to use for writing. offset: An offset into the absolute number of images previously written. Returns: The new offset. """ with tf.gfile.Open(filename, 'rb') as f: if sys.version_info < (3, ): data = cPickle.load(f) else: data = cPickle.load(f, encoding='bytes') images = data[b'data'] num_images = images.shape[0] images = images.reshape((num_images, 3, 32, 32)) labels = data[b'labels'] with tf.Graph().as_default(): image_placeholder = tf.placeholder(dtype=tf.uint8) encoded_image = tf.image.encode_png(image_placeholder) with tf.Session('') as sess: for j in range(num_images): sys.stdout.write( '\r>> Reading file [%s] image %d/%d' % (filename, offset + j + 1, offset + num_images)) sys.stdout.flush() image = np.squeeze(images[j]).transpose((1, 2, 0)) label = labels[j] png_string = sess.run(encoded_image, feed_dict={image_placeholder: image}) example = dataset_utils.image_to_tfexample( png_string, b'png', _IMAGE_SIZE, _IMAGE_SIZE, label) tfrecord_writer.write(example.SerializeToString()) return offset + num_images
def _convert_dataset(split_name, filenames, class_names_to_ids, dataset_dir): """Converts the given filenames to a TFRecord dataset. Args: split_name: The name of the dataset, either 'train' or 'validation'. filenames: A list of absolute paths to png or jpg images. class_names_to_ids: A dictionary from class names (strings) to ids (integers). dataset_dir: The directory where the converted datasets are stored. """ assert split_name in ['train', 'validation'] num_per_shard = int(math.ceil(len(filenames) / float(_NUM_SHARDS))) with tf.Graph().as_default(): image_reader = ImageReader() with tf.Session('') as sess: for shard_id in range(_NUM_SHARDS): output_filename = 'flowers_%s_%05d-of-%05d.tfrecord' % ( split_name, shard_id, _NUM_SHARDS) output_filename = os.path.join(dataset_dir, output_filename) with tf.python_io.TFRecordWriter(output_filename) as tfrecord_writer: start_ndx = shard_id * num_per_shard end_ndx = min((shard_id+1) * num_per_shard, len(filenames)) for i in range(start_ndx, end_ndx): sys.stdout.write('\r>> Converting image %d/%d shard %d' % ( i+1, len(filenames), shard_id)) sys.stdout.flush() # Read the filename: image_data = tf.gfile.FastGFile(filenames[i], 'r').read() height, width = image_reader.read_image_dims(sess, image_data) class_name = os.path.basename(os.path.dirname(filenames[i])) class_id = class_names_to_ids[class_name] example = dataset_utils.image_to_tfexample( image_data, 'jpg', height, width, class_id) tfrecord_writer.write(example.SerializeToString()) sys.stdout.write('\n') sys.stdout.flush()
def _convert_dataset(split_name, filenames, filename_to_class_id, dataset_dir): """Converts the given filenames to a TFRecord dataset. Args: split_name: The name of the dataset, either 'train' or 'valid'. filenames: A list of absolute paths to png images. filename_to_class_id: A dictionary from filenames (strings) to class ids (integers). dataset_dir: The directory where the converted datasets are stored. """ print('Converting the {} split.'.format(split_name)) # Train and validation splits are both in the train directory. if split_name in ['train', 'valid']: png_directory = os.path.join(dataset_dir, 'mnist_m', 'mnist_m_train') elif split_name == 'test': png_directory = os.path.join(dataset_dir, 'mnist_m', 'mnist_m_test') with tf.Graph().as_default(): image_reader = ImageReader() with tf.Session('') as sess: output_filename = _get_output_filename(dataset_dir, split_name) with tf.python_io.TFRecordWriter( output_filename) as tfrecord_writer: for filename in filenames: # Read the filename: image_data = tf.gfile.FastGFile( os.path.join(png_directory, filename), 'r').read() height, width = image_reader.read_image_dims( sess, image_data) class_id = filename_to_class_id[filename] example = dataset_utils.image_to_tfexample( image_data, 'png', height, width, class_id) tfrecord_writer.write(example.SerializeToString()) sys.stdout.write('\n') sys.stdout.flush()
def _convert_dataset(split_name, filenames, filename_to_class_id, dataset_dir): """Converts the given filenames to a TFRecord dataset. Args: split_name: The name of the dataset, either 'train' or 'valid'. filenames: A list of absolute paths to png images. filename_to_class_id: A dictionary from filenames (strings) to class ids (integers). dataset_dir: The directory where the converted datasets are stored. """ print('Converting the {} split.'.format(split_name)) # Train and validation splits are both in the train directory. if split_name in ['train', 'valid']: png_directory = os.path.join(dataset_dir, 'mnist_m', 'mnist_m_train') elif split_name == 'test': png_directory = os.path.join(dataset_dir, 'mnist_m', 'mnist_m_test') with tf.Graph().as_default(): image_reader = ImageReader() with tf.Session('') as sess: output_filename = _get_output_filename(dataset_dir, split_name) with tf.python_io.TFRecordWriter(output_filename) as tfrecord_writer: for filename in filenames: # Read the filename: image_data = tf.gfile.FastGFile( os.path.join(png_directory, filename), 'r').read() height, width = image_reader.read_image_dims(sess, image_data) class_id = filename_to_class_id[filename] example = dataset_utils.image_to_tfexample(image_data, 'png', height, width, class_id) tfrecord_writer.write(example.SerializeToString()) sys.stdout.write('\n') sys.stdout.flush()
def _tf_example(image_path, label_id): image_bytes, image_format, image_h, image_w = _load_image(image_path) log.debug("%s: format=%s size=%i height=%i width=%i", image_path, image_format, len(image_bytes), image_h, image_w) return dataset_utils.image_to_tfexample(image_bytes, image_format.encode(), image_h, image_w, label_id)
def _convert_dataset(split_name, filenames, class_names_to_ids, dataset_dir): """Converts the given filenames to a TFRecord dataset. Args: split_name: The name of the dataset, either 'train' or 'validation'. filenames: A list of absolute paths to png or jpg images. class_names_to_ids: A dictionary from class names (strings) to ids (integers). dataset_dir: The directory where the converted datasets are stored. """ assert split_name in ['train', 'validation'] num_per_shard = int(math.ceil(len(filenames) / float(_NUM_SHARDS))) with tf.Graph().as_default(): image_reader = ImageReader() with tf.Session('') as sess: for shard_id in range(_NUM_SHARDS): output_filename = _get_dataset_filename( dataset_dir, split_name, shard_id) with tf.python_io.TFRecordWriter( output_filename) as tfrecord_writer: start_ndx = shard_id * num_per_shard end_ndx = min((shard_id + 1) * num_per_shard, len(filenames)) for i in range(start_ndx, end_ndx): sys.stdout.write( '\r>> Converting image %d/%d shard %d' % (i + 1, len(filenames), shard_id)) sys.stdout.flush() # Read the filename: print("\n Reading File : ", filenames[i]) image_data = tf.gfile.FastGFile(filenames[i], 'rb').read() height, width = image_reader.read_image_dims( sess, image_data) #print("\n\nImage dimensions, height : {0} , width : {1}".format(height, width)) ##################################### # Select the preprocessing function # ##################################### # preprocessing_name = 'resnet_v1_50' # image_preprocessing_fn = preprocessing_factory.get_preprocessing( # preprocessing_name, # is_training=True) # preprocessed_image = image_preprocessing_fn(image_data, height, width) class_name = os.path.basename( os.path.dirname(filenames[i])) # print("class_name: ", class_name) class_id = class_names_to_ids[class_name] # print("class_id: ", class_id) example = dataset_utils.image_to_tfexample( image_data, b'jpg', height, width, class_id) tfrecord_writer.write(example.SerializeToString()) sys.stdout.write('\n') sys.stdout.flush()