확률 모델로 이미지를 생성해 보십시오. (임시)

유구대학16일째 보도입니다.
유구대 OB라고 적혀있는 N/A3, 내가 불러줄게. 투고가 가까워졌어. 그럴 리가 없어.

1. 소개


2014년 Goodfellow씨가 GAN을 개발한 이래로 컴퓨터가 자동으로 이미지를 생성하는 세계가 도래했다. 그리고 나이가 들면서 논문 수도 급격히 증가했고, 심층학습 $\times$이미지 생성은 광범위하게 인식되는 분야이다.
관심 있는 분들은 아래 사이트를 추천합니다. 전자는 우리에게 뜨거운 논문을 가르쳐 줄 것입니다. 그래서 "이런 일을 할 수 있을까!!!"후자는 GAN의 역사적인 논문을 계속 추적하기 때문에 다음에 무엇을 읽어야 할지 알려줄 수 있다.
  • GAN: 적대적 생성 네트워크는 엉망이야.경악하는 AI(기계학습) 사례 12개
  • 주요 GAN 연구사
  • 비록 이러한 이미지 생성이지만 실제적으로 정규성을 확보한 데이터 집합에 대해 (심층 학습을 사용하지 않더라도) 단순한 확률 모델이라도 생성과 이미지 변형을 할 수 있다.

    2. 평균 이미지 및 분산 이미지


    단순히 이미지를 생성하고자 할 때 데이터를 수집하여 데이터의 평균과 분산을 구하면 이미지를 생성할 수 있다
    그래서 식단.우선 데이터를 읽는 함수를 만들어서 그림을 불러오세요. 쓰는 것을 잊어버렸지만 데이터 집합 MNIST로 하세요.
    from tensorflow.keras.datasets import mnist
    import numpy as np
    import pandas as pd
    
    def load_data():
        (x, y), _ = mnist.load_data()
        mnist_df = pd.DataFrame(x.reshape(-1, 784) / 255., 
                                columns=['dim' + str(num+1) for num in range(784)])
        mnist_df['target'] = y.reshape(-1, 1)
    
        return mnist_df
    
    mnist_df = load_data()
    
    상기 함수에 따라 데이터를 불러오면 다음 그림과 같은 데이터 테이블을 생성할 수 있습니다.

    왜 라벨을 붙여야 합니까? mnist 이미지의 밝기 값에서 평균과 분산을 직접 구해도 아래 이미지처럼 눈덩이 이미지만 생성할 수 있기 때문입니다. 그래서 라벨마다 데이터를 추출하여 이미지를 생성하고 싶습니다.

    참고로 그림인지 확인하려면 아래 주문을 누르면 확인할 수 있습니다.
    (처리 절차: 1. 이미지 데이터의 인덱스 선택, 2.target의 열 제거, 3.numpy 변환, 4. 1차원 데이터를 28x28의 2차원 데이터화)
    import matplotlib.pyplot as plt
    plt.imshow(mnist_df.iloc[0].drop(['target']).values.reshape(28, 28))
    
    그리고 주문의 결과는 바로 이것이다

    2.1 레이블당 평균 이미지 제작, 분산 이미지


    제목과 같이 각 라벨을 추출하여 평균 이미지를 생성하고 분산시켜 보십시오.
    def img_write(name, data, norm=True):
        data *= 255 if norm else data
        data = np.array(data).astype(np.uint8)
        cv2.imwrite(name, data.reshape(28,28))
    
    def mnist_static_by_target_cat(df, column='target', norm=True):
        for i, cat in enumerate(df[column].unique()):
            cat_df = df.groupby(column).get_group(cat)
            cat_df = cat_df.drop([column], axis=1)
    
            img_write('mean_' + str(i) + '.jpg', cat_df.mean(), norm)
            img_write('std_' + str(i) + '.jpg', cat_df.std(), norm)
    
    mnist_static_by_target_cat(mnist_df)
    
    그리고 생성된 이미지는 다음과 같습니다.
    왠지 이런 숫자가 있는 것 같지 않아요?

    3. 이미지 변형(시공 중)


    시간이 없어서 개요만 썼어요. 이번 주 안에 이론을 포함해서 예쁘게 썼어요.
  • 평균과 방차를 구했기 때문에 정적 분포를 이용하여 밝기 값의 변화를 확률화한다
  • 그러나 이것만으로도 굵기를 줄일 수 있기 때문에 이미지의 변형 방법도 고려해야 한다
  • 밝기 값 직사각형을 확인한 후 두 개의 밝기 값이 가장 높은 픽셀이 있음을 알 수 있다
  • 따라서 잠재 변수 2에 혼합 고스 분포 함수를 응용하여 최고치가 두 분포와 비슷하게 한다
  • 결과적으로 더 아름다운 그림을 만들 수 있습니다. 또한 잠재적인 변수의 값을 바꾸면 그림을 회전시킬 수 있습니다
  • 다음은 출력 이미지라고 합니다.
  • 평균과 방차로 구한 정적 분포 확률을 이용한 이미지
    (왼쪽에서 오른쪽으로, $P(밝기) = [0.9,0.99]$확률이 각각 0.9씩 변화할 때의 이미지 변화)
  • GMM을 사용하는 각 잠재 변수의 평균 이미지 변화
    (또한 혼합 고스 분포는 모든 잠재 변수에 대해 정적 분포를 준비한다. 따라서 상술한 바와 같이 이 모델에서 밝기 확률만 바꾸면 형상의 굵기를 바꿀 수 있다.)
  • 4. 끝날 때


    이번에는 리듬과 기세로 참가했을 뿐인데 글은 역시 쓰기 어려웠다. 마감일이 있으면 꼭 쓸 수 있을 것 같았지만 현실은 심각했다. 후배들은 나 같은 장작을 반면교사로 삼아스케줄에 맞춰서 활동을 했으면 좋겠어요.
    어쨌든, 아래의 보도는 소문 속의 조고 씨인 것 같습니다. 저보다 더 유용할 것 같습니다!!

    좋은 웹페이지 즐겨찾기