Diffusion 이란?
Diffusion은 GAN, VAE와 같은 생성 모델(Generative Model)이다. 작년부터 화제를 모은 text-to-image모델인 Stable diffusion, DALL-E 2, Midjourney의 기반이 되는 모델이다.
Diffusion model의 학습
Diffusion model은 입력 이미지에 gaussian Noise를 여러 단계에 걸쳐 추가하여 완전한 random nosie로 만들어주는 과정을 거치고, 이후 여러 단계에 걸쳐 Noise를 제거하는 과정을 거침으로써 random noise로부터 이미지를 생성하는 과정을 수행한다.
학습하는 과정에서 입력 이미지에 Noise가 서서히 확산(diffusion) 하기 때문에 Diffusion이라는 이름이 붙었다고 한다.
위 그림을 살펴보면
Forward Diffusion Process에서는 이미지에 고정된(fixed) 정규 분포(=Gaussian분포)로 생성된 Noise가 더해지고, Reverse Diffusion Process에서는 이미지를 학습된(learned) 정규 분포로 생성된 Noise이미지로 빼준다.
학습 과정에서 모델은 생성 중인 샘플과 목표 샘플의 분포 간의 차이를 최소화 하는 방식으로 학습이 진행된다. loss function은 이 차이를 정량화하여, 모델의 파라미터를 반복적으로 조정하고 실제 데이터와 매우 유사한 샘플을 생성하도록 유도한다.
GAN vs Diffsuion
GAN과 Diffsuion을 비교하기전에 GAN에 대해 간략히 알아보자
GAN은 생성 AI 분야가 주목 받을 수 있게 한 대표 모델이다. GAN은 모델 학습 시 생성기와 판별기라는 두 개의 신경망을 사용한다. 생성기가 실제와 같은 샘플을 생성하는 역할을 하고, 판별기가 샘플이 진짜인지 가짜인지 구별하는 역할을 하게 된다.
GAN의 학습
모델 학습 시 생성기의 역할은 생성된 샘플을 실제 샘플로 분류하도록 판별 기를 속이는 것을 목표로 출력 샘플을 계속 개선해 나간다. 판별기의 피드백에 따라 파라미터를 조정하여 시간이 지남에 따라 점점 더 진짜 같은 샘플을 생성하게 된다.
동시에 판별기 또한 실제 데이터와 가짜 데이터를 구별하는 능력이 향상되며, 이를 통해 생성기는 더욱 사실적인 샘플을 생성하도록 개선된다.
학습이 계속됨에 따라 네트워크는 서로의 피드백을 기반으로 파라미터를 업데이트하여 점직적으로 각자의 성능을 향상한다.
이러한 학습 방식 덕분에 GAN은 이미지, 오디오, 텍스트를 매우 사실적이고 현실적으로 생성한다는 장점이 있다.
GAN과 Diffusion 비교
GAN도 생성모델이고 Diffsuion도 생성 모델이다. 두 모델 모두 고품질의 샘플을 생성하는 것을 목표로 하지만, 기본 아키텍처와 학습 방법에서 큰 차이를 보인다.
GAN 모델은 사실적인 이미지를 생성하긴 하지만 다양한 이미지를 생성하지 못한다는 단점이 존재한다. 또한 생성기나 판별기 두 개의 신경망중 어느 한쪽이라도 제대로 학습되지 않는다면, 생성된 결과물이 형편없을 확률이 크다. 학습에서의 불안정성이 존재한다는 의미로 해석할 수 있다.
반면 Diffusion 모델은 사실적인 샘플을 생성하기 위해 데이터 합성 및 노이즈 제거 작업이 체계적이고 세밀하게 조정할 수 있기 때문에, 모델 학습 과정에서 불안정성이 GAN에 비해 매우 적다. 그러나 학습 과정에서 GAN에 비해 계산량이 많아 더 오랜 시간이 소요된다는 단점이 존재한다.
그렇다면 GAN과 Diffusion을 각각 언제 써야 될까?
GAN은 실제 샘플에서의 복잡한 디테일을 잘 인식하기 때문에 사실적인 이미지를 생성하는데 적합하고, DIffusion 모델은 이미지 생성 과정을 세밀하게 제어해 원하는 유형의 이미지를 만드는데 적합하다.
실제로 1~2일 정도면 diffusion을 활용해 간단한 fine-tunnging을 적용하여 원하는 카테고리에 최적화된 모델을 개발할 수 있다.
결론
Diffusion 모델은 GAN과 VAE와 같은 생성 모델 중 하나로, Gaussian Noise를 단계적으로 추가하고 제거하는 과정을 통해 고품질의 이미지를 생성합니다. Stable Diffusion과 같은 모델들이 이를 기반으로 발전했으며, 이미지 생성 과정의 세밀한 제어와 안정성 덕분에 점차 인기를 얻고 있습니다.
GAN과 Diffusion은 각기 다른 특성을 지니며, 상황에 따라 적절하게 선택될 수 있습니다. GAN은 빠르고 사실적인 이미지 생성을 위해 적합하지만, 학습이 불안정할 수 있고 다양한 이미지를 생성하는 데는 한계가 있습니다. 반면, Diffusion 모델은 학습 과정이 더 안정적이며 다양한 이미지를 세밀하게 제어할 수 있지만, 계산 비용이 많이 들고 시간이 더 오래 걸린다는 단점이 있습니다.
따라서 두 모델은 사용 목적과 요구사항에 따라 적절히 선택해야 합니다. GAN은 빠른 이미지 생성이 필요한 경우, Diffusion 모델은 더 높은 품질과 제어가 필요한 이미지 생성에 적합합니다.
'딥러닝 > Vision' 카테고리의 다른 글
deepfloyd-if (0) | 2023.07.04 |
---|---|
stable diffusion (0) | 2023.07.04 |
Semantic Segmentation (0) | 2022.03.30 |
Mask R-CNN (0) | 2022.03.30 |
Object Detection (0) | 2022.03.30 |