Чтобы быстро добраться до сути, я пытаюсь запустить это ядро kaggle на новом, большем и улучшенном наборе данных (1,3 ГБ) вместо 430 МБ исходного набора данных.Но после загрузки данных с использованием этого:
def convert_image_to_array(image_dir):
try:
image = cv2.imread(image_dir)
if image is not None :
image = cv2.resize(image, default_image_size)
return img_to_array(image)
else :
return np.array([])
except Exception as e:
print(f"Error : {e}")
return None
и здесь используется convert_image_to_array:
image_list, label_list = [], []
try:
print("[INFO] Loading images ...")
root_dir = listdir(directory_root)
for directory in root_dir :
# remove .DS_Store from list
if directory == ".DS_Store" :
root_dir.remove(directory)
for plant_folder in root_dir :
plant_disease_folder_list = listdir(f"{directory_root}/{plant_folder}")
for disease_folder in plant_disease_folder_list :
# remove .DS_Store from list
if (disease_folder == ".DS_Store"):
plant_disease_folder_list.remove(disease_folder)
for plant_disease_folder in plant_disease_folder_list:
print(f"[INFO] Processing {plant_disease_folder} ...")
plant_disease_image_list = listdir(f"{directory_root}/{plant_folder}/{plant_disease_folder}/")
for single_plant_disease_image in plant_disease_image_list :
if single_plant_disease_image == ".DS_Store" :
plant_disease_image_list.remove(single_plant_disease_image)
for image in plant_disease_image_list[:200]:
image_directory = f"{directory_root}/{plant_folder}/{plant_disease_folder}/{image}"
if image_directory.endswith(".jpg") == True or image_directory.endswith(".JPG") == True:
image_list.append(convert_image_to_array(image_directory))
label_list.append(plant_disease_folder)
print("[INFO] Image loading completed")
except Exception as e:
print(f"Error : {e}")
Моя проблема заключается в том, что после запуска этого кода мое ядро kaggleиспользование памяти резко увеличивается до 11 ГБ / 13 ГБ .На следующем шаге, который разбивает данные на две части для обучения и тестирования .. используя это:
np_image_list = np.array(image_list, dtype=np.float16) / 225.0
Я получаю MemoryError со следующим стеком:
---------------------------------------------------------------------------
MemoryError Traceback (most recent call last)
<ipython-input-7-2574d0b4a520> in <module>()
----> 1 np_image_list = np.array(image_list, dtype=np.float16) / 225.0
Как новичокв керасе, есть ли лучшие решения для загрузки и предварительной обработки изображений вместо загрузки всего в ОЗУ?если так, я буду признателен за вашу помощь с этим.
Спасибо