← Learn
그림으로 배우는 AI · SUPER RESOLUTION

작은 도트는
어떻게 큰 그림이 될까?

픽셀 한 칸에서 ESRGAN까지.
직접 만져 보고, 실제 모델 안을 들여다보는 업스케일링 수업.

실제 메이플 이미지직접 해보는 숫자 실험중학생도 따라오는 설명
다음 실험 계획

GAN · CNN 확산 · DiT를 학습해 비교하기 →

2·3·4배 확대와 한 픽셀 보존, 데이터·평가·예산 계획을 정리했어요.
STEP 01 · 먼저 눈으로 보기

같이 2배로 키웠는데, 왜 다를까요?

업스케일링은 이미지의 가로·세로 픽셀 수를 늘리는 일이에요. 원래 점의 색을 복사할 수도 있고, AI가 주변 모양을 보고 새로운 색을 예측할 수도 있어요. 아래는 같은 입력을 두 방법으로 확대한 실제 결과예요.

실제 모델 실행 결과
확대하기 전 모델 입력 이미지
모델이 받은 입력
—보기 편하게 화면에서 확대 표시
각 픽셀을 그대로 복사한 최근접 2배 확대 결과 Real-ESRGAN이 예측한 2배 확대 결과 AI가 예측픽셀 복사

실측 이미지와 크기를 불러오고 있어요.

이 수업의 핵심

크기를 몇 배로 늘릴지는 구조가 정해요.
그 안의 픽셀을 어떤 색으로 채울지는 학습으로 배워요.

이 예시는 공개 Real-ESRGAN x2plus(2배 전용 가중치) 모델의 결과예요. 투명 이미지를 흰 배경에 놓고 RGB로 입력했어요. 우리 데이터로 새로 학습한 결과는 결과 표에서 볼 수 있어요.

STEP 02 · 그림을 숫자로 보기

컴퓨터에게 그림은 색이 적힌 바둑판이에요

바둑판의 한 칸을 픽셀이라고 해요. 각 칸에는 빨강(R), 초록(G), 파랑(B)의 밝기가 0~255 숫자로 들어 있어요. 아래 작은 버섯의 칸을 누르면 색을 바꾸면서 그 숫자도 확인할 수 있어요.

직접 그려 보는 픽셀 실험
내가 그린 그림 · 12 × 12
픽셀 복사로 2배 확대 · 24 × 24

색을 고른 뒤 왼쪽 그림을 눌러 보세요. 키보드에서는 방향키로 이동하고 Enter로 칠해요. 이 버섯은 원리를 설명하기 위해 만든 12×12 그림이에요.

2배 확대는 가로 2배, 세로 2배예요. 그래서 한 칸이 2×2 = 4칸이 됩니다. 색을 그대로 복사하면 칸 수는 늘어나지만, 원래 없던 무늬가 생기지는 않아요. AI 확대 모델은 주변 모양을 이용해 더 세밀한 표현을 예측하도록 배웁니다.

STEP 03 · 주변 점 살펴보기

작은 창으로 훑으며, 곱하고 더해요

합성곱(Convolution)은 작은 창 안의 숫자에 가중치(곱할 숫자)를 곱한 뒤 모두 더하는 계산이에요. 창을 한 칸씩 옮겨 반복하면, 그림의 여러 위치에서 특징을 찾을 수 있어요.

숫자로 해보는 합성곱

단순한 흑백 그림이에요. 0은 검정, 1은 흰색이에요. 파란 테두리 안의 3×3칸을 계산합니다.

입력 그림 · 5×5
×
곱할 숫자 · 3×3
→
곱한 뒤 모두 더하면0
이번 위치의 계산 펼쳐 보기

여기서는 이해하기 쉬운 필터를 사람이 정했어요. 실제 ESRGAN에서는 필터의 숫자를 학습으로 정합니다. 여러 필터와 층을 지나며, 확대에 도움이 되는 특징이 만들어져요.

데이터 준비 결과와 후보 갤러리 · 업스케일 논문 읽기 순서

STEP 04 · 모델 안으로

작은 그림에서 특징을 읽고,
큰 그림의 색을 계산해요.

합성곱을 여러 번 연결하면 더 넓은 주변을 참고할 수 있어요. ESRGAN 계열의 생성망은 이 계산을 반복한 뒤, 가로와 세로를 늘려 큰 이미지를 출력합니다.

확대 배율은 구조가 정하고, 새 픽셀의 색은 학습한 값으로 계산합니다. 이 페이지의 모델은 가로·세로 각각 2배, 전체 픽셀 수로는 4배를 만듭니다.

주황버섯을 넣었을 때 실제로 측정한 크기예요.

크기는 가로 × 세로 × 채널로 표시해요. RGB의 3채널은 빨강·초록·파랑이고, 중간의 64채널은 각 위치에 저장한 특징값 64개입니다. 중간 계산은 아직 완성된 컬러 그림이 아니에요. 이 2배 모델은 첫 단계에서 입력을 2×2 칸씩 접어 12채널·절반 크기로 만든 뒤 계산을 시작해요. 그래서 중간 크기가 입력의 절반이고, 2배 확대를 두 번 해서 원본의 2배가 됩니다. 63×58처럼 홀수 크기는 안에서 짝수(64×60)로 채워 계산한 뒤 결과를 126×116으로 잘라내요.

길고 어려운 이름, RRDB는 뭘까요?

RRDB는 특징을 여러 번 계산하면서 앞의 정보를 함께 쓰는 묶음이에요. 이름을 외우기보다 아래 두 연결을 이해하면 됩니다.

연결어떻게 계산하나요?왜 쓰나요?
Dense
앞의 특징을 모아 전달
앞선 여러 층의 결과를 채널 방향으로 이어 붙여 다음 층에 넣어요.이미 계산한 선·색 변화 정보를 뒤에서도 함께 참고할 수 있어요.
Residual
입력에 계산 결과를 더하기
입력 특징에 새로 계산한 결과의 일부를 더해요.앞의 정보가 다음으로 전달되는 길이 생겨, 깊은 모델의 학습을 도와요.

RRDB는 이런 작은 묶음 3개를 연결하고, 그 바깥에도 더하기 연결을 둡니다. 공식 구현에서 확인하기 ↗

블록 수는 모델마다 달라요. 여기서 실제로 사용한 RealESRGAN_x2plus와 기본 RealESRGAN_x4plus는 23개, 가벼운 RealESRGAN_x4plus_anime_6B는 6개입니다. ‘6B’는 블록 6개를 뜻해요. 모델별 설정 ↗

실제 모델이 계산한 특징을 들여다볼까요?

아래는 주황버섯을 넣었을 때 첫 합성곱에서 나온 특징 채널 일부예요. 각 칸은 같은 위치의 그림을 서로 다른 계산으로 읽은 결과입니다. 입력을 2×2로 접은 뒤라 실제 크기는 입력의 절반(32×30)이고, 보기 편하게 입력 크기로 키워 표시했어요.

눈으로 보기 위해 각 채널의 최솟값을 검정, 최댓값을 흰색으로 따로 바꿨습니다. 서로 다른 칸의 밝기로 중요도를 비교할 수는 없어요. 특정 채널을 ‘눈 담당’이나 ‘외곽선 담당’으로 정해 놓은 것도 아닙니다.

실제로 커지는 곳은 뒤쪽이에요.

먼저 접어서 작아진 크기에서 특징을 충분히 계산합니다. 그다음 특징값을 가까운 칸에 복사해 2배 확대 → 합성곱 → 다시 2배 확대 → 합성곱을 거쳐요. 접은 크기의 4배이니 원본 기준으로는 2배예요. 마지막에는 특징을 RGB 3채널로 바꿔 이미지를 만듭니다.

따라서 2배 크기는 언제나 맞출 수 있지만, 눈 모양이나 선까지 원본 의도와 같다는 보장은 없어요. 그 부분은 어떤 그림으로, 어떤 기준을 써서 학습했는지에 달려 있습니다.

STEP 05 · 학습 원리

정답과 비교하면서
필터의 숫자를 고쳐요.

필터의 숫자를 사람이 모두 정해 주지는 않아요. 학습에서는 작은 이미지와 큰 원본을 한 쌍으로 준비하고, 결과가 정답에 가까워지도록 모델의 숫자를 조금씩 바꿉니다.

원본 → 축소 → 복원의 관계를 기존 모델로 확인한 예시예요. 직접 학습한 모델의 결과는 아니에요.

작게 만든 이미지LR · 저해상도 입력
생성망학습 중인 확대 모델
예측한 큰 이미지HR 원본과 비교

틀린 정도를 숫자로 나타낸 것이 손실(loss)이에요. 손실이 줄어드는 방향으로 필터의 숫자를 고치는 과정을 많은 이미지에 반복합니다.

채점 기준쉽게 말하면함께 생각할 점
픽셀 손실“같은 위치의 색이 원본과 얼마나 다르지?”위치와 색을 맞추는 데 직접적이에요. 여러 정답이 가능한 부분은 평균적인 표현으로 흐려질 수 있어요.
지각 손실“다른 신경망이 읽은 형태·질감 특징도 비슷할까?”특징의 차이를 비교해요. 사람이 직접 매긴 점수는 아닙니다.
GAN 손실“판별망이 보기에 실제 큰 이미지처럼 보일까?”그럴듯한 질감을 돕지만, 정답에 없던 무늬를 만들 수도 있어요.

ESRGAN은 이런 기준을 함께 사용합니다. 원본과 정확히 맞추는 것과 자연스러운 질감을 만드는 것 사이에서, 각 기준의 비중이 결과에 영향을 줘요. ESRGAN 논문 ↗

GAN의 판별망도 매번 같이 실행할까요?

학습할 때생성망이 이미지를 만들어요
판별망도 학습예측 이미지와 실제 이미지를 구별해요
계산을 고치기생성망을 학습하는 신호로 사용해요
사용할 때작은 이미지
학습이 끝난 생성망저장된 숫자로 계산
큰 이미지판별망 없이 출력

페이지 앞의 실제 결과도 이미 학습된 생성망을 실행해 만든 이미지입니다. 위 그림은 학습 원리를 설명하며, 이 프로젝트에서 새 모델을 학습한 기록은 아닙니다.

Real-ESRGAN은 실제 작은 이미지에서 생기는 흐림·노이즈 같은 손상을 더 다양하게 흉내 내어 학습용 쌍을 만듭니다. 그래서 단순 축소 데이터로 학습하는 실험과 입력 조건이 다를 수 있어요. Real-ESRGAN 논문 ↗

STEP 06 · 메이플에 적용하면

최근 에셋으로 배우고,
옛날 도트에 써 볼 수 있을까요?

최근 고해상도 에셋을 축소한 뒤, 원본을 복원하도록 학습한다. 이 프로젝트에서 시험해 볼 수 있는 방향이에요. 준비한 정답이 있으므로 어떤 설정이 복원에 도움이 되는지 비교할 수 있습니다.

최근 에셋 원본큰 정답 이미지
여러 방식으로 축소작은 학습 입력 만들기
원본 복원을 학습완료 후 옛날 도트로 평가
가장 먼저 확인할 것: 축소한 최근 그림이 실제 옛날 도트와 닮았나요?
크기가 같아도, 픽셀이 만들어진 방식이 다를 수 있어요.

큰 그림의 눈을 축소하면 여러 색이 섞여 흐려질 수 있습니다. 사람이 작은 칸에 직접 찍은 눈은 검은 픽셀 한두 개로 또렷할 수 있죠. 이렇게 학습 입력과 실제 입력의 성질이 다른 문제를 도메인 차이라고 해요.

또 원본 그림을 정답으로 배우면 그 그림의 선·명암·색 표현도 함께 배웁니다. 원하는 목표가 ‘최신 에셋과 어울리는 표현’인지, ‘옛 도트의 픽셀 느낌 유지’인지 먼저 정하면 결과를 판단하기 쉬워요.

실험에서 확인할 것이유
축소 방법을 먼저 비교평균을 내는 축소와 픽셀을 선택하는 축소는 서로 다른 학습 입력을 만들어요.
캐릭터·변형 단위로 데이터 분리같은 캐릭터의 다른 프레임이나 색만 바꾼 변형이 학습용과 시험용에 섞이면, 처음 보는 그림에 대한 실력을 과대평가할 수 있어요.
두 종류의 시험 이미지 준비축소한 최근 에셋은 정답 복원을, 실제 옛날 도트는 형태·색·사용 가능성을 평가해요.
움직임과 투명 테두리 확인한 장이 예뻐도 애니메이션에서 선이 흔들리거나 배경에 테두리가 생기면 게임에 쓰기 어려워요.

이 페이지의 RGB 모델은 투명도(알파 채널)를 직접 학습하지 않습니다. 배경을 합성한 예시로 원리를 살펴보며, 게임용 투명 PNG를 만들 때는 알파 처리와 경계 색을 따로 확인해야 해요.

다음 비교는 같은 입력과 최종 배율로 최근접 확대 · Real-ESRGAN · AnimeSharp · 자체 학습 모델을 나란히 두면 좋습니다. 여기서는 Real-ESRGAN 계열의 실제 실행 예시를 봤고, AnimeSharp와 자체 모델의 성능 비교는 아직 진행하지 않았어요.

세 가지만 기억했는지 확인해 볼까요?

① 가로·세로가 2배 커지면, 픽셀 수는 몇 배가 될까요?

4배예요. 가로 2배 × 세로 2배이기 때문입니다. 64 × 64의 4,096개가 128 × 128의 16,384개가 됩니다. 4배로 키우면 16배(65,536개)가 돼요.

② 업스케일을 실행할 때 판별망도 필요할까요?

이 모델은 생성망만 사용해요. 판별망은 학습 중 생성망에 피드백을 주는 데 쓰입니다. 결과를 만들 때는 학습을 마친 생성망으로 계산합니다.

③ 확대 결과가 선명하면, 원래 있었던 디테일을 찾은 걸까요?

반드시 그렇지는 않아요. 작은 이미지로는 알 수 없던 부분을 학습한 패턴으로 추정했을 수 있습니다. 캐릭터의 눈·표정·윤곽이 의도와 맞는지도 봐야 해요.

더 찾아보기

설명과 실제 결과의 출처

네트워크 구조와 학습 설명은 아래 논문·공식 구현을 바탕으로 정리했습니다. 확대 비교와 특징 이미지는 이 프로젝트의 에셋에 공개 모델을 실행한 결과예요.