MAPLE UPSCALE · EXPERIMENT PLAN
구현 전에 고정할 실험 규칙
이 문서는 구현 시 사용할 설계안입니다. 학습 실행 기록이나 성능 결과가 아닙니다.
GAN / CNN 확산 / DiT2× / 3× / 4×계획 단계 · 학습 미시작
1. 데이터와 좌표
- 배율
s ∈ {2,3,4}, 고정 위치r = floor(s/2). - 고해상도 정답을
H, 저해상도를L이라 하면L[i,j] = H[s*i+r, s*j+r]. - 고해상도 마스크
M은 위 좌표에서 1, 나머지는 0. 1은 알려진 픽셀을 의미합니다. - 완성된 출력
O는 저장한 8비트 PNG에서O[s*i+r,s*j+r] == L[i,j]를 RGBA 모두 만족해야 합니다. - PIL/브라우저의 nearest 축소 좌표에 암묵적으로 의존하지 않고 배열 인덱싱으로 점샘플링합니다.
- 학습·검증·시험 묶음은 먼저 나눕니다. 회전·좌우반전 등 증강은 고해상도에 먼저 적용한 뒤 점샘플을 만듭니다.
- 초기 학습 HR 패치는 96×96. LR은 각각 48×48, 32×32, 24×24입니다. 같은 HR 목록과 crop 난수열을 세 계열에 사용합니다.
- 96×96은 초기 설정입니다. 몸 전체 정보가 필요한 경우, 모든 모델에 동일하게 더 큰 패치 실험을 추가하고 별도 기록합니다.
- 작은 이미지를 억지로 확대해 HR 정답에 넣지 않습니다. 실제 전경 크기와 선 품질로 적합성을 검토합니다.
- 전체 이미지 비교는 오른쪽·아래 투명 패딩으로 12의 배수를 만든 뒤 동일 HR 영역을 사용합니다. 평가에서 패딩은 제외합니다.
- 실제 옛 도트의 확대에서는 입력의 각 픽셀을 출력의 지정 위치로 옮깁니다. 추가 네트워크 패딩은 별도 기록하고 마지막에 제거합니다.
2. 색과 투명도
공통 모델 표현은 premultiplied RGBA, 즉 (R×A, G×A, B×A, A) 네 채널로 합니다. 모든 값은 0~1로 정규화합니다.
- 완전히 투명한 픽셀의 숨은 RGB를 학습 대상으로 삼지 않습니다. 학습 표현에서 RGB×A는 0입니다.
- 최종 복원 이미지에서
0 ≤ RGB×A ≤ A ≤ 1을 만족하도록 범위를 정리합니다. 예측 잡음 epsilon과 중간 noisy 상태 X_t에는 이 범위 제한을 적용하지 않습니다. - PNG 저장 시 알파로 나눠 일반 RGBA로 바꾸되, 알파 0인 곳은 색을 0으로 둡니다. 마지막으로 알려진 위치의 원본 8비트 RGBA를 그대로 복사합니다.
- 반투명 경계는 검정·흰색 합성 이미지에서 함께 평가합니다. 미세 알파에서 나눗셈 때문에 생기는 색 오차도 별도 확인합니다.
- 첫 파일럿은 알파 0/255 위주의 스프라이트로 시작합니다. 본학습에는 선별된 반투명 스프라이트도 포함하고 비율을 기록합니다.
- GAN 판별망과 지각 손실은 같은 규칙으로 배경 합성한 RGB를 봅니다. 알파는 직접 재구성 손실로도 감독합니다.
3. CNN 확산과 DiT의 공통 학습법
일반 DDPM의 조건부 버전을 사용하되, 미지 영역에만 잡음을 넣는 masked diffusion을 처음부터 학습합니다. 이 규칙은 두 구조에 똑같이 적용합니다.
알려진 픽셀 K = 고정 위치에만 L을 놓은 RGBA 이미지
학습 입력 X_t = M*K + (1-M)*(sqrt(a_t)*H + sqrt(1-a_t)*noise)
모델 조건 = nearest로 펼친 L, M, 현재 단계 t
모델 예측 = 미지 영역의 noise
손실 = 미지 영역의 오차 합 / 미지 영역의 원소 수
- 알려진 영역은 학습과 추론 모두 깨끗한 상태로 유지합니다. 이 조건에 맞춰 학습하므로, 일반 확산 모델에 추론 때만 깨끗한 픽셀을 끼워 넣는 방식과 구분됩니다.
- 추론의 각 단계에서 알려진 위치를 K로 다시 맞춥니다. 저장 시에도 원본 RGBA를 복사해 파일 단위 오차 0을 보장합니다.
- 초기 공통 설정안: cosine 계열 1,000개 학습 노이즈 단계, epsilon 예측, DDIM 50단계 추론. 파일럿 검증 후 설정을 고정합니다.
- 시간 조건 임베딩, 노이즈 일정, loss 정규화, 샘플러, seed 목록을 공유합니다. 학습·추론의 수치 구현을 두 모델에서 같은 코드로 사용합니다.
- CNN은 합성곱 중심 U-Net, DiT는 patch embedding → Transformer → unpatchify 구조입니다. 초기 패치 크기는 4×4로 잡습니다.
- DiT 패치 크기와 보존 격자 크기는 다른 설정입니다. 4×4 패치 안의 여러 픽셀 값을 입력·출력하므로 보존 배율 2·3·4배를 모두 다룰 수 있습니다.
- 복원망 초기 크기는 약 10~20M 범위에서 맞추고 실제 수를 기록합니다. 크기만 맞추려고 구조를 부자연스럽게 바꾸지 않습니다.
- 배율마다 별도 모델·체크포인트를 사용합니다. 첫 실험에서는 하나의 모델에 여러 배율을 섞지 않습니다.
4. GAN 학습법
- RRDB 기반 생성망은 LR RGBA를 받아 해당 배율의 HR RGBA를 예측합니다. 3배 확대부도 명시적으로 구현합니다.
- 생성 출력의 고정 위치에 K를 넣은 결과를 최종 출력으로 사용합니다. 고정점은 정답이므로 RGB/알파 재구성 손실은 미지 영역을 기준으로 정규화합니다.
- 먼저 재구성 손실로 학습하고, 같은 생성망을 이어서 지각·GAN 손실로 학습합니다. 재구성 단계만 끝난 체크포인트도 보관해 GAN 추가 효과를 확인합니다.
- 초기 예산 배분은 재구성 25%, GAN 단계 75%를 제안합니다. 소량 점검에서 불안정하면 검증셋 기준으로 조정하고 최종 비교 전에 고정합니다.
- 판별망은 투명도를 합성한 전체 이미지를 보며, 고정점 후처리가 적용된 출력을 학습 중에도 사용합니다.
- 생성망뿐 아니라 판별망의 매개변수·학습 시간도 기록합니다. GAN은 추론 시 생성망만 실행합니다.
5. DiT 보존 조건 제거 실험
주 비교에서는 세 계열 모두 픽셀을 보존합니다. 보존 규칙 자체의 효과는 선정 배율에서 동일 DiT 구조를 따로 학습해 조사합니다.
- 보존 ON: 앞의 masked diffusion, 미지 영역 학습, 매 단계 및 저장 시 고정점 유지.
- 보존 OFF: 저해상도 조건은 유지하고 전체 HR에 잡음을 넣어 전체 영역을 학습. 고정점 투영 없음.
- 데이터·배율·구조·시드·GPU 시간 상한·튜닝 횟수는 맞춥니다. 알려진 위치의 오차도 OFF 모델에서는 별도 보고합니다.
- ON 모델의 마지막 복사를 꺼 보는 것은 구현 진단일 뿐, 정상적으로 학습한 OFF 모델을 대체하지 않습니다.
- 이 실험은 masked 학습과 픽셀 고정 규칙을 함께 적용한 효과를 봅니다. 최종 덮어쓰기 한 동작만의 효과로 해석하지 않습니다.
- 이 실험의 결론은 DiT에 대한 보존 조건의 효과로 제한합니다. 다른 두 계열에서도 같은 효과라고 일반화하려면 해당 OFF 학습을 후속으로 추가합니다.
6. 평가 계약
- 고정점 검사: 디코딩한 PNG의 모든 알려진 좌표에서 RGBA 최대 절대오차, 불일치 픽셀 수. 합격은 모두 0.
- 미지 RGB 정확도:
M=0이고 정답 alpha>0인 전경에서 premultiplied RGB MSE/PSNR. 값 범위 0~1, 패딩 제외. 계산 대상이 없으면 N/A. - 미지 alpha: 모든 비패딩 미지 좌표의 alpha MAE. 투명 배경에 생긴 예측 alpha도 별도로 보고합니다.
- PSNR은 배율별로 따로 보고합니다. 2배와 4배 점수를 하나의 순위에 넣지 않습니다.
- LPIPS는 동일한 검정·흰색 배경의 전체 RGB 합성 이미지에 각각 계산합니다. 구멍 난 mask 입력을 만들지 않습니다.
- 집계는 프레임 → 캐릭터 묶음 평균 → 전체 평균 순으로 합니다. 긴 애니메이션을 가진 캐릭터가 점수를 지배하지 않게 합니다.
- 본학습 시드 2개, 확산 추론 시드 3개를 미리 정합니다. 기본 갤러리는 첫 추론 시드를 사용하고 모든 결과를 보존합니다. 가장 좋아 보이는 결과만 점수로 제출하지 않습니다.
- 배율·체크포인트·하이퍼파라미터는 검증셋으로 선택합니다. 개발용 옛 도트를 보고 정한 규칙도 기록합니다. 최종 시험용은 마지막에만 사용합니다.
- 사람 평가는 방법 이름을 숨기고 표시 순서를 섞습니다. 같은 화면 크기와 실제 사용 크기에서 정체성·선·색·사용 가능성을 각각 봅니다. 한 사람이 평가하면 그 범위를 명시합니다.
- 애니메이션은 프레임 원점과 공통 캔버스가 확보된 시퀀스로 확인합니다. 원점 미확보 상태의 프레임 차이를 flicker 수치로 단정하지 않습니다. 같은 seed만으로 시간 일관성이 보장되지 않습니다.
- 최종 PNG 전체 결과는 품질용, 순전파 시간과 이미지 저장까지 포함한 시간은 각각 측정합니다. warm-up, 해상도, batch=1, 정밀도, 확산 단계 수를 기록합니다.
7. 예산과 중단 기준
예산안은 파일럿 P=0.5~1 GPU시간 ×9회, 본학습 B=4~8 GPU시간 ×8회입니다. 사전 점검 뒤 확정하며 지금은 실행하지 않습니다.
- 시간 상한에 GAN 예열·판별망 학습과 학습 중 검증 비용을 포함합니다. 데이터 준비·최종 평가 비용은 별도 기록합니다.
- 같은 예산의 체크포인트를 주 비교로, 같은 학습 노출 수 시점의 곡선을 보조 비교로 남깁니다. 두 기준이 충돌하면 함께 설명합니다.
- CUDA OOM, loss NaN, 고정점 불일치, RAM·swap 급증, 데이터 누출이면 해당 실행을 멈추고 원인을 해결합니다.
- 작은 데이터 과적합이 안 되면 대규모 학습으로 넘어가지 않습니다. 모든 모델이 목표 품질에 못 미치면 미달로 결론 내리고 데이터/표현 설계를 다시 봅니다.
- 성능 차이가 학습 시드 편차 안에 있으면 우열 미확정으로 보고합니다. 추가 학습은 새 예산과 실험 목적을 정한 뒤 진행합니다.
8. 재현 기록
각 실행은 데이터 목록 해시, 묶음 분리 버전, 코드 커밋, 모델 설정, 배율·위상·패딩, 학습/추론 seed, 원본/출력 해시, best/last 체크포인트를 남깁니다.
원본 데이터와 모델 가중치는 git에 넣지 않습니다. 데이터 목록·정제 규칙·소량의 설명용 샘플·실행 설정만 버전 관리합니다. 모델 다운로드나 학습 환경 구성은 계획 이후 구현 단계의 작업입니다.