질을 높이는 점진적 생장 방식

PGGAN의 품질을 향상시키기 위한 점진적 성장 Gan


PGGAN이란?품질, 안정성, 변이성을 높이기 위해 감초를 점차적으로 재배하다.관건은 생성기와 감별기를 점차적으로 늘리는 것이다.낮은 해상도부터 나는 새로운 도층을 추가했다. 훈련이 진행됨에 따라 이 도층들은 점점 정교해지는 디테일을 모의할 수 있다.이것은 훈련 속도를 가속화할 뿐만 아니라 훈련을 크게 안정시켜 우리로 하여금 전대미문의 품질, 예를 들어 1024^2의 셀레비아 이미지를 생성할 수 있게 한다.이미지 생성의 변화를 늘리고 감독이 없는 CIFAR10에서 8.80의 기록 시작 점수를 실현하는 간단한 방법도 제시했다.이 밖에 생성기와 감별기 간의 불건전한 경쟁을 막는 데 매우 중요한 세부 사항을 묘사한다.마지막으로 나는 GAN 결과를 평가하는 새로운 지표를 제시했는데 이미지의 질과 변화를 포함한다.추가적인 공헌으로 나는 더욱 높은 품질의 셀럽A 데이터 집합을 구축할 수 있다.

숫자.


감초의 점진적 생장

시퀀스는 발생기 G와 감별기 D가 모두 4X4 픽셀의 낮은 공간 해상도에서 시작된다.기술이 발전함에 따라 나는 그림을 만드는 공간 해상도를 얻기 위해 G와 D에 층을 추가했다.전체 과정에서 모든 층이 교육을 진행할 수 있다.NXN은 NXN 공간 해상도에서 실행되는 볼륨 레이어입니다.고해상도에서 안정적인 합성을 허용하고 훈련 속도도 크게 빨라졌다.오른쪽 한 장, 위의 여섯 장의 사진은 1024X1024의 속도로 점차적으로 생성된 것이다.
  • 생성기와 분류기의 레이어를 대칭적으로 하나씩 쌓아가며 학습할 경우 대형 구조먼저 파악한 후 세세한 세밀한 배율 세부로 좁혀가는 원리이다. 레이어를 늘리는 시점의 충격을 완화하기 위해 도로망의 구조를 사용하여 학습의 안정성과 속도를 올릴 수 있다.
  • 도로망

    발생기 G와 감별기 D의 해상도가 배가될 때, 나는 새로운 층에서 매끄럽게 담금질할 것이다.이것은 16X16 이미지에서 32X32 이미지로 변환하는 것을 설명한다.
    과도 b 기간에 더 높은 해상도로 운행하는 층은 잉여 블록처럼 그 무게가 0선에서 1로 증가한다.toRGB는 특징 벡터를 RGB 색에 투영하는 도면층으로 fromRGB는 이 두 개의 1X1 볼륨을 반전시킨다.감별기를 훈련할 때, 실제 그림은 네트워크의 현재 해상도와 일치하도록 축소됩니다.해상도 변환 기간에 실제 이미지의 두 해상도 사이에 삽입을 하는 것은 생성기 출력이 두 해상도를 조합하는 방식과 유사하다.
    def lerp(a, b, t): return a + (b - a) * t
    def lerp_clip(a, b, t): return a + (b - a) * tf.clip_by_value(t, 0.0,           1.0)
    //omitted
    if structure == 'linear':
    img = images_in
    x = fromrgb(img, resolution_log2)
    for res in range(resolution_log2, 2, -1):
        lod = resolution_log2 - res # lod: levels-of-details
        x = block(x, res)
        img = downscale2d(img)
        y = fromrgb(img, res - 1)
        with tf.variable_scope('Grow_lod%d' % lod):
            x = lerp_clip(x, y, lod_in - lod)
    
  • 비지도학습 달갑다은 학습 데이터의 변이하다에 대한 자집만을 학습하는 경향이 있다. 소량 감별기라는 기법을 통해 각 이미지와 미니배치의 정보를 분류기에 같이 제공함으로써 다양성에 대한 학습 효과를 증진시키고 새로운 파라미터 없이 진행을 한다.
  • 전체 소량에 대해, 각 특징.의 각 공간 위치의 표준편차를 구한다. (입력: N x C x H x W, 출력: C x H x W)
  • 앞서 계산된 값으로 각 공간 위치에서 모든 특징.에 대한 평균을 구한다. (입력: C x H x W, 출력: 1 x H x W)
  • 계산된 평균을 마지막 샘플 레이어뒤에 추가한다.

  • gerator와 감별기의 귀일화

  • 균형 잡힌 학습률:기존 방식과 달리 중량.의 초기화는 N(0,1)로 하되, 런타임중에 동적으로 가중치 매개 변수의 스케일을 조절해주자는 아이디어. 그는 초기화자이다에서 제안된 층마다 귀일화 상수로 가중치 매개 변수를 나누어준다. 사람들에게 즐겨 사용되는 RMSProp이나 아담의 경우 계단식 업데이트에 대해 정상화을 해주게 되는데, 이것이 매개 변수들에 대한 규모과는 별개로 계산되는 것이기 때문에 변동이 큰 매개 변수에 대해서는 학습에 효과적이지 않을 수 있다. 이 방법을 사용하면 모든 매개 변수가 같은 동적 범위를 갖게 하므로 동일한 학습속도를 보장할 수 있다.
    def get_weight(shape, gain=np.sqrt(2), use_wscale=False, fan_in=None):
    if fan_in is None: fan_in = np.prod(shape[:-1])
    std = gain / np.sqrt(fan_in) 
    if use_wscale:
        wscale = tf.constant(np.float32(std), name='wscale')
        return tf.get_variable('weight', shape=shape, initializer=tf.initializers.random_normal()) 
    else:
        return tf.get_variable('weight', shape=shape, initializer=tf.initializers.random_normal(0, std))
    
  • ✔️ 달갑다은 발전기와 감별기간의 불건전한 경쟁으로 인해 신호 폭가 점차 증가되기 쉽다. 이에 대한 해결책으로 이전의 연구들에서 변형된 대량 표준화의 사용이 제안되었으나, 달갑다에서는 이슈는 (BN)에서 제기된 문제상황이었던) 협동 변수 이동가 아니므로 이 연구에서는 신호 폭와 경쟁에 대해 적절히 제한하는 것에 초점을 맞춘다.
    ✔️ 생성기의 픽셀 특징 벡터 귀일화: 생성기와 감별기의 등급가 경쟁에 의해 통제불능의 상태가 되는 것을 막기위해 각 권적층의 요소층에 대해 픽셀단위로 정상화을 해준다. 결과물의 품질에 큰 영향을 준 것은 아니지만 필요시 신호량가 점차 증가되는 것을 막아주었다.

    def pixel_norm(x, epsilon=1e-8):
    with tf.variable_scope('PixelNorm'):
        return x * tf.rsqrt(tf.reduce_mean(tf.square(x), axis=1, keepdims=True) + epsilon)
    
    소량의 표준 편차를 사용하여 변이를 증가시키다
    현재 해상도에 맞춰 우리가 가지고 있는 실제 이미지를 규모를 축소하다하면 저해상도 이미지도 바뀌게 된다. 하지만 고해상도 이미지에 대한 정보도 담고 있다는 것을 알아두자. 두개의 해상도 사이를 선형보간 (보간)하는 과정을 거치며 학습을 진행한다. 일반적인 비지도학습의 특징으로 훈련 중 열차 데이터에서 찾은 피쳐 정보보다 변경 사항 감소한 생성기 이미지를 생성해내는 경향이 있다. 그로 인한 고해상도 이미지를 생성해내기 어렵다는 단점이 발생하게 되는데 이를 해결하고자 PGGAN에서는 표준편차 미니배치 기법을 제안한 것이다. 이를 사용하면 감별기가 미니배치 전체에 대한 기능 통계를 계산하도록 하기 위해서 실제 훈련 데이터와 휴가 회수이미지를 구별해내도록 도움을 줄 수 있다. 또한 생성된 배치 이미지에서 계산된 특징 정력학가 훈련된 일괄 처리 이미지 데이터의 정역학와 더 유사하게 만들도록 생성기가 낮은 분산값을 갖는게 아닌 더 풍부한 분산값을 갖도록 권장한다!
    수렴과 훈련 속도

    CELEBA-HQ 데이터 세트를 사용하여 고해상도 이미지 생성
  • 고해상도 결과를 위해서는 8 Telsa V100 GPU로 4일간의 훈련이 필요하다.
  • 결론

  • MS-SSIM에 비해 사서가 색, 질감, 뷰포인트에 대한 변이하다을 훨씬 잘 잡아냄. 학습이 중간에 중단된 모델과 학습을 온전히 끝낸 모델간의 결과물을 비교했을때 MS-SSIM는 큰 차이를 잡아내지 못했다. 또한 사서는 훈련집과 유사한 생성 이미지의 분포에 대해 잘 찾아내는 모습을 보였다.
  • 점진적 성장은 최적화에 수렴시키고 훈련 시간을 줄이는 효과를 보였다. 약 640만개의 이미지 학습을 기준으로 비진행성 변이에 비해 약 5.4배 빠른 속도를 보였다.
  • 고해상도 출력을 보이기 위해 부록 C의 방법을 사용해 세레바의 고품질버전을 만들어냈다. (1024x10230000)장) 테슬라 V100 GPU 8개로 4일동안 학습하였고 아주 멋진 결과물을 만들어냈다. (위에 데모 참고)학습에는 에스건과 WGAN-GP의 손실 함수이 각각 사용되었는데, 아무래도 에스건이 학습에 좀 더 불안정한 모습을 보였다. 에스건의 손실 함수을 사용하는 경우에는 약간의 추가적인 테크닉이 필요한데, 이는 부록 B를 참고하자.
  • 좋은 웹페이지 즐겨찾기