#3-1 CNN
■ Convolution
- 두 함수를 결합하여 새로운 함수를 생성하는 연산
- 새로운 NN 만들고 Sliding Window 하는 것
- Continuous convolution (연속적인 신호)
- Discrete convolution (이산적인 신호)
- 2D image convolution
- 이미지 처리, CNN에서 주로 사용하는 연산
- Blur, Emboss, Outline
■ RGB Image Convolution
- Depth 방향 3채널(RGB)
- Feature Map의 채널 숫자(= convolution filter의 수)
- > Convolution Feature 의 크기 = input 채널과 output (convolution featuremap 채널)
■ CNN
- Fully connected layer: 마지막에 다 합쳐서 원하는 결과값 도출
- Convolution layer & Pooling layer (Feature extraction)
- > Convolution layer: Convolution으로 feature 생성
- > Pooling layer: 같은 크기의 다른 특징 추출 가능
- # 높이, 너비를 줄여줌 (downsampling)
- # 좋은 값(max값)만 남기고 줄임 (max-pooling)
- Fully connected layer (Decision making)
- > Input Parameter * Output Parameter
- > 최소화 하는 추세
- # 학습시키고자 하는 모델의 파라미터 많을수록
- 1) 학습이 어려워짐
- 2) generalization performance 떨어짐
- # CNN 발전 동향
- 1) 같은 모델을 만들고 모델을 '딥'하게
- 2) 뒷단의 Fully connected layer 줄임
- 3) 앞단의 Convolution layer를 깊게 쌓음
- # NN(아키텍쳐) 중요한 팁
- 1) layer별로 Parameter 개수 파악
- 2) 전체 Parameter 숫자 파악
- # 학습시키고자 하는 모델의 파라미터 많을수록
- 키워드 설명
- > Stride: Convolution Filter를 얼마나 자주, dense(sparse)하게 찍을지
- > Padding: boundary 정보 벌어지지 않게
- > Convolution 공식
- # W: input size, F: filter size, P: Padding, S: Stride
- # (W-F+2p)S + 1
- > 파라미터 계산법
- # @모델&레이어 파라미터 계산
- > 1x1 Convolution
- 1) Dimension reduction (=채널 감소)
- 2) CL을 깊게 쌓으면서 동시에 파라미터 숫자 줄일 수 있음
- 3) (e.g., bottleneck architecture)
#3-2 Modern CNN
But, 2018년까지 자료...(해마다 1등한 Network 위주)
⭐은 중요시하게 봐야 될 것
■ ILSVRC
- ImageNet Large-Scale Visual Recognition Challenge
- > Classification, Detection, Localization, Segmentation
■ 2012 AlexNet (60M)
- 두 파트로 나뉘어 train하는데 이건 당시 HW 한계 때문
- 11 * 11 filters
- 1) 하나의 CL이 볼 수 있는 이미지 영역은 커지지만
- 2) 상대적으로 많은 파라미터 필요
- 5 Convolution Layer, 3 Dense Layer (=total 8 layer)
- Key idea
- > ReLU
- > 2GPU
- > Local response normalization(잘안씀)
- > Overlapping pooling
- > Data augmentation, Dropout
■ 2014 VGGNet (110M)
- ⭐ 3x3 CL filters(with stride 1)
- > Receptive fiel에서 3x3 두 번과 5x5 한번은 결과 같음
- > 근데 파라미터 수는?
- # 3x3 두 번: 3x3x128x128+3x3x128x128 = 294,912
- # 5x5 한 번: 5x5x128x128 = 409,600
- > 대부분의 논문에서 CL filter은 7x7을 벗어나지 않음
- > 결론은 작은 filter 여러 번 사용이 좋음
- 1x1 convolution for fully connected layers (영향 거의X)
- Dropout(p=0.5)
- VGG16, VGG19
■ 2014 GoogLeNet (4M)
- 22 Layers
- Network-in-Network (NiN): 구조 속에 비슷한 네트워크 반복
- ⭐ Inception Blocks (1 → N → 1)
- > 각 path의 convolution 전에 1x1 conv
- # 전체적인 네트워크 파라미터를 줄임
- > How? 채널 방향으로 디멘션을 줄이는 효과가 있음
■ 2015 ResNet
- ⭐ Residual connection (=identity map, skip connection)
- > NN이 깊어질수록 vanishing gradient 되는 문제 해결
- # 때문에 얕은 NN에서 학습률 오히려 높음
- > 입력을 네트워크 출력에 더하여 입출력의 사이의 residual을 학습 * residual(=잔차)
- > 네트워크가 필요한 경우 항등 함수에 가까운 연산을 수행
- # gradient 잘 전파되고 깊은 NN에서 성능 유지
- > Projected Shortcut (↔ Simple Shortcut)
- # 입력을 더해줄 때 차원을 맞추기 위해 1x1 Conv 추가
- Bottleneck architecture (≒ Inception Blocks)
- > filtering 전에 1x1 Conv으로 입력의 채널을 줄임
- > 그렇게 줄어든 차원에서 receptive field 키우고 종단에 1x1 Conv
■ DenseNet
- ⭐ 더하는게 아니라 concatenation (합침)
- > 채널이 점점 더 커지는 문제 (2배...4배...8배..)
- > 1x1 Conv으로 중간중간 채널 줄임
- DenseNet
- 1) Dense Block으로 feature Map 기하급수적으로 늘린 뒤
- 2) Transition Block으로 Conv feature size 줄임
- # BatchNorm → 1x1 Conv → 2x2 AvgPooling
#3-3 Computer Vision Applications
■ Semantic Segmentation (의미론적 분할)
- 픽셀 수준에서 레이블을 예측, 객체의 경계를 정확히 파악하고 정확한 분할
- 객체 검출, 객체 추적, 자율 주행, 영상 분석 등 다양한 응용 분야에서 활용
■ Fully Convolutional Network
- Convolutionalization
- > Dense layer(Fully connected layer)를 없엠
- > Dense layer한거랑 파라미터 수는 다름없음
- > 입력 이미지를 여러 개의 작은 패치(patch)로 나누어 처리
- > 각 패치에서의 지역적인 정보를 보존하면서 특징 추출
- > https://kuklife.tistory.com/117
- 가져오는 효과
- > 단순히 분류만 했던 NN이 semantic Segmentation
- > rough하게 heat map 생성 가능
■ Deconvolution (Conv transpose)
- special dimension(입력 차원)을 키움
- Conv의 엄밀한 역은 아니지만 파라미터 숫자와 NN 입출력 측면에서 같음
■ Detection (픽셀이 아닌 bounding-box)
- R-CNN
- 1) 이미지 안에서 patch(region)를 엄청나게 뽑음
- 2) region은 cnn 돌리기 위해 똑같이 크기를 맞춤
- 3) 선형 SVMs로 분류 (...굉장히 brute force적)
- ※ 문제점: 2000여개의 region 전부 다 cnn 돌려야함
- SPPNet
- 1) 이미지의 bounding-box를 뽑음
- 2) 이미지의 Conv feature Map을 만들고
- 3) bounding-box 위치의 Conv feature Map에서 텐서를 뽑음
- 4) CNN runs once
- Fast R-CNN
- > SPPNet과 거의 동일
- > 다른점: 각각의 region에서 fixed length feature를 뽑음
- # from ROI pooling
- > Output: 2개, class and bounding-box regressor
- Faster R-CNN
- > Region Proposal Network
- # bounding-box 뽑는 것도 NN 학습
- # 이미지의 patch가 bounding-box로써 의미가 있을지
- # anchor boxes에 어떤 크기의 물체들이 들어가는지 미리 예측
- # K개의 템플릿을 만들고 변경사항 확인 및 궁극적으로 고정
- # 9*(4+2) 채널
- @ 9: 3size x 3ratio
- @ 4: w,h,x,y 변환
- @ 2: bounding-box 쓸모있는지 없는지
- > fine grad?
■ YOLO
- Faster R-CNN보다 훨씬 빠름
- bounding-box를 뽑는 RPN이 없기 때문
- 이미지를 SxS grid로 나눔
- 1) 찾는 물체의 중앙이 해당 grid에 들어가면
- 2) grid cell이 해당 물체의 bounding-box와 의미를 같이 예측
- > 각 cell은 B개의 bounding-box 예측
- > box refinement (x/y/w/h)
- > confidence (of objectioness, bounding-box 쓸모있는지 없는지)
- > 동시에, 각 cell이 class 예측
- 3) 2번 취합 후 텐서 표현:
- > (SxS)x(B*5+C) size
- # SxS: Number of cells of the grid
- # B*5: B bounding boxes with offsets(x,y,w,h) and confidence (B개x5개 property)
- # C: Number of classes
- > (SxS)x(B*5+C) size
#4-1 Sequential Models - RNN
* FCL: Fully Connected Layer
■ Sequential Models
- 받아 들여야 하는 입력의 차원 모름
- > FCL 사용 못함
- Naive sequece model
- > 다음 입력 예측
- > 고려해야 되는 정보(입력)가 점점 늘어남
- Autoregressive model
- > 과거의 정해진 부분만 확인
- Markov model (firts-ordet autoregressive model)
- > 현재는 바로 전 과거에만 dependent (누적이 아니라 바로 전)
- > 장점: joint distribution 표현이 쉬워짐
- Latent autoregressive model
- > Hidden state가 과거의 정보를 요약
- > 현재의 time step은 hidden state에 dependent
■ Recurrent Neural Network
- Markov 기반
- > 전체 history를 알지 않아도 다음 상태를 예측
- MLP랑 비슷하지만 자기 자신으로 돌아오는 구조가 있음
- > time step(=t)에서의 h_t는 X_t에만 의존하지 않고 이전에 얻어진 cell state에도 의존
- RNN을 시간 순으로 풀게 되면 입력이 굉장히 많은 FCL로 표현 될 수 있음
- > time step을 픽스하고 시간 순으로 풀게 되면 각각의 파라미터를 쉐어하는 굉장히 큰 input을 가진 NN이 됨
- Short-term dependencies
- > 과거의 정보들이 계속 요약되기에 먼 과거는 미래까지 살아남기 힘듦
- > 그렇다고 Long-term dependences는 어려움
- > sigmoid를 쓰면 중첩된 구조에서 0으로 squashing (Vanishing gradient 문제)
- > ReLU에선 W가 양수면 중첩된 구조에서 n번 곱하다 발산 (Exploding gredient 문제)
■ Long Short Term Memory
- 중간 cell state가 중요
- > time step t까지 들어온 정보 요약
- 3개의 게이트
- > Foget gate
- # f_t = sigmoid(W_f @ [h_(t-1),x_t] + b_f)
- # f_t는 previous cell state에서 어떤걸 잊을지 결정
- > Input gate
- # i_t = sigmoid(W_i @ [h_(t-1),x_t] + b_i)
- # C(~)_t = tanh(W_C @ [h_(t-1),x_t] + b_C)
- # i_t는 현재 입력 중에 어떤걸 올릴지 말지 결정
- # C(~)_t는 cell state 예비군 (올릴 정보를 결정)
- # previous cell state와 input gate에서 올라온 candidata를 잘 섞어서 update
- > Update cell
- # C_t = f_t * C_(t-1) + i_t * C(~)_t
- # f_t만큼 C_(t-1) 곱해서 버릴지 결정
- # i_t만큼 C(~)_t 곱해서 어느 값을 올릴지 결정
- # 두 값을 combine 한 것을 새로운 cell state로 Update (time squence를 요약하는 과정)
- > Output gate
- # 그대로 내보내도 되지만..한번 더!
- # o_t = sigmoid(W_o @ [h_(t-1),x_t] + b_o)
- # h_t = o_t * tanh(C_t)
■ Gated Recurrent Unit
- 2개의 게이트
- > reset gate
- > update gate
- cell state가 없음 (hidden state = output)
- LSTM 보다 많이 씀
- > 적은 파라미터로 같은 output → generalization performance 올라감
- > 근데 요즘은 그래도 Transformer를 많이 씀
#4-2 Sequential Models - Transformer
■ Sequential Models의 어려움 (RNN의 한계)
- 중간에 input 문제가 생기게 되면 모델링 어려움
- > Original sequence
- > Trimmed sequence: 길이가 안맞음
- > Omitted sequence: 중간 단어가 빠짐
- > Permuted sequence: 밀리거나 하는 문제
■ Sequence-2-Sequence with RNN
- 본격적인 sequence output 내기 전에 context vector 생성
- 이 때 생성된 context vector는 이후 sequence에 계속 영향을 줌 (hidden state로)
- 고정적이고 종합적인(?) attention 구조
■ Transformer
- 재귀적인 구조가 없고 attention 구조 활용
- > sequence 마다 context vector 생성한다고 보면 됨
- > attention 구조가 낀 transformer block 존재, 반복 시 The Transformer
- Sequential data를 처리하고 인코딩하기에 NLT 외에 다른 분야도 활용됨
- 입력과 출력은 도메인이 다를 수도 있고 개수가 다를 수도 있음 (하지만 모델은 하나)
- 1) n개의 단어가 encoder에서 어떻게 처리되는지
- 2) encoder와 decoder 사이에 어떤 정보가 오가는지
- 3) decoder가 어떻게 generation 하는지
################# encoding ########################
- Self-attention
- 1) 벡터 → 벡터 과정에서 단어 서로끼리 dependencies를 가지게 함
- > Embedding 벡터 생성
- 2) Embedding 벡터 하나마다 3개의 벡터를 가짐
- > Query, Key, Value
- 3) Score 벡터(스칼라값)를 만듦
- > encoding 하고자 하는 단어의 query와 다른 모든 단어의 key를 내적
- # 이 두 벡터가 잘 align 돼있는지, 얼마나 관계도가 되는지
- # interaction을 확인
- > encoding 하고자 하는 단어의 query와 다른 모든 단어의 key를 내적
- 4) Score 스칼라를 nomalrize, Softmax
- > attention weights를 구함
- 5) 최종적으로 사용할 값은 각 Embedding 벡터의 values와 weighted sum
- 6) 하나의 단어에 대한 encoding 완료
- ※ 주의할 점:
- > query와 key 벡터의 차원은 항상 같아야함 (내적하기 때문)
- > value는 달라도 됨 (weighted sum만 하면 되니까)
- > encoding 된 벡터는 Value 벡터의 차원과 같음
- 수식: softmax( (Q @ K.T)/sqrt(d_k) ) * V = Z
- 한계 n개의 sequence가 주어질 때)
- > RNN은 n번 돌리면 됨 (시간문제)
- > Tranformer는 n개의 단어 한번에 처리해야함 O(n^2) 비례
- # length가 길어짐에 따라 처리할 수 있는 한계 존재
- # 하지만 훨씬 더 flexible하고 많은 걸 표현 가능
- Multi-headed self-attention: 여러가지 attention 생성
- embedding 차원과 encoding 차원이 같아야 함
- > additional(learnable) linear map으로 차원을 줄임
- positional encoding
- > 입력에 더해줌
- > sequential 정보가 Embedding에는 없기 때문
################# decoding ########################
- encoding 이후 순서
- 1) encoding 벡터 Z에 layerNorm 취함
- 2) feed forward (반복)
- 3) 출력은 autoregressive manner로 생성
- ※ 각각의 z 벡터에 대해 독립적으로 동일한 NN 동작 반복
- 학습 시, 입출력 정답을 알고 있기 때문에 (미래의 정보 활용하지 않게끔)
- > 마스킹: 이전 단어들만 dependent, 뒤의 단어들은 dependent 하지 않게함
- Encoder-Decoder Attention
- 1) Decoder 들어가기 이전에 generation된 단어들만으로 query를 만들고
- 2) key, value는 input encoded 벡터에서 활용
- 단어들의 분포를 만들어서 그 중의 단어 하나 샘플링해서 동작
■ Vision Transformer
- 방법
- 1) 단어들의 sequence가 아닌 이미지를 특정 영역으로 나누고
- 2) 각각의 patch를 linear layer에 통과시켜 마치 하나의 입력처럼 넣어줌
- 3) patch+position Embedding
■ DALL-E
- 문장 to 이미지
- transformer의 decoder만 활용
#5-1 Generative model
■ Genrative Model
- 그럴 듯한 이미지를 만드는 것?
- > 더 포괄적인 개념
- > probability distribution 「p(x)」 (x는 입력)
- Generation
- > sampling: training data에 있지 않은 이미지 생성
- > inplicit model: only generation
- Density estimation
- > anomaly detection: 확률, 판단과 함께 이상행동 감지 (분류?)
- > explicit model: 입력이 주어졌을 때 이에 대한 확률값을 얻어낼 수 있는 모델
- Unsupervised representation learning
- > feature learning: 특징 추출
■ Basic Discrete Distributions
- p(x)를 만들기 위해 확률에 대한 기본적인 지식 필요
- > Bernoulli distribution
- # (biased) coin flip
- # 확률 분포를 표현하는 숫자 하나가 중요
- @ 앞이 나올 확률 = P , 뒤가 나올 확률 = 1-P
- > Categorical distribution
- # (biased) m-sided dice
- # 주사위에서 n면이 나올 확률
- @ 5 파라미터 필요, 나머지 하나는 1에서 5 파라미터의 합 뺌
- > 예시
- # RGB: 필요한 파라미터 숫자 = 256 * 256 * 256 - 1
- # binary image(e.g. mnist): 필요한 파라미터 숫자 = 2^n -1
- @ 하지만 기계 학습에서 파라미터는 많을수록 학습이 어려움
- > 쉽게 할 수 있는 방법
- # n개의 픽셀이 모두 independent라고 가정
- 1) possible state는 똑같음
- 2) 이 distribution을 표현하기 위한 parameters = n
- @ 전부 독립적이기에 더하기만 하면 되기 때문
- # n개의 픽셀이 모두 independent라고 가정
- Conditional Independence
- > 기존 문제점
- # fully dependent는 parameters 너무 많음
- # 그냥 Independent는 parameters는 줄지만 표현하는 이미지가 적어짐
- > Chain rule
- # n개의 joint dist. → n개의 conditional dist.
- # 의존/비의존에 관계없이 성립
- > Bayes' rule
- # 예: p(x|y)
- > Conditional independence
- # if x⊥y|z, then p(x|y,z)=p(x|z)
- # z가 주어졌을 때 x,y가 independent함
- # x라는 random variable을 표현할 때 z가 주어지면 y는 상관없다는 뜻
- # 임의의 conditional dist.에서 뒷단의 condition은 날려버림
- > parameters의 변화
- 1) Chain rule (joint dist. 쪼개고)
- # 관계없다(=바뀐게 없다) 즉, parameters = 2^n-1
- 2) Makov assumption (이것 적용)
- # i번째는 i-1에만 dependent, 그외 independent
- # chain rule로 얻어지는 conditional dist.곱이 사라짐(이뻐짐)
- # parmeters = 2n-1
- # 그래도 fully indepent 모델(n)보다 많음,
- # conditional independence assumption으로 파라미터를 어떻게 줄이는지가 중요 → Auto-regressive models
- 1) Chain rule (joint dist. 쪼개고)
■ Auto-regressive models
- 특징
- > 이전 정보들에 dependent: Makov에 한정된게 아님
- > Ordering: 이미지 도메인에 Ar 모델 활용할 때 순서를 매김
- # 1차원적으로, 혹은 n차원적으로 순서를 매길 수 있음
- # 그에 따라 방법론도 달라지고 성능도 달라질 수 있음
- > 어떤식으로 conditional dependency를 주는지에 따라 전체 모델 구조가 달라짐
- # 이전 몇 개 고르는지 정할 수 있음
- # Auto-regressive (n) model: 이전 n개 고른 Ar 모델
■ NADE
- Neural Auto-regressive Density Estimator
- > i번째 픽셀을 1 ~ i-1번째까지 dependent
- 1) 첫번째 픽셀을 어느 것에도 dependent하지 않게 만듦
- 2) 두번째 픽셀은 첫번째에만 dependent
- > dependent 하다는 건?
- 1) 첫번째 픽셀값을 입력으로 받음
- 2) single-scala 출력
- 3) sigmoid 통과하여 0의 수를 바꿈(?강의해석 불가)
- 4) (중략) 5번째 픽셀을 만들 때 이전 픽셀을 다 받아서 NN→sigmoid→확률
- > NN할 때 입력의 크기가 달라짐
- # weight가 계속 커짐(i-1개 필요)
- Explicit model 이다.
- > 단순 generation뿐만 아니라 binary vector가 주어지면 확률 계산 가능
- > n개의 binary pixels 주어졌을 때
- 1) joint dist.를 chain rule을 통해 쪼갬
- 2) 첫번째 픽셀에 대한 확률분포를 앎(이후로 연속적으로 알게 됨)
- 3) 각각을 independent하게 집어넣고 계산
- 4) 확률값 생성!
- ※ 논문 제목에 Density Estimator 들어가면 explicit model을 말할 때가 많음
- > 출력값이 continuous 일 때
- # 마지막 layer에 가우시안 모델 활용하여 continuous dist. 만듦
■ Pixel RNN
- n*n 모델이 있을 때, RGB 픽셀 고려
- Ar model과 다른점
- > RNN을 통해서 generation
- > ordering을 다르게 (Pixel RNN based)
- 1) Row LSTM: i번째 픽셀을 만들 때 위쪽 정보 활용
- 2) Diagonal BiLSTM
- # Bi-direction LSTM 활용하되 이전 정보 다 활용하여 픽셀값 예측
#5-2 Generative model2_Latent Variable Models
■ D. Kingma 논문 강추강추 (Adam도 만듦)
■ Variational Auto-encoder
- generative model 아님
- 1) 아래와 같은 과정을 통한 결과 도출이 generation result이므로
- 2) generative model이라 할 수 있지만
- 3) auto-encoder에 의해 엄밀히 말하면 아님
- Variational inference (VI)
- > Posterior distribution을 찾는 데 목적이 있음
- # observation이 좋아졌을 때 관심있는 random variable 확률분포
- > Variational distribution
- # Posterior가 불가능할 때, 최적화 시킬 수 있도록 근사
- # Variational inference: Posterior를 제일 잘 근사할 수 있는 과정
- > KL divergece를 활용하여 variational dist.와 posterior를 줄임
- posterior dist.도 모르는데 어떻게 근사??
- > ★key) ELBO (Evidence Lower Bound)를 Maximize함으로써 얻음
- # Reconstruction Term
- 1) encoder를 통해 입력 x를 latent space로 보냄
- 2) 다시 decoder로 돌아오는 reconstruction loss를 줄임
- # Prior Fitting Term (KL divergence 활용)
- 1) dex한 이미지들을 latent space에 올림
- 2) latent space에서 이루는 점들의 분포와
- 3) 내가 가정하는 prior dist.가 동시에 만족하는 것
- 4) 이것을 잘 설명&구현한 것이 Variational Auto-encoder
- # Reconstruction Term
- Key limitation
- > intractable model
- # 얼마나 likli한지, cross한지 알기 어려움
- > prior fitting term
- # KL divergence 자체에 적분이 있기에 미분 계산X, 그래서 가우시안 사용
- @ isotropic Gaussian: 모든 output dim.이 independent
- # 가우시안에 한정된게 단점이기도 함
- # KL divergence 자체에 적분이 있기에 미분 계산X, 그래서 가우시안 사용
■ Adversarial Auto-encoder
- 가우시안에 한정되지 않음
- gan을 활용하여 latent dist. 사이에 분포를 맞춤
- > VA의 prior fitting term를 gan으로 바꾼거에 불과함
- > 그래서 latent dist.를 sampling만 가능한 어떤 분포만 있어도 맞출 수 있음
- > unform, ~, 가우시안 등등 다양하고 복잡한 분포 활용 가능
■ GAN (Generative Adversarial Network)
- 학습에 결과로 나오는 generator를 학습하는 discriminate가 점점 더 좋아짐
- > 서로를 통해 점점 더 나은 결과를 도출
- > inplicit model임
- 작동방식
- 1) z라는 latent dist.에서 출발
- 2) G를 통해 Fake 출력
- 3) generate discriminator는 True/Fake 구분하는 labeling 학습
- 4) generator는 discriminator 입장에서 True가 나오도록 다시 generate update
5) discriminator는 이렇게 해서 결과로 나온 이미지 생성 - 6) real 이미지와 discriminate 되도록 discriminator 학습 시킴 (반복)
- GAN Objective
- > generator와 discriminator 사이의 minimax 게임 (경쟁하는)
- 1) discriminator를 항상 최적화 시키는 D는
- # D*_G(X)=P_data(x)/P_data(x)+P_G(x)
- 2) generator에 넣으면 Jenson-Shannon Divergence (JSD)가 됨
- # GAN Objective가 많은 경우 == JSD를 최저화 하는 것
- # discriminator가 optimal이라고 가정할 때 나오는 수식임
- # 즉, 실제로는 optimal discriminator에 보장 힘듦
- 1) discriminator를 항상 최적화 시키는 D는
■ 그외 논문
- DCGAN
- > 처음의 GAN은 MLP 사용
- > DCGAN은 이미지 도메인 사용
- # 이미지를 만들 때는 MLP보다 deconv.받고 generate하는게 성능 좋음
- > Leaky-ReLU
- Info-GAN
- > 학습할 때 단순히 z를 통해서 generate하지 않고 c라는 클래스를 랜덤하게 집어넣음
- # GAN이 특정 모드에 집중하게 만듦: one-hot 혹은 condition 벡터에 집중하게 함
- # multimodal distribution을 c라는 벡터를 통해서 잡아주는 역할
- Text2Image
- > 입력이 문장이고 이를 이용하여 conditional GAN을 만들어서 이미지 생성
- Puzzle-GAN
- > 강사님 저자로 돼있음
- CycleGAN
- > GAN을 사용하며 이미지 사이의 도메인을 바꿀 수 있음
- > ✨Cycle-consistency loss
- # 장점: 일반적으로 말을 얼룩말로 바꿀 때 똑같은 이미지가 필요한데 특정할 필요없이 알아서 임의의 말 이미지 주어지면 얼룩말로 바꿔줌
- Star-GAN
- > 국내 논문
- > 이미지 도메인을 바꾸는게 아니라 컨트롤 할 수 있게 함
- Progressive-GAN
- > 고차원 이미지 만들 수 있는 방법론
'AI 배우기 > 딥러닝' 카테고리의 다른 글
[부스트코스] 딥러닝 기초 다지기 1~2 (0) | 2023.09.06 |
---|