-
[Image to Image Translation] 얼렁뚱땅 Bicycle GAN : Toward Multimodal Image to Image translation 리뷰얼렁뚱땅 논문리뷰 2022. 3. 16. 16:56
구글 스칼라에 Image to Image translation을 검색했을 때
위에부터 차례로 3개의 논문을 보자면
Pix2Pix, CycleGAN, BicycleGAN
>_<
예전에 쓴 CycleGAN 리뷰에서 Pix2Pix, CycleGAN이 I2I의 국룰이라고 생각한다고 했는데
뭔가 증명이 된듯한 기분이 좋은기분
Introduction
- 기존 연구들의 경우 Single Output을 내는 I2I에 집중되어 있는 경향이 존재함
- 본 논문에서 가장 이루고자 하는 2가지는
- Perceptual Realistic. 딱 봤을 때 리얼한 이미지를 생성하며, 입력이미지와의 인지적 유사도가 존재해야함
- Diverse Output. Input 이미지에 대해 다양한 Output 이미지 생성이 가능해야함
- 즉, 아래 사진처럼 하나의 Input 이미지에 대해 다양한 Output 생성하지만 입력이미지와 관계가 존재하는 Output을 생성함
Zhu, Jun-Yan, et al. "Toward multimodal image-to-image translation."&amp;amp;amp;amp;nbsp; Advances in neural information processing systems &amp;amp;amp;amp;nbsp;30 (2017). - 기존 연구들에서는 Latent Space를 이러쿵 저러쿵하는 modality 방법을 채택함
- 이러한 방법의 경우, input 이미지에 대한 정보가 담겨져 있지 않아서 제대로 못하는 한계가 존재함
- 또한 기존 연구들을 보면, "mode Collapse" 현상이 일어남
- "mode collapse"는 여러개의 Latent space가 하나의 Image를 생성하는 형태를 의미함
- 즉, Latent space에 따라 다양한 이미지가 생성되어야 하는데, 그것이 아니라 다 똑같은 이미지만 생성되는 것을 의미함
- 본 논문에서는 Latent space -> output이 다대일 관계가 되는 것을 없애고자 함
- 맨 처음 PixPix Framework에 Noise z를 추가해주어서 다양한 결과가 나오는지 확인 하는 실험해봄
- 하지만, 생성된 결과는 Noise에 따라 다양한 이미지가 생성되지 않음
- 이것이 의미하는 것이 Mode collapse의 일종으로 noise z -> output 사이 다대일 관계임을 의미함
- 따라서, 본 논문에서는 Output과 Latent space 사이에 일대일 대응을 만들어야겠다고 생각함
- Latent Space -> Output : 일대일 대응
- 본 논문에서 접근 하는 방법은 ( Latent -> Output ) Mapping과 더불어 하나를 더 보고자 함
- 바로 Encoder를 추가적으로 이용해 ( Output -> Latent ) 도 다시 Mapping 시키고자 함
- 이와 같은 방법을 하면서, Generator에게 생성 해야 할 정보를 충분하게 줄 수 있을 것임
- 예를 들어, Night Image -> Day Image를 하며 Noise를 여러개를 주고 이를 일대일관계를 매핑시키며, 밝은 날의 Day, 구름낀 Day 등을 Noise에 따라 다양하게 컨트롤 가능하게 될 것이라는 말임
- 본 논문에서는 기존 연구들에서 아이디어를 얻어 본 논문을 전개함
- 우선 먼저 알아야할 것은 실제 Test 할 때 사용하는 것은 Input image, noise z만 input으로 사용함
- cVAE-GAN
- GT를 Encoder에 넣어서 Latent Space(Image B의 데이터 분포)를 도출함
- 가우시안 분포와 Noise z의 KL-divergence를 이용해 오차를 최소화함 왜냐면 Inference 시 가우시안 분포를 이용해서 noise z를 사용하게 될 것이므로, GT가 encoding 되었을 때, 가우시안 분포의 형태를 보여야 실제 inference 때 다양한 사진 도출 가능함
- 여기서 KL-divergence는 두 확률분포의 차이를 계산하는데 사용하는 함수로 수가 작을수록 두개의 확률분포가 유사하다고 생각할 수 있음
- 무튼 그렇게 목표 데이터 분포에 근사화하게 한 noise z와 input image A를 Generator에 넣어서 Prediction B를 도출함
- 맨 처음 이용한 GT B와 도출한 Prediction B를 Discriminator와 L1 Loss로 근사화 시키도록 학습함
- cLR-GAN
- Input 이미지와 noise z를 Generator에 넣어서 Prediction B를 도출함
- 그러고 Discriminator에서 Prediction B와 GT B를 봄 여기서 L1 Loss를 보지 않는 것이 의미하는 바는 Prediction B가 GT B와 비슷한 이미지를 생성하라고 학습하는게 아니라 GT B처럼 리얼한 이미지를 생성해라에 더 초점을 맞춘 것임
- 다시 말해, Prediction B는 GT B처럼 생길 필요가 없음. 단지 리얼하게 이미지만 생성하면 됨
- 그러고 Encoder를 이용해 Prediction Noise z를 도출하고 실제 Input으로 넣었던 Noise z와 L1 Loss를 봄
- 이것이 의미하는 바는, 생성한 Output이미지가 정말 내가 넣은 Noise z와 1대 1 매칭이 되도록 하기 위함임
- ***BicycleGAN***
- 본 논문에서는 위의 cVAE-GAN과 cLR-GAN을 결합하여 사용함
- 이렇게 하여 Latent space(encoding)와 Output 사이의 직접적인 연결을 할 수 있음
- 또한 이로써 더 나은 성능을 보일 수 있음
- 본 논문에서 Baseline(비교할 논문)으로 사용할 것은 Pix2Pix+noise z를 이용하고자 함
- Inference 할 때에는 Generator만 이용해 Input Image + noise z -> Prediction B 이렇게만 사용함
Zhu, Jun-Yan, et al. "Toward multimodal image-to-image translation."&amp;amp;amp;amp;nbsp; Advances in neural information processing systems &amp;amp;amp;amp;nbsp;30 (2017). Related works
Generative model
- AutoEncoder, Variational autoencoder, autoregressive model이 있음
- 위에 애들은 그럭저럭 잘 이미지를 생성함
- autoregressive model의 경우, inference time이 길다는 한계가 존재함
- GAN은 이러한 한계를 극복하고, 실제 이미지의 분포를 유사하게 얻어내서 이를 기반으로 성공적인 이미지 생성을 함
Conditional image generation
- VAE와 autoregressive model은 이미지 생성의 가능성을 보여주었으며, Image to Image translation pix2pix는 품질을 크게 향상시킴
- Pix2Pix의 경우에는 기존 GAN에서는 Random한 이미지를 생성하는 것이 목적이었다면, Pix2Pix는 입력 이미지에 상응하는 Output 도출을 위해 Discriminator에 Conditional value로 Input data를 함께 넣음 (기존엔 Fake이미지 or Real 이미지만 넣음)
Explicitily-encoded multimodality
- multimode를 위해서 input image와 더불어 input으로 추가적인 정보를 제공하는 방법이 존재함
- 혹은 multimode를 위해 여러 모델을 합치는 방법도 존재함(각 모델은 하나의 Task만 수행하고 그런 것들을 모으는 것)
- Text 같은 경우에는 여러 대답을 Output으로 낼 수 있는 등 현재 발전이 되었는데 I2I는 현재 부족함
- 본 논문에서는 latent code와 image space 사이에 연결을 통해 multiple output이 나올 수 있도록 conditional image generative model을 제안함
Multimodal Image to Image Translation
- 본 논문의 목표 하나의 Input에 대해 다양하고 사실적인 여러 Output이 나올 수 있게 하자 !
- 예를 들어, 신발 스케치를 input으로 색깔을 칠하는 Output이 나오게 해주세요 하면 빨간 신발, 파란 신발, 금색 신발 이렇게 다양하게 나올 수 있도록 하는 것이 목표임
- Input을 A, Output을 B라고 부르도록 하겠음
- 학습을 시키기 위해서는 {Ai, Bi} 이렇게 Paired한 데이터셋을 이용해서 학습시킴 즉 학습을 시킬 때는 여러 Paired한 쌍을 만든느 것이 아니라, 한 Paired한 쌍을 사용한다는 의미임
- 하지만, Test(Inference) 때에는 반드시 A가 주어졌을 때 다양한 B^을 도출 할 수 있어야 함
- 따라서, 본 논문에서는 latent code Z를 학습시키는 방법을 채택함 (차원은 z차원이라고 하겠음)
- 즉, G : (A, Z) -> B 이런 형태가 되도록 함
- Z가 랜덤하게 바뀜에 따라 B^이 여러 모양으로 예측 될 수 있음
- 여기서 Z는 가우시안분포에 따르는 (0,1)안에 있는 Random한 값을 사용함
Baseline : pix2pix + noise(z -> B^)
- 아래 그림과 같은 Architecture를 사용하고자 함
- noise z를 입력으로 함께 사용함 그리고 GAN Loss + Discriminator Loss
- Loss도 Pix2Pix 그대로 사용함 단, G에 z가 함께 들어간다는 것 빼고 다른 거 없어보임
- reconsturction loss로 L1 Loss 사용함
- 단순히 noise를 추가해준 형태임
..? 이거 왜하는거지 ..?
- Generator가 noise z의 정보를 encoding 하는데 메리트가 전혀 없음
- 즉, noise z가 지금 컨트롤 되지 않고 있음 그래서 noise z에 따라 당연히 다양한 결과 안나옴 ..
- 보면 L1 Loss 사용해서 어떤 noise z 들어가도 GT랑 L1을 보니까 당연히 mode collapse 나옴..
- 흠 본 논문에서는 애를 Baseline으로 앞으로는 latent space를 명시적으로 특징을 Capture하도록 할 것임
(처음엔 mode collapse나오게 했다가 점점 없애려구 그러나보다)Zhu, Jun-Yan, et al. "Toward multimodal image-to-image translation."&amp;amp;amp;amp;nbsp; Advances in neural information processing systems &amp;amp;amp;amp;nbsp;30 (2017). Zhu, Jun-Yan, et al. "Toward multimodal image-to-image translation."&amp;amp;amp;amp;nbsp; Advances in neural information processing systems &amp;amp;amp;amp;nbsp;30 (2017). Zhu, Jun-Yan, et al. "Toward multimodal image-to-image translation."&amp;amp;amp;amp;nbsp; Advances in neural information processing systems &amp;amp;amp;amp;nbsp;30 (2017). Zhu, Jun-Yan, et al. "Toward multimodal image-to-image translation."&amp;amp;amp;amp;nbsp; Advances in neural information processing systems &amp;amp;amp;amp;nbsp;30 (2017). Conditional Variational Autoencoder GAN : cVAE-GAN(B -> z -> B^)
- 방법 중 하나는 B(GT)가 명시적으로 latent code z에 Mapping되도록 하는 것임 (이 과정에서 Encoder E 필요)
(즉, B의 특징을 가지고 있는 Latent z를 만들어서 이것을 그대로 사용하면 B와 비슷한게 나오지 않을까?)
- Generator G는 이 latent code z와 input image A를 함꼐 input으로 사용함 그러고 Prediction B^을 Output으로 도출
- 즉 생성된 B^은 B가 reconsturction 된거여라~ 하고 바라는 거임
- 아래 아키텍처를 보면 이해하기 더 쉬울 것 같은데 잘 보면 B -> (A with latent code z) -> B^ 이런 형태인 거고 즉 중간에 (A with latent code z)를 거치는 Autoencoder 형태임
Zhu, Jun-Yan, et al. "Toward multimodal image-to-image translation."&amp;amp;amp;amp;nbsp; Advances in neural information processing systems &amp;amp;amp;amp;nbsp;30 (2017). - Loss는 위에 Pix2Pix의 GAN Loss랑 동일한데 살짝 다른 부분이 pix2pix는 noise z가 가우시안분포에 의한 랜덤 이었고, 여기서는 z ~= E(B)임 즉 Encoder에 B 넣어서 나온 것을 z로 사용함
- 그래서 아래 z~E(B)라고 되어있는건 E(B)에서 도출 가능한 z라고 이해하면 쉬움(정확히는 E(B)의 확률 분포와 유사 분포 z임)
Zhu, Jun-Yan, et al. "Toward multimodal image-to-image translation."&amp;amp;amp;amp;nbsp; Advances in neural information processing systems &amp;amp;amp;amp;nbsp;30 (2017). Zhu, Jun-Yan, et al. "Toward multimodal image-to-image translation."&amp;amp;amp;amp;nbsp; Advances in neural information processing systems &amp;amp;amp;amp;nbsp;30 (2017). - 가우시안 분포와 Noise z의 KL-divergence를 이용해 오차를 최소화함
- 왜냐면 Inference 시 가우시안 분포를 이용해서 noise z를 사용하게 될 것이므로, GT가 encoding 되었을 때, 가우시안 분포의 형태를 보여야 실제 inference 때 다양한 사진 도출 가능함
Zhu, Jun-Yan, et al. "Toward multimodal image-to-image translation."&amp;amp;amp;amp;nbsp; Advances in neural information processing systems &amp;amp;amp;amp;nbsp;30 (2017). - 따라서 최종적인 Object Function은 아래와 같음
Zhu, Jun-Yan, et al. "Toward multimodal image-to-image translation." Advances in neural information processing system 30 (2017). - 추가적으로 이건 cVAE-GAN이었는데, KL Loss를 제거해서 cAE-GAN이라고 부를 거고 이거와도 한번 비교를 할 예정임
- 즉 noise z를 컨트롤 하냐 vs 컨트롤 안하냐 => cVAE-GAN vs cAE-GAN
Conditional Latent Regression GAN : cLR-GAN(z -> B^ -> z^)
- 여기서는 Generator 입장에서 보았을 때, latent space가 딱 들어왔을 때 어떻게 더 잘 Generate하냐 !
- 따라서 생성한 Prediction B^을 또다른 Encoder에 넣어서 다시 latent space z^을 도출함
- 그러고 Input으로 들어왔던 N(z)와 z^ 사이의 L1 Loss를 보아서 최대한 유사하게 학습이 되도록함
Zhu, Jun-Yan, et al. "Toward multimodal image-to-image translation." Advances in neural information processing system 30 (2017). - 아래 식이 B^를 다시 인코딩한 z^와 noise z 사이의 L1 loss 계산
Zhu, Jun-Yan, et al. "Toward multimodal image-to-image translation." Advances in neural information processing system 30 (2017). - 아래가 최종 Object Function임
- 자세히 보면 앞에 Baseline이나 cVAE-GAN은 B와 B^사이의 유사성을 보고자 하였는데 아래 식에는 그것이 없음
- 그것이 의미하는 바는 여기서는 noise z가 다양하게 들어오면 다양한 Output을 내야하기 때문에 엮지 않는 것
- 따라서, 아래 목적함수가 진짜 목표하는건 B^가 B와 유사하지는 않을지라도 Realistic 해야함
Zhu, Jun-Yan, et al. "Toward multimodal image-to-image translation." Advances in neural information processing system 30 (2017). Our Hybrid Model : BicycleGAN
- 본 논문에서는 위의 cVAE-GAN과 cLR-GAN을 합쳐서 사용 할 것임
- cVAE-GAN만 사용하면, Training Dataset은 생각해보면 1개의 Paired한 데이터기 때문에 다양한 이미지 생성 못할 수 있음 그리고 이게 KL 손실이 최적화가 안될 수도 있음(B -> z -> B^)
- cLR-GAN만 사용하게 되면, 사실적이고 랜덤한 이미지가 많이 나올 수는 있음(B, B^ 유사도 안보기 때문) 근데, GT(A-B) 쌍을 제대로 활용하지 않음(정답 데이터에 대해 열려있는 상태임) ( z -> B^ -> z^)
- 따라서 이런 두개의 장점들을 쑝 하고 합쳐야 함 (B -> z -> B^ -> z^) 두번 돌아서 bicycleGAN임
- 최종 Object function은 그냥 위에 있는거 쇼로록 하고 다 합친거고
- 람다들은 하이퍼파라미터적 성격을 가짐
Zhu, Jun-Yan, et al. "Toward multimodal image-to-image translation." Advances in neural information processing system 30 (2017). - 기존 VAE-GAN 연구에서 이미지를 Encoding한 noise z를 noise로 사용하는 것이 성능향상이 있는 것을 확인함
- 그리고 본 연구에서는 다른 것도 하나 더 볼건데 그건 바로 위에 식에서 latent L1을 빼고도 한번 보겠음 이를 vVAE-GAN++라고 부르겠음
Implementation Details
Network architecture
GAN Architecture
- Generatorsms U-net 구조를 이용하겠음
- Skip coneection을 통해, 입력과 출력 사이의 공간적 대응이 있을 때 강력한 결과를 생성함
- Discriminator는 PatchGAN
- 구냥 Pix2Pix 아키텍처임
Encoder Architecture
- CNN을 몇개 쌓아서 Downsampling ?
- 몇개의 Residual Block을 사용?
Training details
- LSGAN : Loss Crossentropy안쓰고 고냥 그 모지 ? 최소제곱 쓴 것
--> 더 안정적으로 학습할 수 있음
- 람다 = 10, 람다(latent) = 0.5, 람다(KL) = 0.01
- Encoder는 cLR-GAN에 예측 평균을 사용함 ..? <코드봐야 알 듯 뭔말인지>
- Discriminator는 cLR-GAN와 cVAE-GAN 두개 따로 사용함 -> 그래야 더 결과 좋음
- G와 E를 동시에 최적화 하면 의미있는 학습이 되지 않아서 E를 고정한 채 G만 학습함
- batch 1, Adam, 0.0002, z-dimension 8
Zhu, Jun-Yan, et al. "Toward multimodal image-to-image translation." Advances in neural information processing system 30 (2017). Injecting the latent code z to generator
- z를 어떻게 넣을까를 아래 사진 처럼 두가지 방법으로 해봄
- 한번만 넣냐 vs 계속 넣냐
- latent code 8 -> H x W x 8 로 차원확대 (와 진짜 다 복사해서 쓰네 다행이당 ㅜ)
Zhu, Jun-Yan, et al. "Toward multimodal image-to-image translation." Advances in neural information processing system 30 (2017). Experiments
Datasets
- edges -> photos
- google maps -> satellite
- labels -> images
- outdoor night -> day
- 256x256
Method
- pix2pix + noise
- cAE-GAN : cVAE-GAN에서 KL loss 뺀 것
- cVAE-GAN
- cVAE-GAN++ : cVAE-GAM + Latent space z L1 loss
- cLR-GAN
- BicycleGAN
Qualitative Evaluation
- Pix2Pix + noise : 사실적임. 하지만 Diverse하지는 않음
- 잠만 나 여기 이해 안되는 부분 ( 논문 )
- cVAE-GAN이 다양한 것을 생성하려고 노력하는데, 이상한 인공물들이 생긴다
- cLR-GAN은 출력의 변동이 적음
- 이라고 써있는데 이게 진짜 맞아 ?!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- 난 아무리 봐도 반대 인거 같은데 ? 그리고 Loss function 봐도 당연히 cLR-GAN이 더 다양하게 생성해야한다고 생각함 왜냐하면, GT와의 L1 Loss를 보지 않기 때문에 그게 의미하는 것은, Real하게만 생성해라라는 의미인데, 그러면 당연히 더 다양하게 생성은 되겠지
- 그리고 cVAE-GAN는 보면 GT와의 L1 Loss를 보기 때문에 !!!!! 그러면 뭘 바꿀려고 해도 아무리 바꿔도 GT와 비슷해질 수 밖에 없음 그래서 나는 반대인거 같음 그리고 아래 결과에도 그럼 !!!!!!!!!!!!!!!
Zhu, Jun-Yan, et al. "Toward multimodal image-to-image translation." Advances in neural information processing system 30 (2017). Zhu, Jun-Yan, et al. "Toward multimodal image-to-image translation." Advances in neural information processing system 30 (2017). Quantitative Evaluation
- BicycleGAN이 더 다양하고 사실적으로 이미지를 생성함
- 그리고, encoder로는 Resnet 쓰는게 좋고, 별로 차이 안나지만 굳이 뽑자면 모두 latent space 정보를 넣어주는 것이 좋음
Zhu, Jun-Yan, et al. "Toward multimodal image-to-image translation." Advances in neural information processing system 30 (2017). Zhu, Jun-Yan, et al. "Toward multimodal image-to-image translation." Advances in neural information processing system 30 (2017). '얼렁뚱땅 논문리뷰' 카테고리의 다른 글