-
Keras Cat Dog 분류 - 10. 딥러닝 시작하기 - 테스트 사진 분류하기 -마지막 시간!!주제를 딱히 정하기 싫을때 2019. 6. 14. 02:02
설치 부터 실제 분류까지 keras로
Cat과 Dog 데이터 셋으로 끝까지 해보기
2019/06/14 - [주제를 딱히 정하기 싫을때] - Keras Cat Dog 분류 - 9. 딥러닝 시작하기 - 과대적합2
14 저장된 모델 불러와서 사용 하기
-
my_log 폴더에 저장된 모델을 불러 오세요
-
훈련시 평가가 좋았던 모델을 사용합니다.
from keras.models import load_model
type_model = load_model('/keras/my_log/2019611231516_my_xception_cat_dog_model.h5')
-
테스트 파일을 전처리 하기 위해 모듈임포트 합니다.
from keras.preprocessing import image
import PIL
import os
import numpy as np
-
테스트 파일 목록을 가져와서 새롭게 만듭니다.
-
1.jpg 로 시작합니다.
-
또한 목록을 만들때 순서대로가 아닌 [1.jpg, 10.jpg.100.jpg....]로 리스트가 되어
목적에 맞는 이름을 생성 해야됩니다.
test_image_path = '/keras/dogsNcats/test1' #목록 갯수를 가져와서 1부터시작 하는 목록을 만듭니다. list_imgs= os.listdir(test_image_path) sort_imgs_num = [i+1 for i in range(len(list_imgs))] #1.jpg부터 시작 test_image = [] for imgs in sort_imgs_num: img_path = os.path.join(test_image_path,str(imgs)+'.jpg') #원하는 목록리스트를 만듭니다. img = image.load_img(img_path,target_size=(150,150)) # 해당 파일 사이즈를 변경합니다. img_tensor = image.img_to_array(img) # 해당 이미지를 배열로 바꿔 줍니다. img_tensor /= 255. # 이미지데이터를 정규화(표준화) 합니다. test_image.append(img_tensor) #변환된 데이터를 리스트에 저장합니다. image_array = np.array(test_image) #넘파이 배열로 바꿔줍니다. print("이미지 모양확인", image_array.shape)
이미지 모양확인 (12500, 150, 150, 3)
-
테스트 데이터를 모델에 적용합니다.
predictions = type_model.predict(image_array)
-
예측이 0.5 기준으로 0에 가까우면 고양이, 1에 가까우면 개로 판별합니다.
-
테스트 사진 분류 전에 데이터 확인을 합니다.
def plot_data(X, y, num_figures): plt.figure(figsize=(30, 20)) for i in range(num_figures): plt.subplot(2, num_figures, i+1) plt.imshow(X[i]) if y[i] >= 0.5: plt.title("Dog ("+ str(y[i]) + ")", fontsize=30) else: plt.title("Cat ("+ str(y[i]) + ")", fontsize=30) plt.tight_layout() plt.show() for i in range(0, 30, 6): plot_data(test_image[i:], predictions[i:], 6)
타이틀 위의 실수는 0~1 사이를 뜻하며 0.5 기준으로 0에 가까울수록 고양이로 판별합니다.
반대로 1에 가까우면 개로 팔별합니다.
얼핏봐도 분류가 나름 잘 된거 같군요
-
드디어 마지막입니다.
-
실제 사진을 딥러닝으로 분류해 봅시다!
-
12500장의 사진이 있습니다.
-
잘 정리될까요?
-
레이블은 없습니다.
-
직접 확인해보세요
import os, shutil test_image_path = '/keras/dogsNcats/test1' copy_testImage_path = '/keras/datasets/test' #str(i+1) 이유는 테스트사진이 1.jpg 부터 시작 def test_copy_files(prefix_str,i): image_paths = os.path.join(test_image_path ,str(i+1)+'.jpg') data_dir = os.path.join(copy_testImage_path,prefix_str) if not os.path.isdir(data_dir): os.makedirs(data_dir) shutil.copy(image_paths,data_dir) # 사진 자동 분류하기 for i in range(len(predictions)): img = predictions[i] if img >= 0.5: test_copy_files("dog",i) else: test_copy_files("cat",i) print("테스트 사진 분류 완료!")
도움이 되길 바라면서...
고생 많으셨습니다.
'주제를 딱히 정하기 싫을때' 카테고리의 다른 글
Keras Cat Dog 분류 - 9. 딥러닝 시작하기 - 과대적합2 (0) 2019.06.14 Keras Cat Dog 분류 - 8. 딥러닝 시작하기 - 과대적합 (0) 2019.06.13 Keras Cat Dog 분류 - 7. 딥러닝 시작하기 - 텐션보드 사용하기 (0) 2019.06.13 Keras Cat Dog 분류 - 6. 딥러닝 시작하기 - 모델 구성 (0) 2019.06.13 Keras Cat Dog 분류 - 5. 딥러닝 시작하기 - 콜백 함수 (0) 2019.06.13 -