지금까지 여러 Latent Diffusion 모델을 드림부스로 특정 대상에 대한 개념을 파인튜닝 해보면서 어떤 설정이나 데이터셋에 따라서 결과에 차이가 발생한다는 것을 알게되었지만, 어느정도의 유의미한 차이가 있는지 판단에 어려움이 있었다. 그래서 나는 생성모델을 수학적으로 평가하는 방법들에 대하여 알아보았다. 평가요소우선, Latent Diffusion 모델과 같은 이미지 생성모델을 평가하려면 어떤 요소들을 고려해야 할지 알아보자Fidelity (충실도) : 이미지의 질 (실제와 얼마나 유사한가?)Diversity(다양성) : 이미지의 다양성이렇게 크게 두가지가 있다.생성 모델에서 출력한 이미지의 질은 당연히 중요하고, 생성 모델이 다양한 결과물을 출력할 수 있어야 생성모델이 진정한 생성모델이라고 할..
Stable Diffusion에 대한 인기가 높아지면서 모델의 파인 튜닝에 대한 관심도 같이 높아지고 있다. 그런데 여기서 간편한 모델 파인 튜닝 방법 중 하나인 Dreambooth(드림부스)라는 것이 주목 받고 있다. 이 글에서는Dreambooth 논문을 요약하고, 어떻게 쓰는 것이 효율적인지에 대하여 연구한 내용을 다룰 것이다. 이 글을 읽기 전에 Stable diffusion에 대한 글을 먼저 읽는것을 추천한다. Fine-tuning 이란? 먼저, Dreambooth가 하는 일인 Fine-tuning이 뭔지부터 설명해보겠다. Fine-tuning은 기존에 학습된 모델(pretrained model)을 기반으로 추가적으로 새로운 데이터셋을 학습하는 것을 통해 모델의 파라미터를 미세조정하는 것이다. F..
요즘 Stable Diffusion 기반의 Novel AI가 큰 인기를 끌고 있다. 그래서 이에 대해 검색해보고 어떤 원리인지 이해하고 나서 정리를 해보았다. 이 글에서는 쉬운 이해를 위하여 자세한 수학적 원리나 매우 심도깊은 내용은 다루지 않을 것이다. 따라서 생략된 내용이 있을 수 있다. Stable Diffusion 이란? Stable Diffusion은 2022년에 발표된 text-to-image 딥러닝 모델이다. 이 모델은 Latent Diffusion 모델의 일종이고, 독일 뮌헨 대학교 Machine Vision & Learning Group (CompVis) 연구실의 "잠재 확산 모델을 이용한 고해상도 이미지 합성 연구"를 기반으로 Stability AI, CompVis LMU, Runway..
발단 원래는 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(){} // 최소한 하나의 생성자가 있어야 자식 ..
문제 해답 간단한 등차수열 문제이다. 등차수열 문제를 for문을 응용하여 짧게 해결하는 아이디어가 떠올라서 적어본다. #include using namespace std; int main() { int n, i, ac = 0; cin >> n; for(i = 1 ; (n-1)>ac ; i++){ ac += 6*i; } printf("%d", i); } 이 알고리즘에서는 for문에서 ac라는 변수를 이용하여 짧게 해결하였다. i가 증가하면서 ac에 계속 6 * i 를 누적하여 더하는 방식으로 예외 케이스 없이 완전히 일반화하여 문제를 해결했다.
Vscode에 대해서 vscode는 microsoft에서 개발한 텍스트 에디터이다 기반은 텍스트에디터이지만 수많은 Extension으로 기능을 확장하여 IDE급으로 사용이 가능하다! 하지만 그만큼 사용 전에 설정해야하는 부분이 귀찮기는 하다 또한, Visual Studio같은 IDE보다 가볍기 때문에 알고리즘 문제 풀이할때 솔루션, 빌드 설정등의 쓸데없는 기능은 제외하고 필요한 부분만 골라쓸 수 있다 설문조사 결과, 요즘은 Visual Studio보다 VScode가 더 인기가 많다고 한다 Code 실행을 위한 Code Runner Extension 설치! Code를 컴파일하고 실행할때 마다 터미널에서 명령어를 치는 것은 귀찮으므로 이를 원클릭으로 해주는 Extension을 설치하고 실행한다. 왼쪽 메뉴바..