본문 바로가기

전체 글

(10)
Conv와 ConvTranspose CEGAN모델을 구현하는 과정에서 ConvTranspose에 대해 배운것이 있어서 적어두려 한다. ConvTranspose는 입력 이미지를 확장하는데 사용하는것으로 알고 있었다. Unet구조나 Autoencoder에서 decoder부분에서 이미지를 원래 상태로 돌리기 위해 사용되는것으로 알고 있었는데 CEGAN을 구현하는 과정에서 ConvTranspose의 다른 역할을 알게 되었다 ConvTranspose ConvTranspose의 역할은 크게 두가지로 볼 수 있다 1. 이미지 확장 2. 출력 이미지 채널 수 조정 ConvTranspose는 이 두가지 역할을 통해 출력 이미지의 복잡도를 제어한다. 이미지를 확장시키는 경우는 kernel_size와 stride를 크게 설정하여 입력 이미지를 더 크게 만든다..
SQ-AGGAN SQ-AGGAN 논문 리뷰 SQ-AGGAN은 폐결절 데이터를 이용하여 새로운 폐결절 이미지, malignancy를 조절한 폐결절 이미지를 생성하는 GAN모델이다 SQ-AGGAN의 contribution은 크게 3가지이다. 1. 적은 계산량으로 feature 컨트롤 하기 (여기서 feature은 malignancy를 의미한다) 2. 합성 퀄리티 높이기 + 배경 변화 최소화 하기 3. reconstruct, injection방법으로 이미지 생성하기 (이 두 방법이 앞서 말한 이 모델을 통해 생성되는 이미지들) SG-AGGAN의 전체 구조 Generator SQ-AGGAN의 generator는 U-net구조를 따르고 있다. input: 원래 결절이 있는 이미지 (x), 결절이 없는 이미지 (y) -> 3d이미..
GAN 코드 분석 저번에 올린 코드보다 조금 길게 구현한 코드를 올려보려고 한다. 어려운 코드는 아니지만 한번 정리할겸 올려본다. class GAN(object): model_name = 'GAN' def __init__(self, sess, epoch, batch_size, z_dim, dataset_name, checkpoint_dir, result_dir, log_dir): self.sess = sess self.dataset_name = dataset_name self.checkpoint_dir = checkpoint_dir self.result_dir = result_dir self.log_dir = log_dir self.epoch = epoch self.batch_size = batch_size if data..
파이토치 Dataset, Dataloader 파이토치에서는 데이터셋을 좀 더 쉽게 다룰 수 있도록 유용한 도구로서 torch.utils.data.Dataset과 torch.utils.data.DataLoader를 제공한다. 이를 사용하면 미니 배치 학습, 데이터 셔플(shuffle), GPU 병렬 처리까지 간단히 수행할 수 있다고 한다. 데이터셋마다 load하는 방법과 전처리가 다르므로 그에 맞게 Dataset 클래스를 바꾸어주기위해 사용한다고 보면 된다. 딥러닝 구현 코드를 보던 중 Dataset을 부모 클래스로 두는 경우가 있어서 찾아보니 부모 class로 둔 Dataset이 torch.utills.data.Dataset 이라는걸 알게 되어 이를 정리해보고자 한다. 기본적인 사용 방법은 Dataset을 정의하고, 이를 DataLoader에 전달..
class 와 super정리 딥러닝 코드를 보다보면 (특히 파이토치에서) super가 나오는 코드가 많은데, 매번 햇갈려서 정리하려 한다. 1. 부모클래스 2. 자식클래스 - *args, *kwargs/ super의 버전별 문법 3. super을 사용하는 이유 4. 매서드 오버라이딩 5. object를 상속 1. parent class-부모 클래스 class Person: total_count = 0 def __init__(self, name, idnum, gender): self.name = name self.idnum = idnum self.gender = gender #얘는 생성자함수에 속하는 애가 아니니까 Person.이 되어야 함 Person.total_count += 1 total_count는 static 변수고 초기화해..
Dense Layer 정리 in tensorflow #은닉층 뉴런 dense1 = keras.layers.Dense(100, activation='sigmoid', input_shape=(784,)) # dense1 = keras.layers.Dense(뉴런개수, activation='sigmoid', input_shape=input크기) #뉴런개수 #액티베이션 fun. #input 크기 # 출력의 개수가 10개인데 10개보다 은닉층의 뉴런의 개수가 적다면 부족한 정보가 전달 됨 #출력층 뉴런 dense2 = keras.layers.Dense(10, activation='softmax') model = keras.Sequential([dense1, dense2]) #784개의 픽셀값이 은닉층을 통과하면서 100개의 특성으로 압축됨..
Conv2d에 대한 이해와 정리 Conv2d의 기본 형태 Conv2D(32, (5, 5), padding='valid', input_shape=(28, 28, 1), activation=‘relu') 32: 필터의 수 (5,5): 컨볼루션 커널의(필터) (행,열) -> 3*3, 5*5 가 제일 많이 사용 됨 -> 얘가 얼마나 움직이냐가 stirde padding: 나오는 사이즈 -> valid: 패딩을 실시하지 않아 필터를 통과할때마다 이미지의 크기가 작아짐 -> same: 원래의 이미지와 같게 padding (입출력 이미지 크기 동일하게) -> pool: 입력데이터의 모든 원소가 합성곱 연산에 같은 비율로 참여하도록 input_shape: 샘플 수를 제외한 입력 형태 (행, 열, 채널 수) 흑백인 경우 채널수=1, rgb인경우=3 a..