컬러 이미지 모델링

생성 모델을 풀 컬러 스펙트럼으로 확장

월터 휴고 로페즈 Pinaya , 페드로 F. 다 코스타 , 그리고 제시카 Dafflon

여러분 안녕하세요! 오늘 우리는 자기 회귀 모델에 대한 시리즈를 계속할 것입니다.

요약

  1. 자기 회귀 모델 — PixelCNN
  2. 컬러 이미지 모델링
  3. 수용 필드에서 PixelCNN의 사각 지대
  4. 사각 지대 수정 — Gated PixelCNN
  5. Gated PixelCNN을 사용한 조건부 생성
  6. 잘린 컨볼 루션이있는 Gated PixelCNN
  7. 성능 향상 — PixelCNN ++
  8. 샘플링 시간 개선 — Fast PixelCNN ++
  9. 주의 메커니즘 사용 — PixelSNAIL
  10. 다양한 고화질 이미지 생성 — VQ-VAE 2

이전 게시물에서는 채널이 하나 뿐인 회색조 이미지에 대한 자동 회귀 모델을 설명했습니다. 이 게시물에서는 RGB 이미지와 같은 다중 채널로 이미지를 모델링하는 방법에 대해 설명합니다. 시작하자!

이 주제에 대한 코드 는이 링크에서 찾을 수 있습니다 .

소개

이전 게시물에서 논의했듯이 자기 회귀 생성 모델은 조건부 분포의 곱에서 데이터를 생성합니다. 즉, 이전 픽셀에 의존합니다. 따라서 PixelCNN을 학습하려면 생성 된 이미지의 픽셀에 순서를 지정해야합니다 (예 : 위에서 아래로, 왼쪽에서 오른쪽으로). 컨벌루션 연산에서 "미래"픽셀을 숨기려면 이미 예측 된 픽셀 다음에 오는 정보를 무시하도록 컨볼 루션 레이어를 마스킹합니다. 모델의 첫 번째 레이어는 입력 이미지의 관심 픽셀에 액세스 할 수 없어야하므로 마스크의 중앙 픽셀을 제로화합니다 (이를 Mask A라고 함 ). 그러나 후속 레이어에서 마스크의 중앙 픽셀은 이미 입력 이미지의 관심 픽셀을 무시하고 있으므로 0으로 설정하지 않아야하므로 Mask B를 사용합니다 . 3 개의 컬러 채널이있는 컬러 이미지와 같이 둘 이상의 채널이있는 이미지를 다룰 때 어떤 마스크를 사용해야합니까?

나중에이 이야기를 읽고 싶으십니까? Journal에 저장합니다 .

컬러 이미지

컬러 이미지는 R ed, G reen 및 B lue (RGB) 의 세 가지 채널로 구성 됩니다. 다른 색상 채널을 하위 픽셀 이라고도합니다 . 각 하위 픽셀은 결합 될 때 일치하는 이미지를 구성하기 때문에 서로 독립적이지 않습니다. 따라서 픽셀에 대해 수행하는 것처럼 다음 하위 픽셀을 예측할 때 순차적으로 처리하고 이전 하위 픽셀을 고려할 수 있도록 하위 픽셀을 정렬해야합니다. 픽셀의 예측이 입력 값의 함수가 아닌지 확인하려면 마스크를 구성해야합니다.

컬러 이미지는 3 개의 이미지로 분해 할 수 있습니다. 하나는 빨간색 톤, 다른 하나는 녹색 톤, 다른 하나는 파란색 톤입니다.

원본 논문에 따라 R → G → B에서 하위 픽셀을 정렬하도록 선택합니다. 첫 번째 컨벌루션 레이어에서는 R 채널이 컨텍스트 라고하는 이전 픽셀의 정보에만 액세스 할 수있는 마스크 A를 사용합니다. , G 채널은 컨텍스트와 R 채널에 액세스 할 수 있으며 마지막으로 B 채널은 컨텍스트와 R 및 G 채널 모두에 액세스 할 수 있습니다. 다음 컨벌루션 레이어에서 이전 컨벌루션 레이어의 중앙 픽셀은 입력의 중앙 픽셀을 '보지'않았습니다. 따라서 중앙 하위 픽셀을 제로화 할 필요가 없습니다. 즉, Mask B 에서 R 채널은 컨텍스트 및 이전 레이어의 R 채널에 액세스 할 수 있습니다. G 채널은 컨텍스트와 R 및 G 채널에 액세스 할 수 있으며 B 채널은 컨텍스트와 3 개의 채널에 액세스 할 수 있습니다.

각 하위 픽셀의 정보에 대한 액세스 시각화. 마스크 A와 B는 현재 레이어와 이전 레이어에서 연결되는 하위 픽셀에 따라 중앙 픽셀 값이 다릅니다. 컨텍스트는 이미 처리 된 모든 픽셀과 관련됩니다. 빨간색 사각형은 한 쌍의 하위 픽셀과 특정 마스크에 대해 중앙 픽셀이 가려 졌는지 여부를 나타냅니다. 검은 색 정사각형은 A와 B 모두에 대한 마스크의 공통 값을 보여줍니다 (중앙 빨간색 정사각형 만 변경됨).

여기에서는 둘 이상의 채널이있는 이미지에 대한 마스크를 만드는 방법을 보여주는 스 니펫을 제공합니다. 마스크가 이전 레이어 채널 ( j ) 보다 차후 채널 인 현재 레이어 ( i ) 의 채널을 연결 하고 중앙 픽셀을 0으로 만듭니다. 마스크 A의 경우 현재 레이어가 이전 레이어의 동일한 채널에 연결될 때 중앙 픽셀도 제로화합니다.

우리가 사용한 네트워크 아키텍처는 Oord et al.에 따라 1 채널 생성 모델에 대해 제시된 것과 유사합니다. 15 개의 잔여 블록이있는 2016 년 구현은 첫 번째 블로그 게시물에 게시되었습니다 .

추론

컬러 이미지를 추론 할 때 1 채널 이미지보다 3 배 더 많은 값을 예측해야합니다. 이것은 모델 훈련을 더 어렵게 만듭니다. 여기에 우리가 우리의 PixelCNN가 사용 훈련 CIFAR10의 때문에 다음, 데이터 집합을 안드레이 Karpathy신경망 훈련을위한 조리법 , 우리는 첫 번째 두 개의 트레이닝 세트 이미지에 모델을 overfitting에 의해 시작.

생성 된 모든 이미지는 모두 훈련 예제의 거의 완벽한 사본입니다.

여태까지는 그런대로 잘됐다. 10 세대 후에 모델은 이미 훈련 세트를 정확히 모방하는 법을 배웠습니다. 그러나 모델이 아직 보지 못한 가려진 이미지의 다음 픽셀을 예측하려고하면 그림을 완성하는 데 실패했습니다. 이것은 모델이 표시된 두 가지 예를 복제하는 방법 만 학습했기 때문에 예상됩니다.

과적 합 된 생성 모델은 가려진 이미지를 예측하지 못합니다.

다음으로, 모델이 자연스러운 이미지를 학습 할 수 있도록 50000 훈련 이미지 예제를 사용하여 20 epoch 동안 PixelCNN을 훈련했습니다.

생성 된 이미지는 학습 된 데이터 세트와 달리 자연스럽지 않습니다.

이제 우리의 결과는 훌륭하지 않았습니다. 흥미로운 풍경을 만들어 냈음에도 불구하고 그들은 그들이 훈련받은 자연 이미지의 구조를 배우지 않는 것 같습니다.

향후 게시물에서는 수용 필드의 사각 지대와 같이 비 효율성의 원인을 탐색하고 생성 된 이미지의 품질을 향상시키기위한 새로운 기술을 배울 것입니다. 그때까지는 CIFAR10 이미지를 하위 픽셀 당 원래 256 강도 값에서 하위 픽셀 당 8 강도 값으로 양자화하여 문제를 단순화 할 수 있습니다. 20 epoch에 대해 동일한 모델을 훈련하고 생성 된 이미지가 epoch에 따라 어떻게 진화하는지 보여줍니다.

세대에 걸쳐 생성 된 이미지의 진행률. 더 많이 훈련할수록 결과가 더 좋아집니다.

최종 시대에 생성 된 이미지는 이미 자연스러운 색상 조합을 가지고 있습니다. 또한 학습 데이터의 이미지처럼 보이지 않으므로 데이터 매니 폴드 분포를 학습합니다. 이제 이전 사례에서와 같이 모델이 생성하는 이미지와 가려진 이미지를 예측하는 방법을 볼 수 있습니다.

전체 CIFAR10 데이터 세트에서 훈련 된 PixelCNN에서 생성 된 이미지.
이 모델은 이미지의 가려진 영역을 다시 만드는 데 효과적입니다.

결론

PixelCNN을 훈련시켜 컬러 수치를 예측하는 것은 어려운 일입니다. 픽셀 강도 수준 수를 256에서 8로 줄이면 결과가 향상되었지만 생성 된 이미지는 여전히 이상적이지 않았습니다. 사각 지대 문제를 수정하여 성능을 향상시킬 수 있다고 텍스트에서 간략하게 언급했습니다. 따라서 다음 두 개의 블로그 게시물에서 먼저 사각 지대가 무엇인지 소개 한 다음이를 해결하는 방법을 보여 드리겠습니다. 그러니 계속 지켜봐주세요!

참고 문헌

👩‍💻 매주 일요일 아침에 일어나받은 편지함에서 대기중인 Tech의 주중 가장 주목할만한 이야기를 들으세요. Noteworthy in Tech 뉴스 레터를 읽어보십시오 .

Suggested posts

머신 러닝으로 음악 앱 이탈 예측 : Sparkify 프로젝트

머신 러닝으로 음악 앱 이탈 예측 : Sparkify 프로젝트

이 프로젝트에서는 Udacity Data Scientist 트랙 졸업 프로젝트 인 음악 앱 Sparkify의 이탈 모델링에 대해 설명합니다. 이 프로젝트의 코드는 내 githıb 계정에서 찾을 수 있습니다 : https : // github.

“인공 일반 지능”이란 무엇입니까?

“인공 일반 지능”이란 무엇입니까?

일부 : 인공 일반 지능 소개. “어딘가에 놀라운 것이 알려지기를 기다리고 있습니다.