![](/img/trans.png)
[英]Convert huge Polars dataframe to dict without consuming too much RAM
[英]How to preprocess image data without too much consuming RAM?
这似乎是一个基本问题,但我一直坚持下去并希望得到一些帮助。
我正在尝试以 DICOM 格式加载和预处理一些图像,以便将它们提供给我的 Keras 模型,因为我有大约 2000 张图像,因此在我完成预处理步骤之前就消耗了 RAM。 这是预处理步骤的代码:
(目录,标签是预定义的变量)
shape=(256,256)
patients_filename=tf.constant([directory+'/'+path for path in os.listdir(directory)])
dataset = tf.data.Dataset.from_tensor_slices((patients_filename,labels))
def parse_function(patientfilename,label):
var=tf.data.Dataset.list_files(patientfilename+'/*')
for image in var:
image=tf.io.read_file(image)
image = tfio.image.decode_dicom_image(image,dtype=tf.uint64)
image = tf.cast(image, tf.float32)
image=tf.image.resize(image,size=shape)/65535.0
image=tf.reshape(image,shape+(1,))
return image,label
dataset = dataset.map(parse_function).batch(8).prefetch(1)
然后我用预处理的数据(数据集)输入模型。
你知道我怎样才能做得更好吗?
您可以使用 tensorflows tf.keras.preprocessing.image.ImageDataGenerator
来预处理您的图像,并在需要时使用它的“flow_from_directory”方法从磁盘加载数据。
train_datagen = tf.keras.preprocessing.image.ImageDataGenerator(
rescale=1./255,
shear_range=0.2,
zoom_range=0.2,
horizontal_flip=True
)
test_datagen = tf.keras.preprocessing.image.ImageDataGenerator(rescale=1./255)
train_generator = train_datagen.flow_from_directory(
'data/train',
target_size=(150, 150),
batch_size=32,
class_mode='categorical')
validation_generator = test_datagen.flow_from_directory(
'data/validation',
target_size=(150, 150),
batch_size=32,
class_mode='categorical')
model.fit(
train_generator,
steps_per_epoch=2000,
epochs=50,
validation_data=validation_generator,
validation_steps=800)
你的目录结构应该是这样的
-data
-train
-category_name_1
-category_name_2
-test
-category_name_1
-category_name_2
标签是从目录名称自动派生的。
有关更多预处理选项,请参阅文档: 链接
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.