Как предварительно обработать данные изображения, не потребляя слишком много оперативной памяти?
Это может показаться основным вопросом, но я застрял на нем и хотел бы получить некоторую помощь.
Я пытаюсь загрузить и предварительно обработать некоторые изображения в формате DICOM, чтобы передать их в мою модель Keras, так как у меня около 2 тысяч изображений, оперативная память была израсходована до того, как я завершил этап предварительной обработки. вот код этапа предварительной обработки:
(каталог, метки - предопределенные переменные)
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)
Затем я загружаю модель предварительно обработанными данными (набором данных).
Ты хоть представляешь, как мне стать лучше?
1 ответ
Вы можете использовать тензорные потоки 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
Метки автоматически выводятся из имени каталога.
Дополнительные параметры предварительной обработки см. В документации: Ссылка