61

jpeg 画像のディレクトリであるトレーニング データと、ファイル名と関連するカテゴリ ラベルを含む対応するテキスト ファイルがあります。tensorflow のドキュメントで説明されているように、このトレーニング データを tfrecords ファイルに変換しようとしています。私はこれを機能させるためにかなりの時間を費やしましたが、リーダーのいずれかを使用して jpeg ファイルを読み取り、それらを tfrecordwriter を使用して tfrecord に追加する方法を示すテンソルフローの例はありません

4

8 に答える 8

22

Tensorflow の開始モデルにはbuild_image_data.pyファイルがあり、各サブディレクトリがラベルを表すという仮定で同じことを達成できます。

于 2016-06-09T20:42:14.250 に答える
0

このスクリプトを試してください: (VOC セグメンテーション データセットで使用: http://host.robots.ox.ac.uk/pascal/VOC/voc2012/ )

import numpy as np
import tensorflow as tf
import scipy.io # to read .mat files
from PIL import Image # to read image files
            
        
    
def get_image(path):
        jpg = Image.open(path).convert('RGB')
        return np.array(jpg)
    
def get_label_png(path):
        png = Image.open(path) # image is saved as palettised png. 
        arr = np.array(png)
        return arr[..., None]
        
def get_example(image, label):
    feature = {
        'height': tf.train.Feature(int64_list=tf.train.Int64List(value=[image.shape[0]])),
        'width': tf.train.Feature(int64_list=tf.train.Int64List(value=[image.shape[1]])),
        'image': tf.train.Feature(bytes_list=tf.train.BytesList(value=[image.tobytes()])),
        'label': tf.train.Feature(bytes_list=tf.train.BytesList(value=[label.tobytes()]))
    }
    return tf.train.Example(features=tf.train.Features(feature=feature))
    
                    
                    
## Paths ======================================
images_folder = 'data/images/' #images folder
labels_folder = 'data/labels/' #label folder
                    
train_file = 'data/train.txt'
val_file = 'data/val.txt'
                    
TRAIN = 'data/train.tfrecords'
VAL = 'data/val.tfrecords'
                    
## write train dataset
with tf.io.TFRecordWriter(TRAIN) as writer:
with open(train_file) as file:
filenames = [s.rstrip('\n') for s in file.readlines()]
for name in filenames:
image = utils.get_image(images_folder+name+'.jpg')
label = utils.get_label_png(labels_folder+name+'.png')
writer.write(utils.get_example(image, label).SerializeToString())
## write validation dataset
with tf.io.TFRecordWriter(VAL) as writer:

 with open(val_file) as file:
  filenames = [s.rstrip('\n') for s in file.readlines()]
  for name in filenames:
      image = utils.get_image(images_folder+name+'.jpg')
      label = utils.get_label_png(labels_folder+name+'.png')
      writer.write(utils.get_example(image, label).SerializeToString())
于 2022-01-18T14:52:48.397 に答える