인공지능에 새로운 포켓몬 생성 가르치기

포켓몬스터는 1996년에 최초로 만들어졌다.20년 동안, 그것은 이미 세계에서 가장 유명한 특허 경영 회사 중의 하나가 되었다.2020년 3월까지:
  • 종의 포켓몬스터 전자게임이 전 세계에서 3억 8천만 대를 넘게 팔렸다.
  • '포켓몬 고'는 10억회 이상 다운로드된 가장 많은 모바일 게임이다.
  • 장의 포켓몬스터 거래 카드가 341억 장을 넘게 팔렸다.
  • 전체 미디어 특허 경영은 유사 이래 수입이 가장 높은 오락 미디어 특허 경영으로 종신 수입은 900억 달러로 추정된다.
  • 그러나 이 모든 것이 끝난 뒤에도 893개의 독특한 포켓몬스터만 있었다.
    인공지능이 생기면 우리는 이 점을 바꿀 수 있다.
    우리가 이 업무에서 사용할 기본 기술은 생성적 대항 네트워크이다.구체적으로 말하면 Style GAN 변체.

    건·진보건과 풍격건에 대한 직관적 이해
    감의 첫 등단은 2014년으로 상당히 리얼하고 훈련과 샘플링이 쉬우며 이론적으로 만족스러운 이미지를 만들어 대량의 투기를 얻었다.나는 separate post에서 GAN 공식을 더욱 깊이 있게 토론했다.
    원시 생성적 대항적 인터넷 논문에서 발췌
    그때부터 기본적인 GAN에 대해 일련의 변경을 해서 매우 리얼해 보이는 이미지를 만들었다.
    GAN 역대 발전
    최초의 GAN 구조는 발생기와 감별기를 설계했는데 표준 권적 신경 네트워크와 매우 비슷하여 이미지를 확대하거나 축소할 수 있다.
    기존 생성 대항 네트워크 아키텍처

    발전된 GAN
    Progressive GAN’s은 전통적인 GAN의 근본적인 문제를 해결하고자 한다. 즉, 생성기의 작업은 감별기보다 훨씬 어렵다. 특히 고해상도 이미지에서 그렇다.(같은 방식으로 그림을 고양이나 개로 분류하는 것이 고양이나 개의 그림을 그리는 것보다 쉽다.)
    점진적 질소갈륨은 전통적인 질소갈륨의 훈련 단계를 바꾸었다. 먼저 4x4 이미지에 대해 단층 질소갈륨을 훈련한 다음에 8x8 이미지에 대해 두 층의 질소갈륨을 훈련하고 이미 훈련한 4x4층을 다시 사용한다.이로써 생성기는 훈련 초기 단계에 문제를 겪기 쉽고 고해상도 이미지를 만드는 방향으로 확장된다.
    Progressive GAN은 저해상도 이미지를 어떻게 만드는지 배우기 시작하여 훈련이 진행됨에 따라 확대한다.

    스타일 GAN
    그러나 전통적인 GAN과 점진적인 GAN은 생성기에서 생성된 이미지를 거의 제어하지 못한다. 예를 들어 검은 머리와 옅은 머리를 가진 사람이 생성된다.아니면 여자가 남자한테스타일 GAN은 기존 GAN의 구조를 확장하여 생성기에서 생성된 이미지를 더 많이 제어할 수 있도록 한다.

    그것의 방법은 '스타일 벡터' 를 추가함으로써 생성기의 구조를 바꾸는 것이다. 이것은 이미지 생성기 과정에서 임의적인 주요 원천이다.생성기 네트워크의 각 층에 스타일 벡터를 주입하여 해상도에 따라 스타일 변화를 추가합니다.

    그 다음에 같은 스타일 벡터를 주입하면 사용된 스타일 벡터를 생성된 이미지에서 다음 생성된 이미지로 다시 사용해서 스타일(머리 색깔, 나이, 성별 등)을 한 이미지에서 다른 이미지로'옮길 수 있다.
    생성기에서 서로 다른 층의 스타일 변환

    어떻게 해야 되지?
    하나의 스타일의 GAN에는 너무 많은 코드가 있어서 모두 볼 수 없지만, 우리는 일부 코드 예시로 모든 중요한 부분을 검사할 수 있다.
  • 진보당
  • 빌딩 밖
  • 신규 제도 네트워크
  • 자체 적응 실례 규범화
  • 발생기
  • 의 잠재적 벡터 입력 제거
  • 블록당 잡음
  • 추가

    건축 풍격
    스타일의 GAN은 발전된 GAN에 무엇을 추가했는가
    GAN의 스타일은 점진적인 GAN에서 시작하여 일련의 개선을 추가하였다.

    지도 네트워크
    스타일가엔 건물입니다.잠재 변수 z는 생성기에 직접 전달되지 않습니다.반대로 8층의 MLP(매핑 네트워크라고 함)를 통해'스타일 벡터'를 생성한다.

    그리고 이런 스타일의 벡터를 발전기 네트워크(본문에서 합성 네트워크라고 부른다)의 각 층에 주입한다.스타일 벡터는 이미지의 각 채널에 대한 확대/축소 및 오프셋 벡터를 생성하는 데 사용되며 인스턴스 사양명세의 일부로 사용됩니다.
    flatten = lambda t: [item for sublist in t for item in sublist]
    
    class MappingNetwork(nn.Module):
        def __init__(self):
            super().__init__()
            blocks = [[nn.Linear(512, 512), nn.LeakyReLU(0.2)] for _ in range(8)]
            self.net = nn.Sequential(*flatten(blocks))
    
        def forward(self, latent_vector):
            style_vector = self.net(latent_vector)
            return style_vector
    

    인스턴스 사양 적응(AdaIN)
    실례 규범화에 적응하는 것이 어떻게 작동하는지 이해하기 위해 우리는 먼저 대량 규범화가 어떻게 작동하는지 되돌아봅시다.

    아다인의 레시피는 대량 표준화 레시피와 매우 비슷하다.
    표준 일괄 표준화 설계도
    자체 적응.인스턴스 정규화 공식
    class AdaIN(nn.Module):
        def __init__(self):
            super().__init__()
    
        def mu(self, x):
            """ Takes a (n,c,h,w) tensor as input and returns the average across
            it's spatial dimensions as (h,w) tensor [See eq. 5 of paper]"""
            n = torch.sum(x,(2,3))
            d = x.shape[2]*x.shape[3]
            return n / d
    
        def sigma(self, x):
            """ Takes a (n,c,h,w) tensor as input and returns the standard deviation
            across it's spatial dimensions as (h,w) tensor [See eq. 6 of paper] Note
            the permutations are required for broadcasting"""
            n = torch.sum((x.permute([2,3,0,1])-self.mu(x)).permute([2,3,0,1])**2,(2,3))
            d = x.shape[2]*x.shape[3]
            return torch.sqrt(n / d)
    
        def forward(self, x, y):
            """ Takes a content embeding x and a style embeding y and changes
            transforms the mean and standard deviation of the content embedding to
            that of the style. [See eq. 8 of paper] Note the permutations are
            required for broadcasting"""
            return (self.sigma(y)*((x.permute([2,3,0,1])-self.mu(x))/self.sigma(x)) + self.mu(y)).permute([2,3,0,1])
    

    고스 소음의 중첩
    가우스 노이즈는 각 AdaIN 작업 전에 활성 맵에 추가되어 생성기의 각 단계에서 스타일 변경을 생성하는 데 사용됩니다.

    이런 소음을 도입한 이유는 모델이 현지 스타일의 전평 변화를 배우도록 하기 위해서다.
    증가하는 소음으로 인해 생성된 이미지는 전체적으로 같지만 국부 수준에서 출력 변화가 있다
    (a) 소음은 모든 층에 적용됩니다.(b) 소음이 없다.세밀층의 소음(64~1024)에만 적용됩니다.(d) 거친 레이어의 소음(4-32)만 발생합니다.

    발전기의 잠재적인 벡터 입력을 제거하다
    전통적인 질소화갈륨은 샘플을 만들기 위해 잠재적인 벡터를 만들어 낸다.Style GAN은 실제로 고정된 4x4x512 벡터만 사용하고 훈련과 추리 과정에서 변하지 않는다.변형은 AdaIN 작업을 통해 각 레이어에 추가된 스타일 벡터와 가우스 노이즈에서 비롯된 것이지 초기 잠재적 벡터가 아니기 때문에 가능합니다.

    Style GAN의 모든 목적은 한 이미지에서 다른 이미지로 다시 적용할 수 있는 스타일 벡터를 발견하는 것입니다.두 이미지가 모두 같은'화포'에서 시작할 때만 효과가 있다. 이것이 바로 4x4x512 상량의 작용이다.만약 화포에 변화가 발생한다면 배운 양식의 벡터를 옮길 수 없을 것이다.

    포켓몬 데이터 집합에서 훈련
    이 모형을 약 35000장의 포켓몬 그림 데이터 세트에 놓았을 때 무슨 일이 일어날지 봅시다.

    Nvidia GeForce 3070 GPU에서 합리적인 결과를 낼 수 있도록 모델을 훈련하는 데 약 일주일이 걸렸다.나는 몇 주 동안의 훈련을 거친 후에 이 그림들이 얼마나 좋을지 확실하지는 않지만, 나는 그것을 더 오래 운행하게 할 것이다.

    새 포켓몬에 대한 조언 몇 가지
    펜지안
    보타토드
    Albapod
    104591610 히드라 잎
    반딧불
    인공지능에 대해 더 알고 싶으세요?자신의 기계 학습 모형을 세울 준비가 되어 있습니까?Start for free 마법사와 함께!

    좋은 웹페이지 즐겨찾기