Fashion-MNIST 모델은 keras, tensorflow, pytorch 등 다양한 환경에서 간편하게 다운받을 수 있다. 하지만 내가 필요한 것은 Fashion-MNIST 모델이 아닌 이미지였다. 옷의 모양을 학습시키기 위한 데이터가 필요했는데, Fashion-MNIST의 이미지들은 배경이 제거되고 옷의 정면만 나오도록 처리된 깔끔한 이미지이며 grayscale이기 때문에 옷의 무늬나 색상과 같은 특징을 학습하기보단 옷의 모양을 학습하기에 적합할 것 같다는 생각이었다. 이곳저곳 검색해봤지만 모델 형태로만 존재하고 이미지의 형태로는 따로 존재하지 않는 것 같아서, csv 파일을 찾아 직접 이미지로 변환하는 과정을 수행했다. dacon.io/competitions/open/235594/data/ [이..
커먼컴퓨터에서 제공하는 형태소 분석 무료 API인 'KoNLPy-gRPC'를 사용해볼 것이다. ainize.ai/minhoryang/KoNLPy-gRPC minhoryang/KoNLPy-gRPC Redesigned KoNLPy (Wrapper) for Usability and Portability with gRPC. [EXPERIMENTAL] ainize.ai Komoran 분석기의 명사를 뽑아내는 기능을 사용할 것이다. (konlpy 패키지에서 가장 성능이 좋다고 할 수 있는 mecab 분석기가 원래 윈도우에서는 지원이 안되지만, 이 API를 통해서는 사용이 가능한 것을 확인했다! 띄어쓰기나 오타가 있는 경우에 높은 성능을 원하면 komoran 분석기를, 띄어쓰기나 오타가 없는 경우에 빠르고 높은 성능..
$ git config --global user.name "BitnaKeum"# 최초 설정 $ git config --global user.email beausty23@naver.com# 최초 설정 $ git init # .git이 생성됨 $ git add * # * 자리에 특정 파일명을 지정해도 됨 $ git commit -m "커밋메시지 작성" $ git log # 커밋 내역 확인 $ git remote add origin 레포지토리주소 # 주소에 .git 안써도됨 $ git push origin master# 깃허브 원격 저장소에 push $ git pull origin master# 깃허브 원격 저장소로부터 pull SourceTree라는 GUI 프로그램을 사용하면 훨씬 편하다!
에러 1. TypeError: write() argument must be str, not bytes 에러 2. TypeError: a bytes-like object is required, not 'str' 에러 3. UnicodeDecodeError: 'cp949' codec can't decode byte 0x80 in position 0: illegal multibyte sequence Python에서 파일을 다룰 때 위와 같은 에러가 발생하는 경우, open 함수에서 파일 열기 모드를 바이너리 모드('rb' 또는 'wb')로 해주면 해결된다!
StarGAN version1이 2018년에 나오고 지금은 시간이 꽤 지나 version2까지 나온 상황이다. 그 사이에 tensorflow가 기존 1 버전의 문법과는 다른 부분이 많은 2 버전이 출시되었다. tensorflow 2 버전 사용법에 관련해서는 www.tensorflow.org/guide/effective_tf2?hl=ko를 참조하면 도움이 될 것이다. 2 버전 사용 시 오류가 발생하는 곳이 logger.py이다. (1 버전을 사용하고 있다면 에러가 발생하지 않을 것이다) tf.summary.FileWriter() 함수는 tensorflow 1 버전에서만 사용 가능한 함수다. 따라서 2 버전에서 지원하는 tf.summary.create_file_writer() 함수로 수정해줘야 한다. 앞에 ..
-> 이전 글 [StarGAN] 코드 파악하기 - solver.py (1) 초보자라 틀린 부분이 있을 수 있습니다. 피드백 주시면 감사히 반영하겠습니다 :) solver.py는 코드가 길어서 글을 두 개로 나눠서 적을 것이다. Solver 클래스는 nn.Module을 상속받지 않는다. Solver 객 beausty23.tistory.com 이번 포스팅에서는 solver.py의 182번째 줄부터 파악해본다. 초보자의 입장에서 구조 파악이 어려운 부분이 꽤 있으니 해당 코드를 직접 실습해보면서 구조를 직접 확인해보는 것을 추천한다. 단일 데이터셋을 사용할 때 학습을 진행하는 train() 함수이다. (여러 데이터셋을 사용할 때의 train_multi() 함수는 다루지 않을 것이다) dataset 값에 따라 ..
먼저 CelebA 데이터셋을 사용하는 경우에 필요한 CelebA 클래스가 정의되어 있다. 하지만 나는 커스텀 데이터셋을 사용할 것이고 이 경우 RaFD 데이터셋을 사용하는 방식과 동일하기 때문에 CelebA 클래스는 건너뛰고, get_loader() 함수만 알아본다. get_loader() 함수에서는 data loader를 만들어 반환한다. torchvision.transforms에 정의된 함수들을 집어넣기 위한 transform 리스트를 만든다. 논문에서 training 과정에서 데이터 증가를 위해 horizontally flip한다고 쓰여있다. 따라서 'train' 모드이면 torchvision.transforms의 RandomHorizontalFlip() 함수를 리스트에 집어넣는다. CenterCr..