문제 원인 Dreambooth를 통해 특정 캐릭터같은 Subject를 학습하면 Fidelity는 만족스러울 수 있으나, Dreambooth로 학습할때에는 보통 학습 데이터셋의 양의 원래 모델을 학습했던 데이터셋보다 터무니없이 적으므로 학습한 토큰을 이용하여 그림을 출력해보면 다른 요소들을 일일히 지정해 주지 않으면 Diversity가 떨어져 거의 비슷비슷한 이미지가 나오게 된다. 하지만 드림부스로 수 천장을 학습시킨다고 무조건 좋은 것도 아니다. 왜냐하면 수 천장의 데이터셋에서 이상치가 있을 가능성이 매우 높기 때문에 자신이 원하지 않는 그림도 학습시킬 수도 있으며, 또한 수 천장의 이미지에서 여러 공통 특징 중에서 내가 원하는 공통된 특징만을 한 단어에 압축시키는 것이 매우 어려워 Fidelity가 낮..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbzNKKK%2FbtrWDorqOcu%2F7ZofkD1DUwrvZyFBMKriFk%2Fimg.png)
지금까지 여러 Latent Diffusion 모델을 드림부스로 특정 대상에 대한 개념을 파인튜닝 해보면서 어떤 설정이나 데이터셋에 따라서 결과에 차이가 발생한다는 것을 알게되었지만, 어느정도의 유의미한 차이가 있는지 판단에 어려움이 있었다. 그래서 나는 생성모델을 수학적으로 평가하는 방법들에 대하여 알아보았다. 평가요소우선, Latent Diffusion 모델과 같은 이미지 생성모델을 평가하려면 어떤 요소들을 고려해야 할지 알아보자Fidelity (충실도) : 이미지의 질 (실제와 얼마나 유사한가?)Diversity(다양성) : 이미지의 다양성이렇게 크게 두가지가 있다.생성 모델에서 출력한 이미지의 질은 당연히 중요하고, 생성 모델이 다양한 결과물을 출력할 수 있어야 생성모델이 진정한 생성모델이라고 할..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbmDb4y%2FbtrSjptZCyV%2FITOREWHkZUiitAUeFy53k1%2Fimg.png)
Stable Diffusion에 대한 인기가 높아지면서 모델의 파인 튜닝에 대한 관심도 같이 높아지고 있다. 그런데 여기서 간편한 모델 파인 튜닝 방법 중 하나인 Dreambooth(드림부스)라는 것이 주목 받고 있다. 이 글에서는Dreambooth 논문을 요약하고, 어떻게 쓰는 것이 효율적인지에 대하여 연구한 내용을 다룰 것이다. 이 글을 읽기 전에 Stable diffusion에 대한 글을 먼저 읽는것을 추천한다. Fine-tuning 이란? 먼저, Dreambooth가 하는 일인 Fine-tuning이 뭔지부터 설명해보겠다. Fine-tuning은 기존에 학습된 모델(pretrained model)을 기반으로 추가적으로 새로운 데이터셋을 학습하는 것을 통해 모델의 파라미터를 미세조정하는 것이다. F..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbxdLz2%2FbtrRZPf3cmG%2FpiwUwQNh3EJ5OXqKuvufq1%2Fimg.png)
요즘 Stable Diffusion 기반의 Novel AI가 큰 인기를 끌고 있다. 그래서 이에 대해 검색해보고 어떤 원리인지 이해하고 나서 정리를 해보았다. 이 글에서는 쉬운 이해를 위하여 자세한 수학적 원리나 매우 심도깊은 내용은 다루지 않을 것이다. 따라서 생략된 내용이 있을 수 있다. Stable Diffusion 이란? Stable Diffusion은 2022년에 발표된 text-to-image 딥러닝 모델이다. 이 모델은 Latent Diffusion 모델의 일종이고, 독일 뮌헨 대학교 Machine Vision & Learning Group (CompVis) 연구실의 "잠재 확산 모델을 이용한 고해상도 이미지 합성 연구"를 기반으로 Stability AI, CompVis LMU, Runway..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbp0dhv%2FbtrHtwKBZpC%2FBzCxHT21Em4da2uLDrFfF1%2Fimg.png)
발단 원래는 CodeRunner로 알고리즘 문제를 풀고 나서 실행했는데 디버깅 기능이 없어서 불편했다 이후 CodeRunner 없이도 Vscode로 설정하면 디버깅과 디버깅 없이 실행이 가능하는 것을 알게되고 나서, 디버깅 설정을 하고 실행하려 했으나 아래와 같은 오류가 발생했다. 원인 VScode에서 launch.json파일을 수정하라고 요구하는 것을 보아, 이는 gcc의 컴파일 빌드 단계가 아니라 gdb 실행 단계에서 발생하는 오류로 추정된다. 발생 원인은 VScode 에서 한글 파일명을 인식하는데 문제가 있어 발생하는 오류로 보인다. 실제로, test.cpp 코드를 실행할때는 아무 문제 없이 실행되었다. 이 문제의 원인을 예로 설명해보겠다. 소스코드.cpp 파일을 Vscode가 g++를 이용하여 컴..
동기 인터넷에 Dart 상속에 대해서 쓴 글들이 많지만 부모 클래스와 자식 클래스의 생성자가 동시에 필요할 때 어떻게 해야 하고, super와 this의 구체적인 작동 방식에 대해서 다루는 글이 없어서 기록해 보게 되었다. 오랫동안 생각하고 java의 상속에 대해 비교해가면서 작성하였으므로 참고하여 도움이 되었으면 한다. Dart 상속에 대해서 다른 언어들과 마찬가지로 상속에 대한 개념은 같다. 부모(상위) 클래스의 기능, 멤버 등을 자식(하위) 클래스가 물려받는 것이다. 그런데 Dart에서는 상속을 다루는 법이 약간 특이하다. Java에서의 상속은 아래 코드와 같다. class Cal { int left, right; //기본 생성자 public Cal(){} // 최소한 하나의 생성자가 있어야 자식 ..