교육 keras은 여전히 (I 사진은 8192 × 8192 큰 그림 == 64M입니다) 사진에 맞는 .fit의 .fit_generator 후 메모리가 부족 문제가 발생했습니다. 그래서 솔루션이 큰지도 작은지도를 절단하는 것입니다, 훈련을 던지는 작은 그림은, 밖으로지도의 실행 후 큰 이미지를 구성하는
그것은이 발견 된 나의 keras (win10 - 16G 메모리) 단지 (2048 × 4 == 1,600 × 2,048) 네 개의 패널까지 가자,
더 많은 출구가 주어집니다 : 4831838208의 할당은 시스템 메모리의 10 %를 초과합니다.
그 이유는 이러한 수치 NumPy와 별도로 자체를 유지하기 위해 아마, 교육 추가 소비에 해당됩니다 keras
도 대형 패널로 썰어
'' 작은 이미지 (16)의 소정 수로 절단 픽처 0.bmp 읽 폴더 명 OUT을 '' ' 에서 PIL 오기 이미지 오기 SYS, 운영체제 cut_num = 4 # 4 * 4 = 16 픽처 # 것 채워진 정사각형 이미지 DEF의 fill_image (화상) 폭, 높이 = image.size의 # 선택된 길이와 새로운 이미지로 큰 값의 폭 new_image_length 폭 = IF 폭> 높이 사람의 높이 #은 새로운 영상을 생성한다 [화이트] # new_image = Image.new (image.mode (new_image_length, new_image_length), 컬러 = '화이트') new_image =Image.new (image.mode (new_image_length, new_image_length)) #가 이전 중앙도도 새로운에 붙인 경우 폭> 신장 #의 높이보다 넓은 화상, 화상의 수직 치수가 채워 #를 (X, Y )도 튜플에 붙여도의 개시의 상대적인 위치를 나타내고, - new_image.paste (높이) / 2 화상 (0, INT ((new_image_length ))) 다른 : new_image.paste (이미지 (INT ((new_image_length를 - 폭) / 2 ), 0)) 반환 new_image # 접선도 데프 ) cut_image (이미지 : 폭, 높이 = image.size item_width = INT (폭 / cut_num) box_list = [] #(하부 우측, 상단 좌측) 에 대한 I 에서 (cut_num 0) 범위 : #를 两重循环,生成图片基于原图的位置 용 J 의 범위 (0, cut_num) : #의 인쇄 ((나는 item_width을 * J * item_width, (I + 1) * item_width, (j + 1) * item_width)) 상자 = (j의 *의 item_width 난 item_width, (j + 1) * item_width, (I + 1) * item_width) box_list.append을 (박스) image_list [image.crop (박스) = 용 상자 에 box_list] 복귀 image_list의 # 保存 DEF save_images (image_list) 인덱스 = 1 대이미지 에서 image_list : image.save ( " OUT / ' + STR (색인) + ' .BMP를 ' , ' BMP ' ) 지수 + = 1 의 경우 __name__ == ' __main__ ' : FILE_PATH = " 0.bmp " os.mkdir ( " 아웃 " ) 이미지 = Image.open (FILE_PATH) #에 image.show () 이미지 = fill_image (화상) image_list = cut_image (이미지) save_images (image_list)
도 조합의 패널보다 둘째, 큰
'' ' 큰 화상 형성하도록 함께 이미지 내부 지정된 폴더를 ' 오기 PIL.Image AS 이미지 오기 OS의 IMAGES_PATH = ' OUT \\ ' #의 포토 설정 어드레스 IMAGES_FORMAT = ' .BMP를 ' , ' .BMP ' ] #의 이미지 형식 IMAGE_SIZE = 2048 # 사진의 각 작은 크기의 이미지 ~ = 4 #의 사진 간격, 즉, 한 장의 사진으로 합병 후, 몇 줄이 있습니다 IMAGE_COLUMN = 4 # 사진 간격이, 그는 몇 가지의 총 후지도에 병합됩니다 열 IMAGE_SAVE_PATH = ' final.bmp ' # 주소 변환 사진 후 #는 사진 갤러리 주소에있는 모든 사진의 이름을 얻을 image_names = [이름 에 대한 이름 에 os.listdir (IMAGES_PATH) 용 부품 에 IMAGES_FORMAT IF os.path.splitext (이름) . 1] == 아이템] # 간단한 숫자 판정 화상 크기 설정에서 수행되는 실제 파라미터 세트 IF LEN (image_names) = 화상 ~ *! IMAGE_COLUMN : 인상 ValueError를가 ( " ! 파라미터 합성 화상의 요건의 수가 일치하지 않음 " ) #을 이미지 스티칭 함수 정의 데프 ) (image_compose을 : to_image = Image.new ( ' RGB ' (IMAGE_COLUMN을 IMAGE_SIZE *는 이미지 ~ * IMAGE_SIZE)) #은 새로운 맵 생성 #을루프를 통해, 대응하는 위치에 접착 각 이미지에 순서 를 위해 Y 의 범위 (. 1 화상 ~ + 1이다. ) 에 대한 X 의 범위 (1 ,. 1 IMAGE_COLUMN의 +. ) from_image = Image.open (IMAGES_PATH + image_names [IMAGE_COLUMN * (Y -. 1) + X -. 1 ])은 크기 조정 (. (IMAGE_SIZE, IMAGE_SIZE) Image.ANTIALIAS) to_image.paste (from_image ((X -. 1) * IMAGE_SIZE (Y -. 1) * IMAGE_SIZE)) to_image = to_image.convert ( ' L ' ) 복귀 to_image.save (IMAGE_SAVE_PATH) #가 새로운 무화과 저장 image_compose ()를 #의 통화 기능
그래서 .... 000 102 111 213 번호순 파일명 참고 ...