Skip to content

Latest commit

ย 

History

History
124 lines (79 loc) ยท 4.61 KB

File metadata and controls

124 lines (79 loc) ยท 4.61 KB

Memoir AI (StyleShot + FastAPI)

์ด ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋Š” ์ดํ™”์—ฌ์ž๋Œ€ํ•™๊ต 2025-1ํ•™๊ธฐ ์บก์Šคํ†ค๋””์ž์ธ โ€˜๊ทธ๋กœ์“ฐโ€™ ์ˆ˜์—…์˜ 28ํŒ€ HUK ํ”„๋กœ์ ํŠธ์ธ memoir์˜ AI ๋ถ€๋ถ„์„ ๋‹ค๋ฃจ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋ณธ ํ”„๋กœ์ ํŠธ๋Š” open source AI ๋ชจ๋ธ์ธ StyleShot์„ ์‚ฌ์šฉํ•˜์—ฌ, ์‚ฌ์šฉ์ž๊ฐ€ ์„ ํƒํ•œ ์Šคํƒ€์ผ ์ด๋ฏธ์ง€๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ๊ฐœ์ธํ™”๋œ ์ „์‹œ ํ‹ฐ์ผ“ ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ธฐ๋Šฅ์„ FastAPI ์„œ๋ฒ„๋กœ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.


1. ๋ ˆํฌ์ง€ํ† ๋ฆฌ ๋ฐ ๋ชจ๋ธ ํด๋ก 

๋จผ์ € ํ”„๋กœ์ ํŠธ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์™€ StyleShot ๋ชจ๋ธ์„ ๋กœ์ปฌ์— ํด๋ก ํ•ฉ๋‹ˆ๋‹ค.

# memoir AI ์ฝ”๋“œ ํด๋ก 
git clone https://github.com/capstone-huk/AIcode.git

# StyleShot ๋ชจ๋ธ ํด๋ก  (memoir ํด๋” ๋‚ด๋ถ€์—์„œ ์‹คํ–‰)
cd AIcode/memoir
git clone https://github.com/open-mmlab/StyleShot

2. ํ™˜๊ฒฝ ์„ค์ •

์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด Python ๊ฐ€์ƒํ™˜๊ฒฝ์„ ๋งŒ๋“ค๊ณ  ํ•„์š”ํ•œ ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

# Conda ๊ฐ€์ƒํ™˜๊ฒฝ ์ƒ์„ฑ ๋ฐ ํ™œ์„ฑํ™”
conda create -n memoir python=3.10 -y
conda activate memoir

# requirements.txt ์„ค์น˜
pip install -r requirements.txt

3. ๋ชจ๋ธ ๊ฐ€์ค‘์น˜ ๋‹ค์šด๋กœ๋“œ

StyleShot ๋ชจ๋ธ์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๊ฐ€์ค‘์น˜(weight) ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.
์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋ฉด memoir/models/ ํด๋”๊ฐ€ ์ƒ์„ฑ๋˜๊ณ , ๊ทธ ์•ˆ์— ํ•„์š”ํ•œ ๋ชจ๋ธ ํŒŒ์ผ๋“ค์ด ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

# ์‹คํ–‰ ๊ถŒํ•œ ๋ถ€์—ฌ
chmod +x download_weights.sh

# ๊ฐ€์ค‘์น˜ ๋‹ค์šด๋กœ๋“œ ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰
./download_weights.sh

4. ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์„ค์ •

S3 ์—ฐ๋™์„ ์œ„ํ•ด .env ํŒŒ์ผ์„ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
memoir ํด๋” ๋‚ด์— .env ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ณ  ๋ฉ”์ผ๋กœ ์•ˆ๋‚ด๋ฐ›์€ ์ฝ”๋“œ๋ฅผ ๋„ฃ์–ด ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

5. main.py ํ•จ์ˆ˜ ์‹คํ–‰

main.py๋Š” FastAPI ๊ธฐ๋ฐ˜ ์„œ๋ฒ„์˜ ๋ฉ”์ธ ์ฝ”๋“œ๋กœ, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฃผ์š” ๊ธฐ๋Šฅ์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค:

  • ์‚ฌ์šฉ์ž๊ฐ€ ์„ ํƒํ•œ ์Šคํƒ€์ผ ์ด๋ฏธ์ง€(style_reference)์˜ URL๋“ค์„ List ํ˜•ํƒœ๋กœ ์ž…๋ ฅ๋ฐ›์Šต๋‹ˆ๋‹ค.
  • ๊ฐ ์Šคํƒ€์ผ ์ด๋ฏธ์ง€ URL์— ๋Œ€ํ•ด ๋ณ‘๋ ฌ๋กœ ํ‹ฐ์ผ“ ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. (/generate/ ์—”๋“œํฌ์ธํŠธ ์‚ฌ์šฉ)
    • content_image ํด๋”์— ์žˆ๋Š” ์‚ฌ์ง„๋“ค ์ค‘ ๋ฌด์ž‘์œ„๋กœ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•˜์—ฌ StyleShot ๋ชจ๋ธ์— ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
    • ์„ ํƒ๋œ ์Šคํƒ€์ผ ์ด๋ฏธ์ง€์™€ content ์ด๋ฏธ์ง€๋ฅผ ์กฐํ•ฉํ•ด ํ‹ฐ์ผ“ ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
    • ์ƒ์„ฑ๋œ ์ด๋ฏธ์ง€๋ฅผ S3์— ์—…๋กœ๋“œํ•˜๊ณ , ๊ฒฐ๊ณผ ์ด๋ฏธ์ง€์˜ URL์„ ์‘๋‹ต์œผ๋กœ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  • ํ…Œ์ŠคํŠธ์šฉ ์—”๋“œํฌ์ธํŠธ์ธ /test-upload/๋ฅผ ํ†ตํ•ด S3 ์—…๋กœ๋“œ ๊ธฐ๋Šฅ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๊ทธ ์™ธ์—๋„ CORS ์„ค์ •, S3 ์—…๋กœ๋“œ ํ•จ์ˆ˜, FastAPI ์•ฑ ์ดˆ๊ธฐํ™” ๊ด€๋ จ ์ฝ”๋“œ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

6. ์„œ๋ฒ„ ์‹คํ–‰

์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ๋กœ์ปฌ์—์„œ FastAPI ์„œ๋ฒ„๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

uvicorn main:app --host 0.0.0.0 --port 8000

7. ์—”๋“œํฌ์ธํŠธ ํ…Œ์ŠคํŠธ

FastAPI ์„œ๋ฒ„๊ฐ€ ์‹คํ–‰ ์ค‘์ผ ๋•Œ, ์•„๋ž˜์˜ ๋ช…๋ น์–ด๋กœ API๋ฅผ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


/test-upload/ (S3 ์—…๋กœ๋“œ ํ…Œ์ŠคํŠธ)

curl -X POST http://localhost:8000/test-upload/

/generate/ (์Šคํƒ€์ผ ์ด๋ฏธ์ง€ ๊ธฐ๋ฐ˜ ํ‹ฐ์ผ“ ์ƒ์„ฑ)

curl -X POST http://localhost:8000/generate/ \
  -F "style_url=https://upload.wikimedia.org/wikipedia/commons/thumb/6/6e/Golde33443.jpg/640px-Golde33443.jpg"

ํ•ด๋‹น API๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ์Šคํƒ€์ผ ์ด๋ฏธ์ง€ URL์„ ๊ธฐ๋ฐ˜์œผ๋กœ content ์ด๋ฏธ์ง€๋ฅผ ํ•ฉ์„ฑํ•˜์—ฌ ์ƒˆ๋กœ์šด ํ‹ฐ์ผ“ ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•œ ํ›„, ๊ฒฐ๊ณผ๋ฅผ S3์— ์ €์žฅํ•˜๊ณ  ํ•ด๋‹น URL์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.


ํ”„๋กœ์ ํŠธ ์š”์•ฝ

  • ๋ณธ ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋Š” ์ดํ™”์—ฌ์ž๋Œ€ํ•™๊ต 2025-1ํ•™๊ธฐ ์บก์Šคํ†ค๋””์ž์ธ '๊ทธ๋กœ์“ฐ' ์ˆ˜์—…์˜ 28ํŒ€ HUK์˜ ํ”„๋กœ์ ํŠธ memoir์—์„œ, AI ์ด๋ฏธ์ง€ ์ƒ์„ฑ ์„œ๋ฒ„ ๋ถ€๋ถ„๋งŒ์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค.
  • ์‚ฌ์šฉ์ž๋Š” ์Šคํƒ€์ผ ์ด๋ฏธ์ง€ URL์„ ์ž…๋ ฅํ•˜๋ฉด, ์ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ „์‹œ ํ‹ฐ์ผ“ ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ด๋ฏธ์ง€ ์ƒ์„ฑ์—๋Š” ์˜คํ”ˆ์†Œ์Šค ๋ชจ๋ธ StyleShot์„ ์‚ฌ์šฉํ•˜๋ฉฐ, FastAPI๋ฅผ ํ†ตํ•ด API๋กœ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค.
  • ์ตœ์ข… ์ƒ์„ฑ๋œ ํ‹ฐ์ผ“ ์ด๋ฏธ์ง€๋Š” AWS S3์— ์ €์žฅ๋˜๋ฉฐ, ํด๋ผ์ด์–ธํŠธ๋Š” ํ•ด๋‹น URL์„ ์‘๋‹ต์œผ๋กœ ๋ฐ›์Šต๋‹ˆ๋‹ค.

๊ธฐ์ˆ  ์Šคํƒ

  • AI ๋ชจ๋ธ: StyleShot
  • ์„œ๋ฒ„ ํ”„๋ ˆ์ž„์›Œํฌ: FastAPI
  • ๋ชจ๋ธ ๋ฐฐํฌ ๋ฐฉ์‹: ๋กœ์ปฌ ๋˜๋Š” EC2 ํ™˜๊ฒฝ์—์„œ uvicorn ์‹คํ–‰
  • ์ด๋ฏธ์ง€ ์ €์žฅ: AWS S3 ์—ฐ๋™
  • ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ: ์—ฌ๋Ÿฌ ์Šคํƒ€์ผ ์ด๋ฏธ์ง€ ์š”์ฒญ์„ ๋™์‹œ์— ์ฒ˜๋ฆฌ

์ฐธ๊ณ 

  • StyleShot ์›๋ณธ ๋ ˆํฌ์ง€ํ† ๋ฆฌ: https://github.com/open-mmlab/StyleShot
  • ํ‹ฐ์ผ“ ์ด๋ฏธ์ง€๋Š” ๊ฐœ์ธ์ ์ธ ๊ฐ์ƒ ๊ธฐ๋ก ๋ฐ ์ „์‹œ ์•„์นด์ด๋น™ ๊ฒฝํ—˜์„ ์œ„ํ•ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.