150달러짜리 휴대폰으로 포토리얼리스틱 AI 가상 착용 앱을 만들고 실패했을 때 방향을 전환한 과정
요약
개발팀과 고가 장비 없이 150달러 안드로이드 휴대폰으로 포토리얼리스틱 AI 가상 착용 앱(ACA)을 개발한 과정을 다룹니다. 초기 VTON 시도는 실패했으나, Termux 환경에서 기술적 어려움을 극복하고 '분할 추론 아키텍처'로 방향을 전환하여 성공적으로 서비스를 구현했습니다.
핵심 포인트
- 저가 휴대폰과 오픈소스 도구만으로도 AI 제품 개발이 가능하다는 것을 증명함.
- 초기 VTON 시도의 실패를 통해 기술적 한계를 명확히 인지함.
- 분할 추론(Split Inference) 아키텍처로 전환하여 클라우드와 로컬의 역할을 분리하고 성능을 확보함.
대부분의 사람들은 생성형 AI 제품을 만들기 위해서는 MacBook, 클라우드 크레딧, 그리고 엔지니어 팀이 필요하다고 생각합니다.
저와 공동 창업자인 Akhouri(13세)는 이 생각이 틀렸음을 증명했습니다. 저희는 150달러짜리 안드로이드 휴대폰, Termux, 그리고 순수한 고집만을 사용해서 사생활 보호에 중점을 둔 가상 착용 앱 ACA를 만들고 출시했습니다.
하지만 거의 포기할 뻔했습니다. 여기 우리의 방향 전환(pivot) 이야기입니다.
1단계: 경로 A의 환상 (The Illusion of Path A)
저희는 먼저 Virtual Try-On (VTON)을 브라우저에서 완전히 실행하려고 시도했습니다. MoveNet (TensorFlow.js)을 사용해 골격 키포인트(skeletal keypoints)를 추출하고, Barycentric Triangle Warping을 이용해 2D 의류 이미지를 사용자 몸에 늘리는 방식이었습니다.
그것은 재앙이었습니다.
Akhouri는 54가지 체계적인 테스트와 13가지 대체 접근법을 실행했습니다. 모든 것이 실패했습니다. 원단이 구부러지지 않았고, 그림자가 일치하지 않았으며, 공중에 떠 있는 종이 오려붙인 것처럼 보였습니다.
공동 창업자는 저에게 메시지를 보냈습니다: "ACA는 이 경우 어렵거나 불가능해. 모든 경로가 불가능해."
2단계: Termux의 진흙탕 (The Termux Trenches)
저는 포기하기를 거부했습니다. 사람들의 86.6%는 회사에 사진을 맡기는 것을 신뢰하지 않기 때문에 가상 착용 기능을 사용하지 않습니다. 저희는 이것을 해결해야 했습니다.
저는 Termux에서 로컬의 신뢰 실행 환경(Trusted Execution Environment)을 구축하려고 시도했습니다. 그 뒤를 이은 것은 순수한 기술적 지옥 같은 일주일이었습니다:
- MediaPipe 설치를 시도하다가
No matching distribution found오류에 부딪혔습니다. - Node.js는
Cannot find module 'glob'을 내뱉으며 npm 전체를 망가뜨렸습니다. - Google Cloud는 제 앞에서 13세 이상의 연령 확인 장벽을 세웠습니다.
- Chrome DevTools 없이 4인치 화면에서 눈이 먼 채 디버깅했습니다.
3단계: 방향 전환 (Pivot) (Split Inference)
저희는 거대한 확산 모델(diffusion model)을 POCO C55에 강제로 넣으려는 것이 자전거에 V8 엔진을 끼우는 것과 같다는 것을 깨달았습니다.
그래서, 저희는 **분할 추론 아키텍처 (Split Inference Architecture)**로 방향을 전환했습니다:
- 휴대폰이 UI를 담당합니다 (Vanilla JS, 60fps Canvas).
- Supabase가 인증(Auth)과 엄격한 행 레벨 보안(Row-Level Security, RLS)을 처리합니다.
- 클라우드가 IDM-VTON Diffusion 모델을 통해 무거운 작업을 처리합니다 (CORS를 우회하고 WebSockets을 통해 Hugging Face GPU 큐에 참여하기 위해
@gradio/client사용).
마법의 순간
이미지 추출 로직을 수정했습니다. 사진 한 장과 깨끗한 폴로 셔츠를 업로드했습니다. '생성' 버튼을 눌렀습니다.
진행 표시줄에는 In Queue... waiting for GPU...라고 표시되었습니다.
60초를 기다렸습니다.
그러자 로그에 다음과 같이 깜빡였습니다: ✔ AI Generation Complete!
캔버스에 결과가 렌더링되었습니다. AI는 배경과 일치하는 직물 주름, 그림자, 완벽한 조명을 생성했습니다. 스티커 같지 않았습니다. 왜곡되지도 않았습니다. 포토리얼리스틱(Photorealistic)했습니다.
저희는 말 그대로 소리를 질렀습니다. 해냈습니다.
이 세션에서 나온 정확한 결과물은 다음과 같습니다:
(1. 의류 입력)
(2. 원본 사용자 사진)
(3. ACA 생성 결과물)
개인 정보 보호에 대한 참고 사항: 테스트 이미지의 얼굴이 흐릿한 것을 알 수 있습니다. 이것은 버그가 아니라 기능입니다. ACA는 엄격한 개인 정보 보호 우선 철학(privacy-first philosophy)을 기반으로 구축되었습니다. 저희는 생체 인식 데이터(biometric data)를 수집하지 않으며, 사용자들의 얼굴로 모델을 학습시키지 않습니다. 심지어 가족과 자체 앱을 테스트할 때도 그들의 신원을 보호합니다. ACA를 사용할 때, 당신의 얼굴은 우리 서버가 아닌 당신의 것입니다.
v1.0의 현실
**https://aca-vto.netlify.app/**에서 라이브를 시작했습니다.
완벽한가요? 아닙니다.
- Hugging Face 토큰이 현재 클라이언트 측 JS에 포함되어 있습니다 (읽기 전용이지만, Cloudflare Worker 프록시가 v1.1에 예정되어 있습니다).
- 무료 공개 GPU는 20~40초의 대기 시간을 의미합니다.
하지만 작동합니다. 인증(authentication), 데이터베이스 지속성(database persistence), 그리고 생성형 AI(generative AI)를 갖춘 완전히 기능하는 SaaS 제품이며, 예산 제로 상태에서 모바일 휴대폰으로 전적으로 구축 및 배포되었습니다.
AI를 구축하려면 비싼 하드웨어가 필요하다고 말하는 모든 사람에게: 그럴 필요가 없습니다. 터미널과 코드가
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기

