프로그래밍/2P1L project
데이터 생성과 오토인코더 활용
austag
2023. 8. 27. 23:17
앞서 실행한 GAN의 결과를 보고 이유를 생각해보았습니다.
1. 선의 두께가 얇다
2. GAN이 학습하기에는 데이터 수가 부족하다
이러한 이유로 데이터 수를 더 늘렸습니다.
지금까지 모인 데이터는 233장으로 매우 적은 수입니다. 선의 두께를 올리고 표정을 더 정확히 그리기 위해 한 표정을 여러 번 그리는 작업을 통해 직접 제작한 데이터는 총 500장으로 만들었습니다. 1000장을 채우는 것이 목표였는데 나머지를 어떻게 채울까 고민하다가 오토인코더를 사용하기로 했습니다.
오토인코더는 데이터의 특징을 뽑아 생성하기 때문에 입력 데이터의 특징을 잘 담고 있습니다. 이러한 이유로 이 알고리즘은 데이터가 충분하지 않은 곳에서 사용될 수 있다고 했습니다. 이 프로젝트도 데이터가 부족한 상황이기 때문에 오토인코더로 생성한 이미지를 사용하는 것이 도움이 될 것이라고 추측했습니다.
#학습 결과 저장
save_path = "/content/drive/MyDrive/2023/STEAM/2P1L/New"
ae_imgs = autoencoder.predict(X_test)
plt.figure(figsize=(14,4)) #출력 이미지 크기
for image_idx in range(X_test.shape[0]):
save_img = ae_imgs[image_idx].reshape(img_size, img_size)
save_img = (save_img*255).astype('uint8')
save_img = Image.fromarray(save_img)
#print(np.array(save_img))
#print("save_path/"+str(image_idx)+'.png')
save_img.save(save_path+"/"+str(image_idx)+'.png', 'PNG')
친구가 짠 학습 결과를 저장하는 코드입니다. New 폴더에 생성된 순서대로 파일 이름이 정해져 png 파일로 저장했습니다.
#데이터 불러오기
new = '/content/drive/MyDrive/2023/STEAM/2P1L/New'
os.listdir(new)
#데이터 리스트 만들기
img_list1 = os.listdir(new)
print(len(img_list1))
이렇게 오토인코더를 4번 돌려서 데이터를 모으고 선이 얇거나 없는 데이터는 분별을 하며 위의 코드로 수를 확인하면서 500장을 만들었습니다.
총 1000장의 데이터가 모여 700장의 데이터가 학습셋이되고 300장이 테스트셋이 될 것입니다. 추가로 만든 데이터셋으로 다시 GAN을 돌려보도록 하겠습니다.