2017-09-16 6 views

答えて

0

imagesという名前のリストに画像が保存されているとします。images[0]は最初のように続きます。中央の作物画分がcentralというリストにあると仮定します。ここで、central[0]は最初のイメージに必要な分数、central[i]i番目のイメージです。 1のように第1中心割合で最初の画像をトリミングしてからtf.image.central_crop(images[0], central[0])を得る結果

croped_images = [tf.image.central(i, j) for i, j in zip(images, central)] 

:今、これを試してみてください。

UPDATE

あなたのバッチのサブセットのみn個を処理したい場合は、発電機を使用しています。これはあなたの記憶を惜しまないでしょう。

from itertools import izip 

def gen_central_cropped(images, central, n): 
    for i in range(0, len(images), n): 
     yield [tf.image.central_crop(img,fraction) for img, fraction in izip(images[i:i+n],central[i:i+n])] 

func = gen_central_cropped 

for n_central_croped in func(images, central, n): 
    #write or process n central cropped images here 

だから、あなたは70Kイメージトレーニングからプログラムを読み込むには、あなたがこの異なる画分でバッチが、あなたの記憶がそれをヘンデルすることはできません中央作物にしたい256の言うことができますのバッチを設定します。次に、許容可能なサブバッチnを使用してジェネレータを使用します(10とします)。これで、メモリは一度に10枚しか切り取られません。別のデータセットに書き込んだり、さらに処理して書き込み/削除することができます。

+0

あなたの答えはまだ確認していませんが、少なくとも私の場合、画像のサイズは非常に大きく、一度に読み込むことができない約70,000枚の画像があります。 –

+0

更新された答えを確認してください。 – prometeu

関連する問題