solver.py는 코드가 길어서 글을 두 개로 나눠서 적을 것이다. 이번 글에서는 180번째 줄까지, 다시 말해 train() 함수 전까지 파악해본다. Solver 클래스는 nn.Module을 상속받지 않는다. Solver 객체를 호출할 때에는 매개변수에 celeba_loader, rafd_loader, config를 넘겨준다. line 19 ~ 70은 거의 다 매개변수로 전달받은 값을 그대로 self에 저장하는 과정이므로 생략한다. build_model 함수에서는 주석에 써있듯 Generator와 Discriminator를 만든다. Generator 객체는 self.G에, Discriminator 객체는 self.D에 할당한다. StarGAN에서의 모든 모델은 학습 과정에 Adam optimizer를..
파일 입출력 FILE *fp = NULL; char ch = 0; char str[100] = {0}; 1. 파일 열기 fopen_s(&fp, "text.txt", "r"); // 읽기 모드로 열기 if(fp==NULL) { // 에러 메시지 출력 } fclose(fp); // 파일 닫기 2. 파일로부터 한 글자 읽기 ch = fgetc(fp); 3. 파일로부터 한 줄(한 문자열) 읽기 fgets(str, sizeof(str), fp); 4. 파일에 한 글자 쓰기 fputc(ch, fp); 5. 파일에 문자열 쓰기 fputs(str, fp); 응용 예제 1. 파일로부터 한 글자씩 읽어 콘솔에 출력하기 while((ch=fgetc(fp)) != EOF) { putchar(ch); } 2. 파일로부터 한 글..
model.py의 코드를 파악해볼 것이다. 살펴보기에 앞서, 아래 블로그에 Pytorch를 이용한 딥러닝의 기본적인 틀이 소개되어 있으니 참고해보면 도움이 될 것이다. PyTorch로 딥러닝하기 — Intro 거창하게 “딥러닝하기”라는 제목을 달았지만, 알다시피 우리에게 딥러닝을 한다는 것은 딥러닝 framework를 잘 사용하기와 같은 의미입니다. medium.com ResidualBlock 먼저 Generator의 Bottleneck 부분에 사용되는 Residual Block 클래스가 선언되어 있다. ResidualBlock 인스턴스를 생성하면 __init__() 함수가 실행된다. 이 ResidualBlock 클래스는 nn.Module 클래스를 상속받는다. super( ~ ).__init__() 을 ..
StarGAN version1의 main.py 코드를 파악해볼 것이다. github.com/yunjey/stargan yunjey/stargan StarGAN - Official PyTorch Implementation (CVPR 2018) - yunjey/stargan github.com train을 수행할 때 main.py를 실행하되, --로 인자를 넘겨주는데 뒤에 나오는 모든 인자들이 config가 된다. mode에 'train'를 적었으면 solver.py에 정의된 train() 함수를 실행하고, mode에 'test'를 적었으면 solver.py에 정의된 test() 함수를 실행한다. c_dim은 데이터셋에서 사용할 특성(attribute)의 수를 의미한다. (StarGAN에서 기본적으로 Cel..
icrawler.readthedocs.io/en/latest/builtin.html#search-engine-crawlers 의 코드를 따라서 매우 간단하게 크롤링을 할 수 있다. !pip install icrawler from icrawler.builtin import BaiduImageCrawler, BingImageCrawler, GoogleImageCrawler # Google에서 크롤링 google_crawler = GoogleImageCrawler( feeder_threads=1, parser_threads=1, downloader_threads=4, storage={'root_dir': '/content/drive/MyDrive/Crawling'}) filters = dict( size='l..
StarGAN 모델을 이용해 의류에 패턴을 합성하는 프로젝트를 진행하고 있다. 그래서 StarGAN에서의 기본 데이터셋인 사람 얼굴에 관련된 CelebA나 RaFD가 아닌, 의류에 관련된 커스텀 데이터셋을 사용하여 train 및 test하려고 한다. !apt-get install -y -qq software-properties-common python-software-properties module-init-tools !add-apt-repository -y ppa:alessandro-strada/ppa 2>&1 > /dev/null !apt-get update -qq 2>&1 > /dev/null !apt-get -y install -qq google-drive-ocamlfuse fuse from go..
github.com/taomanwai/tensorboardcolab/issues/9 를 참고했다. def __init__(self, log_dir): """Initialize summary writer.""" self.writer = tf.summary.FileWriter(log_dir) def scalar_summary(self, tag, value, step): """Add scalar summary.""" summary = tf.Summary(value=[tf.Summary.Value(tag=tag, simple_value=value)]) self.writer.add_summary(summary, step) 이 코드에서 에러가 난다. tensorflow 버전 차이로 인한 오류인 것 같다. 아래와 같..
github.com/yunjey/stargan/issues/46 를 참고하였다. 구글 Colaboratory에서 진행한다. GPU는 필요 없다. !apt-get install -y -qq software-properties-common python-software-properties module-init-tools !add-apt-repository -y ppa:alessandro-strada/ppa 2>&1 > /dev/null !apt-get update -qq 2>&1 > /dev/null !apt-get -y install -qq google-drive-ocamlfuse fuse from google.colab import auth auth.authenticate_user() from oauth2..