15. pix2pix의 한계점 #2
흑백사진 -> 컬러도 마찬가지임
이런 현상이 발생하는 이유는 loss를 막기 위해 흑백이 아닌 색
깔을 모델이 선택을 하는데 이때 색깔값에 대한 가이드라인이
따로 없기 때문에 모델이 중간값을 고르는 경향이 나타남
16. pix2pix의 Intuition
여기서 중요한 Intuition은 아래와 같다.
사람이 보기에는 output과 Ground Truth의 차이가 명확히 눈에
보인다. 즉 사람은 결과의 구별(discrimination)할 수 있다.
사람이 구별할 수 있으면 딥러닝으로도 구별할수 있지 않을까?
사람 대신에 다른 뉴럴 네트워크가 이 역할을 하게 만들어보자.
18. 우리가 GAN을 사용하는 목적
우리의 목적은 흑백사진 입력을 컬러사진으로 만드는 것이고
이 때 Generator 네트워크를 이용한다.
Generator를 G라 부른다.
19. GAN 네트워크 구성
GAN에서는 D를 새로 만들어 G가 real인지 fake인지 구별하게끔
만든다.
즉 두 네 트워크의 미션은 아래와 같다.
D는 fake를 구별하려 한다.
G는 fake image로 D를 속이려 한다.
20. GAN 네트워크 수식 정의 : D함수
D의 입장에서 0에 가까우면 real, 1에 가까우면 fake로 구별한다.
그러면 D의 입장에서 loss 정의는 아래와 같이 할 수 있다.
logD(G(x))를 통해 G가 만들어내는 결과는 1(fake)에 가
깝게 만든다
log(1 − D(y))를 통해 실제 정답 이미지는 0(real)에 가깝
게 만든다.
21. GAN 네트워크 수식 정의 : G함수
마찬가지로 G의 입장에서는 D와 반대로 argMin을 하면 된다.
logD(G(x))를 통해 G가 만들어내는 결과는 0(real)에 가깝게
만든다
log(1 − D(y))를 통해 실제 정답 이미지는 1(fake)에 가깝게
만든다.
22. GAN 네트워크 수식 정의 : 전체수식
수식을 함께 적으면 아래와 같다.
G 입장에서는 D를 가장 잘 속이는 이미지를 만들어내야 한다.
23. GAN에 대한 간단한 이해
G의 관점에는 D가 loss function이다.
이를 통해 G와 D를 경쟁관계로 만드는게 GAN의 장점이다.
26. pix2pix의 또다른 한계점
pix2pix처럼 흑백을 컬러사진으로 바꾸는 것은 데이터셋을 구성
하기 쉽다.
하지만 현실세계에서는 항상 학습을 위한 데이터셋을 구성하기
쉬운게 아니다.
(예를 들어 모네의 실제 그림과 실물 이미지를 1000장 구성하려
면?)
27. CycleGAN이 하고자 하는 것
예를 들어 모네의 그림과 실제 사진으로 바꾸는 작업을 학습시
킨다고 해보자.
완전히 똑같이 않은 원하는 style의 사진은 쉽게 구할 수 있다.
28. 기존의 GAN Loss를 CycleGAN에서도 사용할수 있을까?
생각해보면 GAN Loss는 동일하게 사용할 수 있음
29. GAN Loss만 사용했을때의 문제점
하지만 서로 다른 사진이 같은 target 이미지로 generation 될수
있는 여지를 막을 수 없음
즉 아래의 2가지 문제점이 있음
Input의 특성이 무시되고
같은 Output으로 매몰될 여지가 있음
30. CycleGAN의 Loss 컨셉
핵심 컨셉 : 따라서 추가적인 loss의 조건은 원본 이미지로
reconstruct 되게끔 강제하는 것이다.
즉, 이 의미는 사진의 style을 바꾸는데 다시 원래 그림으로 복구
가능한 정도로만 바꾸라는 뜻이다.
31. CycleGAN의 Loss 함수
기존 GAN Loss는 유지한다.
추가적으로 생긴 loss는 가짜이미지를 다시 genration한 이미지
와 기존 원본 이미지 x의 loss가 최소화 되어야 한다는 것이다.
마치 pix2pix의 pixel level difference를 추가해준 개념이다.
32. 자 따라서 아래의 loss 함수로 위의 역할을 수행할 수 있게 되었
다.
다음 슬라이드에서 조금만 더 Loss에 대해 생각해보자.
33. 반대방향 학습
같은 맥락으로 반대 방향의 학습도 가능하다. F가 G의 역함수 개
념이니까 이게 가능하다.
예를들어, 바로 위의 학습이 모네 그림 -> 실사 이미지의 학습이
라면 이번에는 실사 이미지 -> 모네 그림으로의 학습을 수행하
는 것이다.
34. CycleGAN loss함수의 완성
따라서 위의 두 방향의 학습을 합치면 loss가 아래와 같이 된다.
Cycle GAN은 이 두 방향의 loss를 합친다.
Cycle GAN 연구Lab에 따르면 실제로 두 방향이 한 방향으로만
학습을 시켜보면 결과가 좋지 않았다고 한다.
37. CycleGAN 적용 사례 #1
loss를 이것저것 뺐을 때 어떤 결과가 있는지 실험을 해보았다.
city scape 데이터셋을 살펴보자. 정답지는 사람이 직접 색깔로
label해 놓은 데이터셋이다.
GAN만 사용하면 input으로 돌아오지 못하고 거의 같은 이미지
로 수렴한다.(label 데이터)
실험 시 가장 좋은 성능은 CycleGAN을 사용했을때였다.
38. CycleGAN 적용 사례 #2
되돌아오는 이미지는 아래와 같다.
원본은 GTA 스크린샷, 정답지는 자율주행 차량 사진이다.
39. CycleGAN 설계 특징
Generator 아키텍쳐
Cycle GAN연구에서 G의 아키텍쳐를 세우는게 매우 중요한 것
을 발견하였다.
Disco GAN은 아래와 같은 G 아키텍쳐를 지닌다.
40. CycleGAN의 첫번쨰 아키텍처
최초의 Cycle GAN은 U-Net을 사용하였다.
장점은 skip connection으로 인해 디테일이 훨씬 더 많이 간직된
다는 장점이 있지만
단점은 두가지의 컨텐츠가 비슷한 경우 Skip Connecton을 최대
한 사용하려고 하여 성능이 좋지 못했다고 한다.
41. CycleGAN의 마지막 아키텍처
ResNet을 사용하였 장점은 이미지 퀄리티 입장에서 좋았는데
단점은 메모리를 많이 사용한다고 한다.
학습 파라미터가 적어 많은 변형을 일으킬 수 없다는 특징이 있
다.
42. GAN Loss 함수의 변경
CycleGAN에서는 cross entropy 사용시 vanishing gradient 문제
가 발생했다.
따라서 대신에 LSGAN을 사용할 때 성능이 잘 나와서 이를 사용
하였다고 한다.
44. L1 loss의 추가의 어려움
CycleGAN은 아래 이미지를 얼룩말로 바꾸는 정답이 없기 때문에 직
접적인 L1 loss를 구하기 어려움
45. CycleGAN의 간접적 L1 loss #1
얼룩말을 말처럼 바꾼 이미지를 이용하여 가짜 L1 로스(여기서
얼룩말이 정답지)를 넣어서 효과를 보았음
F(y)로 이미지를 생성한 뒤 이를 G()를 적용하여 정답지 y와 비교
46. CycleGAN의 간접적 L1 loss #2
당연한 얘기지만 얼룩말을 넣었을때 얼룩말이 나오게끔 나오는
loss를 G에 추가하는 것도 도움이 된다.(identity loss)
47. L1 loss를 추가한 결과물
L1 loss가 더 안정적인 가이드 라인이 되어준다.
그림-> 사진 에서 더 안정적인 결과물이 나왔다.
48. Replay Buffer
GAN 트레이닝을 진행하며 똑같은 샘플별로 성능을 살펴보면
트레이닝을 돌릴때마다 성능이 천차만별이다.
이 불안정성을 해결하기 위해 주기적으로 Generator가 만들어
놓은 사진을 다시 discriminator에게 보여줌, 이 부분은
Discriminator에게만 적용함
55. GTA를 통한 자율주행 모델링
실사에 가까운 GTA 게임에서 Object Detection을 훈련시키고 실제
도로에서 검증한다.
56. GTA를 통한 자율주행 모델링의 한계점
하지만 GTA에서 학습된 모델로 실제 환경에서 돌렸을 때 정확
도가 그렇게 높지가 않다.
Per-class accuracy는 object 인식의 확률의 평균(가로등은 몇%,
자동차는 몇% 등)이고 per-pixel accuracy는 픽셀단위 인식의 정
확도를 의미한다.