Keras와 PyTorch로 DeepDream을 실습해보고, 차이점을 확인
위 사진과 같이 깊은 꿈에서, 이상한 꿈들에 나오는 동물 모습의 이미지이다.
일부 구름의 일반 이미지를 입력한 다음, 여기에 여러 종류의 이미지를 생성한다.
그 생선한 이미지들을 확대를 했을때, Admiral Dog, 달팽이, 양초새와 같은 이상한 이미지를 볼 수 있다.
이 과정에서 기존에 학습된 CNN(Convolutional Neural Network) 모델이
이미지에서 인식하는 패턴들을 증폭하여 이러한 이미지를 만들어주는것,
사전 학습된 CNN을 사용하여 이미지를 분석하고 인식한 패턴을 증폭시킴.
각 레이어는 서로 다른 특징을 다루며, 고수준 레이어는 얼굴이나 복잡한 패턴을, 저수준 레이어는 선이나 가장자리와 같은 간단한 특징을 인식.
고수준
저수준
사용자는 특정 레이어를 선택하고 그 레이어에서 인식한 특징을 증폭하도록 네트워크에 요청.
손실을 계산하고 이를 통해 네트워크가 이미지에서 더 많은 패턴을 인식하도록 하는 그래디언트 상승(gradient ascent) 과정을 사용.
결론적으로, Deep Dream 알고리즘은 CNN이 학습한 패턴을 이용해 입력 이미지를 기묘하고 예술적인 이미지로 변환시키는 기술
이미지 로드
표로 차이점을 만들어 가져왔다.
전체적으로 PyTorch는 작은 단위 개발을 진행해서 프로그래밍 난이도는 높을수 있지만,
퀄리티 높은 결과를 만들 수 있고,
Keras는 큰 덩어리의 이미 만들어진 코드들을 API를 통해 빠르게 개발할 수 있다
결론은
배우고, 간단하게 구현해보는 단계에서는 Keras,
추상적인 아이디어를 구현하기 위해선 PyTorch를 사용하면 된다.