전체 글 85

부트스트랩(bootstrab)에서 사용하는 class명 정리

부트스트랩에서 사용하는 class명을 정리해 보았습니다. 부트스트랩을 안쓰더라도 개인적으로 프로젝트 할때 class명 네이밍시 너무 괴로워서 참고를 하기 위해서 정리하는것도 있습니다. 최대한 간단하게 정리하기 위해 젠코딩 방식으로 작성한 점 참고해주세요. 부트스트랩 네이밍은 시맨틱해서 네이밍만 봐도 이해는 가나 생소한것도 있어서 설명을 간단하게 적어놨습니다. 레이아웃 .container (고정된 너비) .container-fluid (너비가 100%인 컨테이너) 그리드 부모요소 : .row 자식요소 : .col-*-* ㄴ 첫번째 * : .xs, .sm, .md, .lg ㄴ 두번째 * : 컬럼 숫자(최대 12까지임) 타이포그래피 / 텍스트 h1 ~ h6 small mark abbr blockquote dl..

Development/CSS 2024.04.23

파이썬 % // -> ** @ 등 파이썬 기호 완벽정리

1. 파이썬에서 * ** 란? 파이썬에 * (asterisk, 일명 별표)는 곱하기(연산자) 외에도 몇 가지 다른 용도로 쓰일 수 있습니다. 1) 모든 것 * 일반적으로 프로그래밍에서 일반적으로 *는 모든 것(Everything)의 의미로 통용됩니다. 예를 들어, 다음처럼 쓰이곤 합니다. (아래의 예시 코드는 math 라는 라이브러리에서 모든 변수, 함수, 클래스를 가져온다는 의미입니다.) from math import * 하지만 이런 코드 습관은 안좋다는 의견이 많으니 참고해주세요. 2) 가변인자 *args **kwargs 보통 함수는 인자(argument)를 넣게끔 설계합니다. 이때 들어가는 인자의 개수를 한정하고 싶지 않을 때 *args (arguments)를 사용합니다. def girls_who_..

Development/Python 2023.08.17

[pytorch] 모델 저장하기 & 불러오기

이 문서에서는 PyTorch 모델을 저장하고 불러오는 다양한 방법을 제공합니다. 이 문서 전체를 다 읽는 것도 좋은 방법이지만, 필요한 사용 예의 코드만 참고하는 것도 고려해보세요. 모델을 저장하거나 불러올 때는 3가지의 핵심 함수와 익숙해질 필요가 있습니다: torch.save: 직렬화된 객체를 디스크에 저장합니다. 이 함수는 Python의 pickle 을 사용하여 직렬화합니다. 이 함수를 사용하여 모든 종류의 객체의 모델, Tensor 및 사전을 저장할 수 있습니다. torch.load: pickle을 사용하여 저장된 객체 파일들을 역직렬화하여 메모리에 올립니다. 이 함수는 데이터를 장치에 불러올 때에도 사용됩니다. (장치 간 모델 저장하기 & 불러오기 참고) torch.nn.Module.load_s..

[Pytorch] 장치간 모델 불러오기 (GPU / CPU)

1. GPU에서 모델을 저장하고 CPU에서 불러오기 2. GPU에서 저장하고 GPU에서 불러오기 3. CPU에서 모델을 저장하고 GPU에서 불러오기 1. GPU에서 모델을 저장하고 CPU에서 불러오기 GPU 모델 저장 torch.save(model.state_dict(), PATH) 저장한 모델을 CPU에서 로드 device = torch.device('cpu') model = TheModelClass(*args, **kwargs) model.load_state_dict(torch.load(PATH, map_location=device)) 위와 같이 GPU에서 학습한 모델을 CPU에서 불러올 때는 torch.load() 함수의 map_location 인자에 'cpu' 값을 전달함 이 경우에는 Tensor..

CycleGAN

1. CycleGAN 1.1 연구 배경 CycleGAN 모델을 만든 저자는 한국인으로 이전의 pix2pix라는 연구의 확장이 CycleGAN이라 할 수 있다. [그림 48] CycleGAN 모델의 결과 CycleGAN은 특정 화풍, 질감을 다른 사진에 적용할 수 있는가에 대한 질문에 답을 하기 위해 만들어진 모델이라 할 수 있다. 1.2 핵심 아이디어 특징이 겹치지 않는 서로 다른 이미지 집합(Unpaired)을 학습하기 위해 순환 일관성 손실 함수(Cycle Consistency)를 사용하였다는 것이다. [그림 49] 순환 일관성 손실 함수 일종의 역함수라고 할 수 있다. 하지만 G를 통해 변환한 것이 F를 통해 재 변환될 때 원본과 최대한 가까워 지도록 loss 값을 설정하여 학습하는 것이라 할 수 ..

SRGAN (Super Resolution GAN)

1. SRGAN (Super Resolution GAN) SRGAN은 Super Resolution GAN을 의미하는 것으로 한마디로 말하여 저화질의 이미지를 고화질의 이미지로 바꾸는 모델이라 할 수 있다. 1.1 연구 배경 기존의 SR 모델에서 목적 함수를 MSE (Mean Square Error)로 학습하여 높은 PSNR (Peak Signal-to-Noise Ratio)를 가진다. 하지만 High Frequency 성분을 갖는 detail이 결여되어 있기 때문에 Texture를 표현하는 것이 어렵다는 점을 극복하기 위해 진행 된 연구이다. [그림 37] SRGAN과 타 모델 간의 성능 비교 쉽게 말해 MSE는 이미지가 조금 흐릿한 형태를 띠게 되는데 이는 MSE loss function은 avera..

PGGAN (Progressive Growing GAN)

1. PGGAN (Progressive Growing GAN) 1.1 연구 배경 크게 2가지 단점을 극복하고자 PGGAN 모델이 만들어지게 되었다. 첫 번째로는 GAN을 고해상도로 만들면 판별자는 생성자가 생성한 이미지의 Real/Fake 여부를 구분하기 쉬워진다는 단점이 있고, 두 번째로는 고해상도로 만들어도 메모리 제약조건으로 batch size를 줄여야하고 줄이면 학습과정이 불안정해진다는 단점이 있었기 때문이다. 1.2 핵심 아이디어 PGGAN은 NVIDIA에서 진행한 연구이다. PGGAN의 핵심 아이디어는 4x4의 저해상도 이미지를 1024x1024 고해상도 이미지로 단계별(Progressive Growing)로 학습한다는 것이다. [그림 34] PGGAN의 핵심 아이디어 기존에는 처음부터 고해상..

LSGAN (Least Square GAN)

1.1 연구 배경 LSGAN의 경우 단순히 loss 값만 변경하여 성능을 끌어올린 GAN 모델이다. 연구 배경으로는 Sigmoid cross entropy loss가 Gradient Vanishing 문제를 일으킨다는 것이다. 따라서 Sigmoid cross entropy loss → Least Square loss로 변경하자는 것이 이 논문의 핵심이라 할 수 있다. [그림 30] LSGAN의 성능 향상 핵심 방안 위 그림을 보면 분홍색 *(star)를 볼 수 있다. 분홍색 *는 Generator가 생성한 가짜 이미지라 보면 된다. 하지만 이 가짜이미지는 판별자를 속였고 때문에 더 이상 학습하지 않는(Gradient Vanishing) 것을 확인할 수 있다. 이 때 LSGAN 모델의 아이디어는 판별자를 ..

DCGAN (Deep Convolutional GAN)

기존의 GAN의 한계점은 크게 2가지로 나뉜다. 1. (성능 평가) GAN 모델의 성능을 객관적 수치로 표현할 수 있는 방안이 부재했다. GAN의 경우 결과 자체가 새롭게 만들어진 데이터이기 때문에 비교 가능한 정량적 척도가 없었다는 것이다. 2. (성능 개선) GAN은 기존 네트워크 학습 방법과 다른 구조여서 학습이 불안정했다. GAN은 Saddle Problem 혹은 Minmax를 풀어야 하는 태생적으로 불안정한 구조이기 때문이다. 실제 2016년 NIPS에서도 GAN의 안정화가 메인화두였다고 한다. 하지만 이의 두 단점을 모두 개선하여 GAN의 후속 연구가 줄줄이 이어나올 수 있도록 한 연구가 Facebook에서 개발한 DCGAN(Deep Convolutional GAN)이다. 1. DCGAN (D..

About GAN (Generative Adversarial Nets)

GenerativeAdversarialNets #GAN #비지도학습 #얀르쿤 #YannLeCun #DCGAN #LSGAN #PGGAN #SRGAN #CycleGAN #IS #FID #KLD #StarGAN #PerceptualLoss [그림 1] GAN 모델이 생성한 이미지 1. GAN 모델 개요 GAN이란 무엇인가? GAN은 Generative Adversarial Nets이라는 논문을 통해 나온 모델로 위와 같이 진짜와 동일해 보이는 이미지를 생성하는 모델이다. 그렇다면 우선 GAN은 언제 만들어졌고 어떠한 과정을 거쳐 성장하게 되었는가? 아래는 GAN의 History를 나타내는 그림이다. [그림 2] History of GAN GAN은 2014년 arXive에 처음 올라온 논문이며 이후, 인공지능 ..