본문 바로가기
Etc

[후기] AI 서비스 개발 실패 후기

by xoft 2023. 12. 11.

본 글은 수익형 AI 서비스 프로젝트를 3주간 (23.11.18.토~23.12.9.토) 진행하고 실패한 경험담입니다. AI 서비스 개발을 개인적으로 하려는 분들 또는 스타트업을 준비 중이신 분께 도움이 될 수 있을 것 같아 정리해보았습니다.

 

프로젝트의 시작

AI관련 최신 연구들을 리뷰하던 중, 만들면서 엄청 웃었던 글이 있었습니다. (23.11.15.수)

 

[코드 빌드] Dream Gaussian : Image to 3D, Text to 3D

DREAMGAUSSIAN: GENERATIVE GAUSSIAN SPLATTING FOR EFFICIENT 3D CONTENT CREATION, Jiaxiang Tang, arXiv2023 이번엔 좀 웃으면서 글 작성했습니다. DreamGaussian의 Text to 3D와 Text to 2D를 실행해봤습니다. 이번글에서는 이미지 1

xoft.tistory.com

 

 

 

프로젝트 팀 Building

이걸 수익형 서비스로 만들면 어떨까하고 생각했고, 다음날 주변 지인들에게 연락했습니다. AI 관련해서 기술 스펙이 엄청나고 사외 강연/강의도 하시는 두분에게 제가 감히 같이 하자고 제안을 드렸습니다. 

그 때 보낸 메시지입니다.

[서비스] 사용자 이미지 업로드 -> 춤추는 gif제공
(슬릭백이러는 춤이 요즘 엄청나게 뜨고있데요.)
[수익모델] gif 1초 무료, 3초 1$, 10초 3$
[개발항목] AI모델 파트 : Image-to-3D, Rigging, Pose Estimation
서버 파트 : WebGL, 동접자 처리, 결제 플러그인(네이버페이, 페이팔)

두분다 프로젝트에 흥미를 가지셨고 바로 3인팀이 꾸려졌습니다. (23.11.16.목)

 

하지만 저 포함 두분 다 AI 모델 개발에 역량이 있으신 분들이고, 서버 개발엔 경험이 부족해서 서버 개발자를 따로 모셔야 했습니다. 각자 직장을 다니면서 퇴근 후 사이드 프로젝트로 진행한다는 내용으로 기술 커뮤니티에 서버 개발 인원 모집글을 썼고, 두분이 연락을 주셔서 5인팀이 결성됬습니다. (23.11.17.금)

다음날 각자 자기소개와 각자의 역량, 프로젝트 방향성에 대한 회의를 진행했습니다. (23.11.18.토)

 

 

 

프로젝트 설계

5명에서 어떻게 같이 협업 가능할까 고민을 했고, 일단 제가 생각한 서비스를 최대한 구체화한 UI명세서를 작성했습니다.

최종 서비스 모습이 구체화된다면, 각자 무엇을 해야 할 지를 정할 수 있을 것이라 생각했고, 일관되게 작업 할 수 있으며 서비스 목표에 대해 토론 하기에도 용이하다고 생각했습니다.

 

 

다음으로 분업을 위해 개발 내용을 작은 단위로 쪼갰습니다.  전체 Architecture입니다.

물리적으로 분리 가능한 서버 단위로 큰 박스를 나누었으며, 박스안에는 기능 단위의 작은 박스를 배치했습니다. 좌/우로는 서비스 단위로 보기 쉽게 끔 배치했습니다. 그리고 개발이 완료되면 색칠하게 끔하여, 얼마나 진행하였고, 어느 부분을 진행 하고 있고, 얼마나 남았는지를 한눈에 볼 수 있게 했습니다. 이 설계도를 기반으로 월별 목표를 세웠습니다.

 

사용자 시나리오를 명세해보았고

AI모델링 파트와 서버 파트와 협업을 위해 인터페이스를 대략적으로 명세해보았습니다.

 


AI 모델링 팀원들간의 커뮤니케이션 하기 위한 명세서도 작성했습니다. 

위의 문서들을 바탕으로 2번째 회의가 진행됬습니다. (23.11.22.수)

사용자 UX 관점에서 여러 아이디어가 나왔고, 기술적으로 구현 가능 할 것인가에 대한, 기술 검증에 대해서 진행하자라는 미션을 받고 마무리되었습니다.

 

 

 

첫 번째 위기 - 라이센스

기반이 됬던 연구는 (MIT License로) 상업적 사용이 가능했었습니다. 그래서 문제가 없을 줄 알았는데, 문제는 그 소스코드가 참조하고 있는 (3D Gaussian Splatting) 코드가 non-commercial license제한이 있었습니다. 

위 내용은 구글 검색에 표시되었지만 클릭해서 들어가면 사라진 글입니다. 100,000달러(1억원 이상)를 지불하거나 연락해서 협상이 필요하겠다고 생각됬습니다.

 

아래 4가지 안건이 제시 되어졌습니다.

  1. 3달 정도 서비스 제공하고 서비스 종료 + 서버비는 사비 월 5만원 정도 사용
  2. 개발 완료 후 기업에 프로그램 판매
  3. 투자받아서 운영
  4. 라이센스 보유업체(inria)에 문의해서 수익이 나면 수익 일정 비율을 지불하겠다고 제안

그리고 3번째 회의 때 해당 안건으로 토론이 진행됬습니다. (23.11.29.수)

팀원 모두 프로젝트가 흥미로워서 시작했고 수익이 없어도 괜찮으며, AI서비스 배포 경험을 갖고 싶다라는 것에 합의가 이루어졌고, 비영리로 자기계발을 목표로 하는 것으로 방향을 정했습니다. 

 

그 외 검토한 라이센스는 아래와 같습니다.

코드 License
Gaussian Splatting (link) 상업적으로 사용 할 수 없음. 문의 필요
DreamGaussian MIT License
Blender (link) 저작물 : 무료 (What you create with Blender is your sole property) 소스코드 변경 후 배포 : GNU GPL v2 Cycles rendering engine : Apache 2.0
Mixamo (link) 개인, 상업 및 비영리 프로젝트용 로열티 프리 캐릭터 및 애니메이션을 모두 사용할 수 있음

 

 

 

Base 소스 코드 검토 

23.11.23(목) ~ 23.11.29(수) 사이에 라이센스 문제와 함께 동시에 진행됬던 것은 기반이 되는 Base 소스코드 검토였습니다.

Image-to-3D 모듈은 확정 되어 있었습니다. 총 5가지 모듈 중에서 한가지(Motion Pose Estimation)은 쉽게 찾을 수 있었습니다. 또한 춤추는 모션 데이터는 생각보다 무료가 많았습니다.  머지 4가지에 대해서 기술 검증이 필요했고, 각 모듈에 대해 여러 방면으로 검토해보았습니다. 4개 모듈을 만들어야 했기 때문에 일감이 많았습니다. 하나라도 안된다면 서비스를 할 수가 없었습니다. 

소스코드
(실제론 세부 분류가 있었지만 생략) 
특징
cycleadapt_release - CDPW 평가 지표에서 최고 성능
GameRig -
Auto-Rig Pro - Mixamo와 같이 포인트 설정해주면 자동으로 Rigging
- 코드 형태로 사용 가능한지 확인 필요 : auto_rig
- 무료 버전 : 사용 가능한 범위 확인 필요 유료 버전 : 개발 PC1개당 40달러
brignet - 딥러닝기반 RigNet을 blender로 연동 빌드 후 코드 파악해서 응용 가능
- commercial license : 컨택 필요
make human community - 3D 캐릭터 만드는 오픈소스 툴 makehuman에서 시도
- 기술 문서 보면 가능하다고만 적혀있음
RigNet - gpl3(저직물은 코드 공개 의무없음, 상업적 사용가능) 다양한모양의 아바타 처리
opengl기반 blog글 - 랜더링할 때만, c++기반 OpenGL써야 할 것 같기도 함
deep_cage - NN 사용
snarf - NN 사용 - 사람 모형만 되는 것 처럼 보임
Deformation-Transfer-for-Triangle-Meshes - 전통적인 deformation 방법(2004)
d3ga - Gaussian 상태에서 변형 (human)
⇒ DreamGaussian의 refinement 단계(Texture 퀄리티 향상) 때, 이미 3D Mesh화되서 사용 불가
PhysGaussian/ - Gaussian 상태에서 변형 (object)
⇒ 위와 동일
skeleton-free-pose-transfer/tree/main - 라이센스 문제 있음 - 가장 유사한듯?
X-DualNet - 3D Pose Transfer
https://github.com/Kebii/TapMo - 코드 없음 (23.10.19 arXiv발표)
neural-blend-shapes - 모든 단계가 다 있음
video2bvh - 3D pose → bvh ?
MocapNET - 3D pose → bvh ?
PosePipe - 3D pose → bvh ?
MakeWalk - Retargeting
cvpr2018nkn - Retargeting
deep-motion-editing - 모델의 비율이 다를 경우 활용할 수 있을 듯

 

다행히 검토한 내용 중 Neural-Blend-Shapes 소스코드에 우리가 원하는 모든 단계가 있었습니다. 3번째 회의 때 해당 코드를 기본 코드로 정하고, 부족한 부분을 수정해가면서 만들자라고 결정이 되었습니다.(23.11.29.수)

 

 

 

서버 설계 변경

비영리로 바뀌면서 서버 설계를 바꿔야 했습니다(23.11.29.수). 결제 모듈이 빠지고, 서버 리소스 사용을 최소화하는 설계가 필요했습니다.

 

스타트업처럼 MVP(Minimum Viable Product : 최소 실행가능 제품)를 빠르게 만들고, 기능을 덧붙이는 전략을 기본적으로 세우게 됩니다. 특정 기능 개발이 부족하면 특정 기능을 자동이 아닌 수동으로 해서라도 서비스를 진행하고, 이용률을 점진적으로 체크한 후 빠르게 덧붙이자라는 전략을 세웠습니다.

 

또한 API형태로 만들어서 개발이 중단 되더라도 모듈 단위로 서비스 할 수 있게 만들자라는 목표도 세웠습니다.

서버 설계 부분에 대해서는 서버 개발 팀원에게 설계를 위임 했습니다.

 

그리고 그사이에 좋은 AI 서비스 개발 레퍼런스를 찾게 됩니다.

https://knowing-jester-927.notion.site/TIPITAPI-d7b4821450264250a6f3475d13925898

 

티피타피(TIPITAPI) | Built with Notion

@오늘 하루를 그려줘

knowing-jester-927.notion.site

오늘의 일기를 그려주는 서비스인데, 개발 과정이 모두 공개되어 있었습니다. 저희가 목표로 하는 서버 설계가 비슷했고, 해당 페이지를 참고하면 될 것이라 생각됬습니다. 보고 배우고 적용할 것이 다분한 내용들이었고, 이 링크를 찾은 것만 해도 운이 따라주는가 싶었습니다.

 

 

 

서버 연산 시간 측정

서버와 관련된 이야기를 추가적으로 하자면, 연산시간이 가장 오래 걸리고 core알고리즘인 Image-to-3D에 대해서 시간을 측정해보았습니다.서버 1대당 Image-to-3D 모델을 몇개 실행 할 수 있을지, 연산 시간이 얼마나 소요되는지를 체크했습니다. 성능 평가한 PC의 스펙입니다 CPU / GPU / RAM / OS / CUDA : i7-12세대 / 32G / RTX3060 / Windows / 12.1

프로세스
갯수
총 시간 모델 로딩 모델
학습
시간
mesh 추출 기타 (멀티프로세싱 시간으로 추정) VRAM RAM CPU MAX 점유율
1 146.03
32.02
4.04
7.95
119.7
23.71
16.78
0.36
5.5 3.4GB
4.3GB
2GB train : 17%
mesh : 40%
2 150.54 4.45 117.1 23 6 6.8GB 3.4GB  
3 203 4.7 168 24 6.3 10.2GB 4.6GB  
4 1483 5.5 1st) 1078
2nd) 1425
3rd) 1437
4th) 1454
1st) 202
2nd) 40
3rd) 31
4th) 17
6.5 11.3GB 8GB train : 47%
mesh : 90%

 

저희가 갖고 있는 PC로 충분히 많은 동시 접속자(20명)를 커버 할 수 있을 것 이라 판단이 되었습니다.

 

 

 

두번째 위기 - 기술 검증

결정한 base 소스코드로 코드 검증이 진행됬습니다.(23.11.30.목~23.12.4.화)

케릭터에 뼈대를 붙이는 작업(Rigging/Skinning)을 쉽게 봤습니다. 아래와 같이 사람 형상을 넣으면 skeleton(뼈대)별로 특정 부위가 연결이 되는데..

케리터를 넣었더니, skeleton(뼈대)가 무작위 부위와 연결되는 걸 보게 됩니다.

대체 가능한 소스코드를 여러가지 검토해보았고, 풀수 없는 문제는 아니지만 많은 개발 공수가 필요로 해보였습니다. 생각보다 많은 시간이 투입되어야 할 것으로 보였습니다.

 

만약 해결 방안을 못찾는다면, 저희가 필요로하는 전체 프로세스를 제공하는 Mixamo 서비스에 플러그인을 만들어서 쓰는 것도 옵션으로 생각했습니다. 검토하다가 알게 됬는데, 생각지도 못하게 Mixamo의 고퀄리티 서비스가 무료로 제공되어 있었습니다. 하지만 이미 운영중인 서비스에 너무 종속적인 서비스가 되기 때문에 이 방법은 피하고 싶었습니다.

 

 

 

세번째 위기 - 대체가능한 서비스 발견

AI 커뮤니티가 시끌벅적 해졌습니다. 다른 기술 분야에서, 엄청난 기술이 공개됩니다. 이미지 한장과 춤추는 동작을 입력으로 넣으면 비디오를 Diffusion모델이라는 기술로 합성합니다.(23.11.30.목)

 

저희는 23.12.5.화요일에 알게 되었고, 많은 걱정을 안고 기존 기법과 장단점을 비교해봤습니다.

  • 컬리티 관점에선 기존 기법이 더 좋습니다. -> 재밌는 영상을 만드는 서비스 관점에선 Diffusion 기법이 효율적으로 보입니다.
  • 코드 공개로 만들기는 쉬워졌지만, 진입장벽이 낮아지게 됬습니다. -> 차별화가 필요 할 것으로 보입니다.
  • 이 분야를 잘 알지 못해 천천히 시간 갖고 공부 필요합니다. -> 뼈대 붙이는 작업(Rigging/Skinning)에 시간 쓰는 것보다 이 분야 공부하는게 더 의미 있어 보입니다.

이 기술을 알게 되면서, 이 프로젝트를 계속적으로 진행 해야 할 지 고민을 하기 시작합니다.

 

 

 

프로젝트의 종료

많은 고민 끝에 프로젝트를 마무리 하기로 결정(23.12.9.토)했습니다. 이유는 아래와 같습니다.

  • 초기 서비스 개발 방향이 생각했던 것보다, 그래픽 관련 모듈들이 큰 비중을 차지 했습니다.
  • Diffusion Model 기반 연구들이 목표로 하는 서비스를 더 효율적으로 대체 할 수 있을 것이라 생각됩니다.
  • 차별성이 필요로 한데, 이미 공개 된 기술로 서비스 차별성을 만드는 방향보다 공부해서 기술 차별성을 만드는게 방향이 좋겠다고 생각이 되어며, 이 방향에 대해서는 언제 할 수 있을지 기약이 없습니다.

프로젝트 종료를 이야기 할 때 너무너무 아쉬웠고, 흥미를 가지고 개인 시간에 프로젝트에 참여해주신 팀원 분들께 너무 감사하고 죄송했습니다.

 

 

 

회고

빠르게 프로젝트 팀이 결성되고, 빠르게 해체했습니다... 짧지만 이번 프로젝트 배우고 느낀게 많습니다.

 

팀원분들을 통해, 제가 생각지도 못한 방향들을 여러 관점으로 제시해주셔서 많이 배웠습니다.

후회되는 부분은

  • 수익형 서비스를 위해서는 라이센스를 철저히 파악이 필요하다는 점
  • 쉽게 보이는 기술도 기술 검증이 철저해야 한다는 점
  • 생성형 AI분야에선 순식간에 새로운 기술이 대체 가능하다는 점

입니다. 스스로 칭찬도 필요하다고 생각되어서 적어보겠습니다.

잘했다고 생각되는 부분은

  • 한줄로 설명가능한 사업 모델을 제시한 점
  • 방향을 잡을 수 있는, 토론 가능한 문서를 초반에 빠르게 만들었던 점
  • 팀원들의 의견을 빠르게 수용하고, 방향을 빠르게 변경한 점

입니다.

 

 

 

Closing..

연구 분야가 좋아서 회사일과 별개로 논문 리뷰를 하고 있는데, 블로그를 쓰다보면 회사 영향인지 몰라도 사업화를 하고 싶어서 움찔거리곤 합니다. 이번 프로젝트는 짧은 기간에 적은 시간 투자로 만들 수 있을 것이라 착각한 부분이 있습니다. 다음에 또 이런 프로젝트 팀을 만들 것 같긴합니다만.. 그 때 이 글을 다시 읽으면서, 더 잘 할 수 있을지 않을까 합니다.

 

이상으로 저의 짧은 프로젝트 경험담이었습니다. 읽어주셔서 감사합니다.

저를 믿어주시고 같이 참여해주신 팀원분들 너무 감사합니다.

 

댓글