
Apple Watch에서 작동하는 소형 이미지 생성 모델을 육성하고 있는 이야기
요약
Apple Watch와 같은 제약된 환경에서 네트워크 연결 없이 작동하는 소형 이미지 생성 모델 개발 과정을 다룹니다. 기존 확산 모델 대신 좌표 기반의 MLP 방식을 사용하여 메모리 사용량을 최소화하고 오프라인 생성을 구현하는 것이 핵심입니다.
핵심 포인트
- Apple Watch 환경을 위한 초경량 이미지 생성 모델 개발
- Diffusion Model 대신 좌표 기반 MLP 구조 채택
- 클라우드/Mac의 교사 모델과 단말의 생성기 역할 분담
- 완전 오프라인 및 저메모리 환경 최적화 지향
이 기사에서 전하고 싶은 것
Apple Watch 상에서 네트워크 연결 없이 이미지를 생성하는 소형 모델을 만들고 있습니다.
단, 이것은 Stable Diffusion와 같은 거대한 확산 모델 (Diffusion Model)을 Apple Watch에 억지로 얹으려는 시도가 아닙니다. 클라우드나 Mac에서 만든 교사 이미지 (Teacher Image)를 사용하여, Apple Watch 상에서는 더 작은 생성기 (Generator)만을 구동한다는 방침입니다.
2026년 6월 14일 시점에서는, 실기 상에서 다음 단계까지 와 있습니다.
| 항목 | 현상 |
|---|---|
| 출력 사이즈 | 128×128 |
| ... | |
| 검증·개발 환경은 다음과 같습니다. |
| 구분 | 내용 |
|---|---|
| 실기 | Apple Watch 11 |
| ... | |
| 이 기사에서는 무엇을 만들고 있는지, 확산 모델 (Diffusion Model)과 무엇이 다른지, 지금까지 무엇을 시도해 왔는지를 정리합니다. |
우선, 확산 모델 (Diffusion Model)과는 무엇이 다른가
가장 오해하기 쉬운 부분이 여기입니다.
이번 모델은 Stable Diffusion을 작게 만든 것이 아닙니다.
일반적인 확산 모델 (Diffusion Model)은, 대략 말하자면 "노이즈 투성이의 이미지로부터, 수십 단계에 걸쳐 조금씩 노이즈를 제거하여 이미지답게 만들어가는" 방식입니다. 고품질 이미지나 긴 자연어 프롬프트 (Natural Language Prompt)에 강한 반면, text encoder, U-Net이나 Transformer, VAE 등이 관여하기 때문에 모델과 계산량이 상당히 무거워집니다.
반면, 이번에 Apple Watch 상에서 구동하고 있는 것은 좌표 기반의 작은 MLP (Multi-Layer Perceptron)입니다.
각 픽셀에 대해, x, y 좌표, 반경 방향의 특징, Fourier 특징, 그리고 프롬프트와 seed로부터 만든 작은 latent를 입력하여, 해당 픽셀의 RGB를 직접 출력합니다.

그림 1: 확산 모델 (Diffusion Model)은 반복적으로 노이즈를 제거한다. 이번 Apple Watch 측 모델은 좌표와 latent로부터 각 픽셀의 RGB를 직접 계산한다.
차이점을 표로 나타내면 다음과 같습니다.
| 관점 | 일반적인 확산 모델 (Diffusion Model) | 이번 Apple Watch 측 모델 |
|---|---| |
| 생성 방법 | 노이즈로부터 반복적으로 denoise | 좌표마다 RGB를 직접 출력 |
| ... | |
이 프로젝트의 목표는 "최고 화질의 이미지 생성"이 아닙니다.
Apple Watch라는 상당히 제약이 강한 환경에서, 짧은 프롬프트로부터 그럴듯하게 읽히는 작은 이미지를 오프라인으로 생성하는 것입니다.
목표와 제약
처음에 정한 목표는 상당히 엄격했습니다.
- Apple Watch 상에서 구동할 것
- 가급적 완전 오프라인
- 메모리 사용량을 작게 유지할 것
- 생성 시간은 다소 걸려도 괜찮음
- 프리셋뿐만 아니라, 짧은 자유 입력 프롬프트에도 조금씩 대응하고 싶음
- 이미지는 작아도 좋지만, 대상물이 무엇인지 어느 정도 알아볼 수 있는 품질로 할 것
이 조건이라면 일반적인 이미지 생성 모델을 그대로 얹는 것은 현실적이지 않습니다.
그래서 방침을 나누었습니다.
학습용 교사 이미지는 Mac이나 클라우드 GPU로 만든다. Apple Watch 상에서는 가능한 한 작은 생성기 (Generator)만을 구동한다.
이 역할 분담을 통해 단말 측의 처리를 상당히 단순화할 수 있습니다.
실기 상에서 구동되고 있는 처리
Apple Watch 측에서 수행하는 일은 상당히 심플합니다.
- 입력 프롬프트를 정규화한다
- 기지의 명사·색상·동작·형용사·구도 어휘로 분해한다
- 프롬프트와 seed로부터 latent를 만든다
- 128×128의 각 픽셀을 MLP로 생성한다
- 가벼운 후처리로 색상 노이즈를 억제한다

그림 2: 실기 측에서는 무거운 자연어 모델이나 확산 모델 (Diffusion Model)을 구동하지 않고, 어휘 분해와 좌표 MLP만으로 생성한다.
현재 채택하고 있는 주요 설정은 다음과 같습니다.
| 항목 | 값 |
|---|---|
| 출력 사이즈 | 128×128 |
| ... | |
watchOS 측에서는 가중치를 로드하고, Accelerate의 cblas_sgemm을 사용하여 배치 단위로 MLP를 평가하고 있습니다. |
처리 이미지는 다음과 같습니다.
prompt + seed
-> compositional latent
x, y, r, Fourier features, latent
...
포인트는 이미지를 "1장의 커다란 데이터"로서 한꺼번에 만드는 것이 아니라, "좌표를 넣으면 RGB가 반환되는 함수"로서 표현하고 있다는 점입니다.
왜 일반적인 text encoder를 얹지 않았는가
자유 입력(free input)에 대응하고 싶다면, CLIP과 같은 text encoder를 얹고 싶어질 것입니다.
하지만, Apple Watch 상에서는 그것 자체만으로도 상당히 무겁습니다.
- 모델 사이즈가 증가함
- 메모리 사용량이 증가함
- 추론 시간(inference time)이 증가함
- 이미지 생성기 측의 용량에 비해, 입력할 수 있는 자연문의 폭이 너무 넓음
그렇기 때문에 현시점에서는 자연문을 그대로 이해하는 것이 아니라, 제한된 어휘로 분해하는 방식을 채택하고 있습니다.
상정하고 있는 것은, 예를 들어 다음과 같은 짧은 프롬프트(prompt)입니다.
cat
blue bird
small fox sitting
...
이 방식은 만능은 아닙니다.
하지만 Apple Watch에서 구동하는 소형 모델로서는 현실적입니다. 완전한 자연문 이해를 목표로 하기보다, 기지의 어휘를 잘 조합하는 편이 실기(real device) 경험으로서 더 안정적입니다.
교사 데이터는 SDXL로 만든다
Apple Watch 상의 소형 모델을 직접 잘 학습시키려면, 좋은 교사 이미지(teacher image)가 필요합니다.
그래서 교사 이미지는 주로 SDXL로 만들고 있습니다. Mac 상에서의 생성도 시도해 보았으나, 상당한 양을 만드는 데 시간이 걸리기 때문에, 최종적으로는 RunPod 상의 RTX 4090을 사용했습니다.
여기서 중요한 점은, SDXL을 Apple Watch 상에서 돌리고 있는 것이 아니라는 점입니다.
SDXL은 어디까지나 선생님입니다. 선생님이 만든 이미지를 사용하여, 작은 MLP에 "이 프롬프트라면, 대략 이런 형태가 된다"라는 지식을 전수하고 있습니다.

그림 3: SDXL은 교사 이미지를 만들기 위해 사용한다. Apple Watch 상에서는 학습이 완료된 작은 MLP만을 구동한다.
교사 이미지 생성에서는 다음과 같은 방침을 강력하게 의식하고 있습니다.
- 한 장에 하나의 대상만
- 중앙 배치
- 배경은 심플하게
- 작게 만들어도 실루엣을 읽을 수 있게
- 글자, 로고, 워터마크를 넣지 않음
- 복수 물체, 패턴, 타일 형태의 배치를 피함
SDXL에는 예를 들어 다음과 같은 프롬프트를 던집니다.
exactly one cute fox, isolated single subject, centered,
full subject visible, clean simple illustration,
matte plain light gray background, empty background,
...
네거티브 프롬프트(negative prompt)에서는 다음과 같은 것들을 피합니다.
text, logo, watermark, caption, low quality, blurry,
noisy, distorted, deformed, cropped subject,
multiple subjects, repeated subject, tiled layout,
...
교사 데이터를 그대로 전부 사용하지 않는 이유
생성한 교사 이미지를 그대로 전부 사용하지는 않습니다.
이유는 소형 모델이 매우 순진하기 때문입니다.
교사 이미지에 불필요한 배경 무늬나 반복 패턴이 들어가 있으면, 그것까지 학습해 버립니다. 큰 모델이라면 어느 정도 흡수할 수 있는 노이즈라도, 이번과 같은 소형 MLP에서는 품질에 직격탄을 줍니다.
그래서 다음과 같은 이미지를 걸러내고 있습니다.
- 배경의 에지(edge) 밀도가 너무 높은 것
- 전경 성분이 너무 많이 분리되어 있는 것
- 최대 전경 성분이 너무 작은 것
- 여러 물체로 보이는 것
- 패턴화되어 있는 것

그림 4: 소형 모델에서는 배경 노이즈나 복수 물체의 혼입이 그대로 품질 저하로 이어지기 쉽다.
나아가, 단순히 점수가 높은 것만 채택하는 것이 아니라, quality_diverse라는 선택 방식을 사용하고 있습니다.
이는 카테고리별로 고품질 이미지를 선택하면서도, 동일한 종류의 프롬프트에만 치우치지 않도록 하는 것입니다.
예를 들어 cat이라면, 다음과 같은 변형이 남도록 합니다.
cat
small cat
fluffy cat
...
소형 모델에서 짧은 자유 입력에 조금이라도 대응하기 위해서는 "품질"과 "다양성" 둘 다 필요했습니다.
지금까지의 반복
여기까지 상당히 많은 반복을 거쳤습니다.
처음에는 학습된 장르에 대해서는 어느 정도 그럴싸한 이미지를 낼 수 있는 상태였습니다. 다만, 다음과 같은 문제가 있었습니다.
- 학습하지 않은 장르에 약함
- 자유 입력 프롬프트에 약함
- 동사나 형용사가 거의 먹히지 않음
- 이미지가 상당히 흐릿함
- 배경에 노이즈나 무늬가 섞임
이 단계에서는 프리셋 이미지 생성에 가까운 상태였습니다.
그 후, SDXL 교사 데이터 생성 (Teacher Data Generation), 필터링 (Filtering), 어휘 확장 (Vocabulary Expansion), 큐레이션 데이터 보강 (Curated Data Augmentation), 경량 후처리 (Lightweight Post-processing)를 차례로 시도했습니다.
v4 / v5에서의 개선
v4에서 v5로 넘어오면서 주로 다음과 같은 개선을 도입했습니다.
- 약 46개 카테고리까지 확장
- 색상, 동작, 형용사, 구도, 스타일 슬롯 추가
compositional_v2프롬프트 인코더 (Prompt Encoder) 사용quality_diverse를 통한 다양성 유지orange/pizza/bread와 같은 문제 카테고리에 큐레이션 보강 데이터 추가
v5에서는 다음과 같은 규모의 데이터를 만들었습니다.
| 항목 | 건수 |
|---|---|
| 생성 메타데이터 (metadata) | 5346 |
| ... |
이 단계에서 동물 계열이나 일부 물체는 상당히 개선되었습니다.
다만, 아직 배경 노이즈와 흐릿함은 남아 있었습니다.
경량 후처리
생성 모델 자체가 아니라, 표시 직전의 후처리를 시도했습니다.
초해상도 (Super-resolution) 모델은 무겁고, 이번 문제인 '배경의 거칠음'을 직접적으로 해결해주지도 않습니다.
그래서 RGB를 휘도 (Luminance)와 색차 (Chrominance)로 나누어 처리하고 있습니다.
- RGB를 휘도 + 색차로 변환
- 색차 성분을 다소 강하게 평활화 (Smoothing)
- 휘도 성분은 에지 (Edge)를 살피며 약하게 평활화
- 윤곽을 최대한 남기면서 배경의 미세한 색상 노이즈를 억제
이것은 근본적인 품질 개선은 아닙니다.
다만, 실기 (Real device) 표시 시에는 노이즈감을 조금 억제하는 효과가 있었습니다.
v6에서의 어휘 확장
v6에서는 기존 46개 카테고리를 유지하면서, 신규 29개 카테고리를 추가했습니다.
추가된 카테고리의 예시입니다.
astronaut
alien
dragon
...
또한, 동작·형용사·상태 어휘도 늘렸습니다.
dancing
climbing
spinning
...
v6의 데이터 규모는 다음과 같습니다.
| 항목 | 건수 |
|---|---|
| 생성 메타데이터 (metadata) | 5956 |
| ... |
학습 후보로서 hidden=1536과 hidden=2048을 비교했습니다.
hidden=2048은 일부에서 샤프해지는 반면, 색상 파탄(Color breakdown)이나 패턴 혼입이 발생했습니다. 특히 하이브리드 (Hybrid) 버전에서는 붉은색으로 치우치는 파탄이 발생하여 채택하지 않았습니다.
최종적으로 v6에서는 hidden=1536의 하이브리드 버전을 채택하고 있습니다.
현재 할 수 있는 것
2026년 6월 14일 시점에서는 다음과 같은 것들이 가능합니다.
Apple Watch 11 실기상에서 오프라인 생성 가능
클라우드에 보내지 않고, watchOS 앱 내에서 이미지를 생성할 수 있습니다.
Stable Diffusion과 같은 거대 모델은 탑재하지 않았습니다. 실기 확인 결과, 메모리 사용량은 30MB 정도까지 늘어났지만, Apple Watch 상에서는 충분히 허용 가능한 범위였습니다.
128×128 이미지 생성 가능
현재는 128×128을 실용 후보로 삼고 있습니다.
Apple Watch의 작은 표시 영역에서는 128×128이라도 대상물이 식별 가능하면 충분히 사용할 수 있습니다.
학습된 카테고리는 상당히 잘 보임
특히 다음과 같은 카테고리는 비교적 안정적입니다.
cat
dog
fox
...
아직 거친 부분은 있지만, '무엇을 그리려고 하는지'는 상당히 전달될 정도가 되었습니다.
신규 카테고리에도 일부 대응 가능
v6에서는 신규 카테고리에 대한 반응이 상당히 늘어났습니다.
특히 다음과 같은 것들은 형태가 잘 나타납니다.
alien
penguin
duck
...
짧은 자유 입력에 조금 대응 가능
완전한 자연문은 아니지만, 다음과 같은 짧은 조합에는 반응할 수 있습니다.
blue bird
small fox sitting
floating cloud
...
일본어 에일리어스 (Alias)에도 일부 대응
프롬프트 정규화 (Prompt Normalization) 측에는 일본어 에일리어스도 넣었습니다.
猫 (고양이)
犬 (개)
赤い (붉은)
...
일본어 자연문을 이해하고 있는 것은 아닙니다.
다만, 기지 어휘 (Known vocabulary)에 매치되면 잠재 공간 (Latent)에 반영할 수 있습니다.
최신 버전의 실기 생성 결과
기본적으로는 최신 버전을 Apple Watch 11 실기에서 구동한 결과입니다. 다만, Face의 예시만은 가중치 (Weight) 버전이 조금 다른 실기 결과입니다.
아래 그림은 실기 스크린샷에서 생성된 이미지 부분을 잘라내어 나열한 것입니다. 전체적으로는 아직 흐릿하거나 입자감이 느껴지지만, 짧은 프롬프트(Prompt)에 대해 대략적인 실루엣이나 색상의 방향성은 나타나기 시작했습니다.

그림 5: Car / Cat / Dog / Sun / Mountain / 우주비행사 / Face의 실기 생성 결과. 고해상도 이미지는 아니지만, Apple Watch 상에서 오프라인으로 생성한 작은 이미지로서는 대상물의 방향성을 읽을 수 있는 단계까지 도달했다.
이번 샘플을 보면 잘하는 것과 못하는 것이 상당히 명확하게 드러납니다.
| prompt | 보이는 모습 | 코멘트 |
|---|---|---|
Car | 가로 방향의 차체로 읽힘 | 저해상도에서도 "차 같은" 가로로 긴 실루엣이 나옴 |
Cat | 얼굴과 몸통의 덩어리가 나타남 | 동물 카테고리는 비교적 안정적임 |
Dog | 네 발 동물의 자세가 나타남 | 세부 사항은 모호하지만, 개다운 몸의 방향은 보임 |
Sun | 노란색 원과 주변의 빛이 나타남 | 색상과 중심 구조가 강하게 나타나기 쉬운 예 |
Mountain | 산의 삼각형 실루엣이 나타남 | 단순한 형상은 소형 모델에서도 비교적 내기 쉬움 |
우주비행사 | 인간형의 중앙 실루엣이 나타남 | 일본어 별칭이 기지 어휘(Known vocabulary)에 매치된 예. 화면 표시에는 Face로 남아 있었음 |
Face | 얼굴다운 명암의 덩어리가 나타남 | 별도 가중치 버전의 예이지만, 얼굴 카테고리에 대한 반응으로는 이해하기 쉬움 |
아직 할 수 없는 것들
한편으로는 아직 할 수 없는 것도 많습니다.
완전한 자유 입력 프롬프트는 이해할 수 없음
현재의 프롬프트 인코더(Prompt encoder)는 CLIP과 같은 자연어 이해 모델이 아닙니다.
따라서 다음과 같은 입력은 취약합니다.
a small red fox sleeping under a tree at night
a robot holding an umbrella in the rain
a cat wearing a crown next to a cake
단어 단위로는 일부 포착할 수 있지만, 관계성이나 구문(Syntax)은 이해하지 못합니다.
복수 객체의 관계는 그릴 수 없음
현재의 학습 데이터(Training data)는 기본적으로 "한 장에 한 대상"입니다.
이는 Apple Watch용 소형 모델에는 유효하지만, 그 대신 다음과 같은 표현에는 취약합니다.
- 고양이와 개
- 나무 아래의 여우
- 우산을 든 로봇
- 책상 위의 책
- 배경이 있는 장면
복수의 객체를 넣으면 모델 용량 대비 난이도가 급격히 상승합니다.
동사나 형용사는 아직 약함
sitting, flying, floating 등은 일부 효과가 있습니다.
하지만 명사만큼 안정적이지는 않습니다.
특히 다음과 같은 어휘는 아직 약합니다.
climbing
spinning
open
transparent
top view
front view
striped
spotted
학습 이미지 측에서는 표현할 수 있더라도, 소형 MLP로 증류(Distillation)하면 상당히 평균화됩니다.
이미지는 아직 흐릿함
현 상태에서도 이미지는 상당히 흐릿합니다.
주요 이유는 다음과 같습니다.
- 모델 용량이 작음
- 128×128을 직접 MLP로 출력함
- 학습 이미지에 포함된 미세한 배경 노이즈
- 소형 모델이 고주파 성분(High-frequency component)을 깨끗하게 표현하지 못함
- 노이즈를 피하기 위해 학습 타겟을 약간 부드럽게(Smooth) 처리함
후처리(Post-processing)로 노이즈 느낌은 어느 정도 억제할 수 있습니다.
다만, 구조 자체의 선명함(Sharpness)은 학습과 모델 설계 단계에서 개선해야 합니다.
새로운 카테고리를 늘리면 기존 품질이 떨어질 리스크가 있음
v6에서는 카테고리 수를 46개에서 75개로 늘렸습니다.
새로운 카테고리에 대한 반응은 늘어났지만, 카테고리 수가 늘어날수록 모델 용량 확보를 위한 경쟁이 일어납니다.
따라서 향후 카테고리를 더 늘릴 경우에는 단순히 추가하는 것뿐만 아니라, 다음과 같은 고안이 필요합니다.
- 기존 카테고리를 잊지 않도록 섞어서 학습
- 카테고리별 매수 조정
- 문제가 되는 카테고리만 큐레이션(Curated)하여 보강
- 채택할 카테고리를 압축
- 모델 용량을 약간 늘리는 방안 검토
크게 만든다고 반드시 좋아지는 것은 아님
hidden=2048도 시도해 보았지만, 반드시 좋아지지는 않았습니다.
일부는 선명해졌지만, 색상이 크게 편향되거나 pizza 또는 orange와 같은 카테고리에서 패턴 혼입(Pattern contamination)이 다시 나타나기도 했습니다.
이번 범위에서는 hidden=1536 쪽이 더 안정적이었습니다.
이는 Apple Watch용 소형 생성 모델을 만드는 데 있어 중요한 교훈입니다.
모델을 키운다고 해서 모든 문제가 해결되는 것은 아닙니다. 데이터 품질, 카테고리 수, 어휘, 후처리(Post-processing), 그리고 실제 기기의 메모리 사이에서 균형을 맞춰야 합니다.

그図6: 확산 모델(Diffusion Model)은 화질과 자유도에 강점이 있다. 이번 tiny MLP는 단말기에서의 가벼움에 초점을 맞추었다.
구현상의 포인트
1. 단말기에서는 작게 유지하기
단말기에서 구동되는 것은 좌표 MLP와 가벼운 프롬프트 정규화(Prompt normalization)뿐입니다.
무거운 SDXL이나 텍스트 인코더(Text encoder)는 단말기에 탑재하지 않았습니다.
2. 학습 데이터는 클라우드 GPU로 만들기
학습 이미지(Teacher image) 생성은 RunPod 상의 RTX 4090에서 수행하고 있습니다.
v6에서는 SDXL로 학습 이미지를 만든 뒤, 필터링을 거쳐 최종적으로 3,000건 정도의 학습 데이터로 압축했습니다.
3. 품질뿐만 아니라 다양성도 확보하기
소형 모델에서는 비슷한 학습 이미지만 넣으면 자유 입력(Free input)에 취약해집니다.
따라서 카테고리별로 고품질 이미지를 선정하면서도, 색상·동작·형용사·구도·스타일의 변주(Variation)를 남겨두고 있습니다.
4. 문제가 되는 카테고리는 개별 보강하기
orange, pizza, bread는 학습 이미지가 패턴화되기 쉬운 카테고리였습니다.
그래서 이들은 큐레이션된(curated) 데이터를 별도로 제작하여, 하이브리드(hybrid) 학습 시에 섞어주고 있습니다.
이러한 카테고리별 보강은 앞으로도 계속 필요할 것으로 보입니다.
5. 후처리는 가볍게 적용하기
생성 후에 색차 노이즈(Color difference noise)를 중심으로 억제하는 가벼운 후처리를 넣고 있습니다.
이것은 초해상도(Super-resolution) 기술이 아닙니다.
이미지를 고해상도로 만드는 것이 아니라, 배경의 거친 느낌을 약간 억제하기 위한 것입니다.
Apple Watch에서도 가볍게 돌아가는 범위 내로 맞추었습니다.
현재의 성과물
현재 채택하고 있는 모델은 v6의 hidden=1536 하이브리드 버전입니다.
| 항목 | 값 |
|---|---|
| 카테고리 수 | 75 |
| ... |
실제 기기에서는 이전보다 동물 계열과 신규 카테고리에 대한 반응이 좋아졌습니다.
예를 들어, 다음과 같은 입력은 비교적 좋은 결과를 보여줍니다.
car
cat
dog
...
향후 방침
앞으로는 몇 가지 방향성이 있습니다.
방침 A: 데이터 품질을 더욱 정교하게 다듬기
가장 견실한 방법은 데이터셋의 품질을 높이는 방향입니다.
구체적으로는 다음과 같은 작업입니다.
- 카테고리별로 학습 이미지 확인
- 패턴화되기 쉬운 카테고리 특정
- 해당 카테고리만 프롬프트 조정
- 큐레이션된(curated) 보강 데이터 제작
- 거절(reject) 조건을 카테고리별로 변경
이는 눈에 띄지 않는 작업이지만, 소형 모델에서는 상당히 효과적입니다.
다음에 실행한다면 우선 이 방향이 좋을 것 같습니다.
방침 B: 어휘를 더욱 늘리기
새로운 카테고리나 형용사·동작 어휘를 더 늘리는 방향입니다.
다만, 카테고리 수를 늘릴수록 기존 품질이 떨어질 리스크가 있습니다.
따라서 앞으로는 한꺼번에 늘리기보다, 테마별로 조금씩 추가하는 것이 좋아 보입니다.
- 동물 팩
- 음식 팩
- 도구 팩
- 판타지 팩
- 탈것 팩
- 구도 어휘 팩
방침 C: 프롬프트 UI를 제한적으로 만들기
완전 자유 입력을 목표로 하기보다, UI 측에서 약간 제한하는 것도 유효합니다.
예를 들어, 다음과 같은 슬롯 방식입니다.
subject: cat
color: white
action: sitting
...
사용자에게는 자연스럽게 보이게 하면서, 내부적으로는 기지 어휘(Known vocabulary)의 조합으로 변환합니다.
Apple Watch의 화면 크기를 고려하면, 완전한 자유 입력보다 이 방식이 사용자 경험(UX) 측면에서 더 안정적일 가능성이 있습니다.
방침 D: 모델 구조를 약간 변경하기
현재는 좌표 MLP를 통해 직접 RGB를 출력하고 있습니다.
다음 후보로는 다음과 같은 구조도 고려해 볼 수 있습니다.
- 저해상도를 MLP로 출력하고 가벼운 업샘플링(Upsampling)을 조합
- 작은 CNN 디코더(Decoder) 추가
- RGB가 아닌 저주파 성분과 윤곽 성분 분리
- 후처리를 포함하여 학습
- 노이즈를 억제하는 손실 함수(Loss function) 추가
다만, 구조 변경은 실제 기기에서의 속도나 메모리에 영향을 줍니다.
현 상황에서는 우선 데이터 품질을 다듬는 것이 우선순위가 높아 보입니다.
요약
Apple Watch에서 작동하는 소형 이미지 생성 모델로서, 상당히 제약이 강한 조건 하에서 진행해 왔습니다.
이 시도의 핵심은 Stable Diffusion을 Apple Watch에 탑재하는 것이 아닙니다.
SDXL과 같은 거대한 모델은 학습 데이터(教師画像) 생성에 사용하고, 실제 기기상에서는 좌표 기반의 작은 MLP (Multi-Layer Perceptron)만을 구동하는 방식으로 역할을 분담했습니다.
현재 시점에서 가능한 사항은 다음과 같습니다.
- Apple Watch 11 실기에서 128×128 이미지 생성 가능
- 메모리 약 30MB 내외로 구동
- 학습된 카테고리는 어느 정도 식별 가능
- 새로운 카테고리에도 어느 정도 대응 가능
- 색상·동작·형용사·구도 어휘도 일부 반영 가능
- 가벼운 후처리 (Post-processing)를 통해 노이즈감을 약간 억제 가능
반면, 아직 다음과 같은 과제가 남아 있습니다.
- 완전한 자유 입력은 어려움
- 여러 물체나 관계성은 그릴 수 없음
- 동사·형용사·구도 어휘는 아직 약함
- 이미지는 아직 흐릿함
- 카테고리를 늘리면 기존 품질이 저하될 리스크가 있음
지금까지의 결과를 보면, 다음 단계는 "모델을 더 크게 만드는 것"보다는 "데이터 품질을 카테고리별로 정교화하는" 방향이 좋아 보입니다.
특히 패턴화되기 쉬운 음식 계열, 구도 어휘, 동작 어휘를 개별적으로 개선해 나간다면, 실제 기기에서의 경험을 더욱 향상시킬 수 있을 것입니다.
Discussion

AI 자동 생성 콘텐츠
본 콘텐츠는 Zenn AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기