2017-07-17 4 views
1

のために使用することができ、私はPythonとテンソルフロー初心者だ、と思っていた...多層Tiffをモデル最適化

Tensor Flowがモデルの最適化/微調整に使用できるフォーマットに変身しますか?

私は現在、Multi-Tiffsのフォルダの各レイヤーを3D配列に配置していますが、Multi-Tiffsのラベルまたはファイル名を保持する必要があります。私はTFRecordsに変換するテンソルフロースクリプトをいくつか見てきましたが、ファイル名を保持するかどうかはわかりません。あなたはこれについて最善を尽くしますか?かなり大きなデータセットになります。

すべてのヘルプずっと

import os # For file handling 
from PIL import Image# Import Pillow image processing library 
import numpy 
CroppedMultiTiffs = "MultiTiffs/" 

for filename in os.listdir(MultiTiffs): 
## Imports Multi-Layer TIFF into 3D Numpy Array. 

    img = Image.open(MultiTiffs + filename) 
    imgArray = numpy.zeros((img.n_frames, img.size[1], img.size[0]),numpy.uint8) 
try: 
# for frames in range, img.n_frames for whole folder. 
    for frame in range(2,img.n_frames): 
     img.seek(frame) 
     imgArray[frame,:,:] = img 
     frame = frame + 1 
except (EOFError): img.seek(0) 
    # output error if it doesn't find a file. 
pass 

print(imgArray.shape) # imgArray is now 3D 
print(imgArray.size) 

最高の願い

TWP

答えて

0

大丈夫に感謝し、私は私の現在のimplimentationが作成されますがDaniilsブログ http://warmspringwinds.github.io/tensorflow/tf-slim/2016/12/21/tfrecords-guide/

から糸を使用してそれを考え出しました複数のTFRecordがあり、私はそれが単一のTFRecordである必要があると思います。 1つのTFRecordにします。それ、どうやったら出来るの?

次に、TFRecord読み込みスクリプトを使用してそれを検証し、Tensor Flowの正しい形式であることを確認することができます。私は現在、読み込みスクリプトを使用してエラーを取得しています。エラーを受信

from PIL import Image 
import numpy as np 
import tensorflow as tf 
import os 

def _bytes_feature(value): 
return tf.train.Feature(bytes_list=tf.train.BytesList(value=[value])) 

def _int64_feature(value): 
return tf.train.Feature(int64_list=tf.train.Int64List(value=[value])) 

path = 'test/' 
output = 'output/' 

fileList = [os.path.join(dirpath, f) for dirpath, dirnames, files in os.walk(path) for f in files if f.endswith('.tif')] 

print (fileList) 
for filename in fileList: 

    basename = os.path.basename(filename) 
    file_name = basename[:-4] 
    print ("processing file: " , filename) 
    print (file_name) 

    if not os.path.exists(output): 
     os.mkdir(output) 

    writer = tf.python_io.TFRecordWriter(output+ file_name + '.tfrecord') 
    img = Image.open(filename) 
    imgArray = np.zeros((img.n_frames, img.size[1], img.size[0]),np.uint8) 
    ## Imports Multi-Layer file into 3D Numpy Array. 
    try: 
     for frame in range(0,img.n_frames): 
      img.seek(frame) 
      imgArray[frame,:,:] = img 
      frame = frame + 1 
    except (EOFError): img.seek(0) 

    pass 

    print ("print img size:" , img.size) 
    print ("print image shape: " , imgArray.shape) 
    print ("print image size: " , imgArray.size) 

    annotation = np.array(Image.open(filename)) 

    height = imgArray.shape[0] 
    width = imgArray.shape[1] 
    depth = imgArray.shape[2] 

    img_raw = imgArray.tostring() 
    annotation_raw = annotation.tostring() 

    example = tf.train.Example(features=tf.train.Features(feature={ 
     'height': _int64_feature(height), 
     'width': _int64_feature(width), 
     'depth': _int64_feature(depth), # for 3rd dimension 
     'image_raw': _bytes_feature(img_raw), 
     'mask_raw': _bytes_feature(annotation_raw)})) 

    writer.write(example.SerializeToString()) 

私の現在のTFRecords読みスクリプト

import tensorflow as tf 
import os 

def read_and_decode(filename_queue): 
    reader = tf.TFRecordReader() 
    _, serialized_example = reader.read(filename_queue) 
    features = tf.parse_single_example(
     serialized_example, 
     # Defaults are not specified since both keys are required. 
     features={ 
      'image_raw': tf.FixedLenFeature([], tf.string), 
      'label': tf.FixedLenFeature([], tf.int64), 
      'height': tf.FixedLenFeature([], tf.int64), 
      'width': tf.FixedLenFeature([], tf.int64), 
      'depth': tf.FixedLenFeature([], tf.int64) 
     }) 
    image = tf.decode_raw(features['image_raw'], tf.uint8) 
    label = tf.cast(features['label'], tf.int32) 
    height = tf.cast(features['height'], tf.int32) 
    width = tf.cast(features['width'], tf.int32) 
    depth = tf.cast(features['depth'], tf.int32) 
    return image, label, height, width, depth 

with tf.Session() as sess: 
    filename_queue = tf.train.string_input_producer(["output/A.3.1.tfrecord"]) 
    image, label, height, width, depth = read_and_decode(filename_queue) 
    image = tf.reshape(image, tf.stack([height, width, 3])) 
    image.set_shape([32,32,3]) 
    init_op = tf.initialize_all_variables() 
    sess.run(init_op) 
    coord = tf.train.Coordinator() 
    threads = tf.train.start_queue_runners(coord=coord) 
    for i in range(1000): 
    example, l = sess.run([image, label]) 
    print (example,l) 
    coord.request_stop() 
    coord.join(threads) 

: -

InvalidArgumentError(トレースバックについては上記参照):名前:特集:ラベル(データ型:int64型)が必要です見つけられませんでした。

画像はグレースケールの複数ページです

関連する問題