# ๐Ÿงช API ํ…Œ์ŠคํŠธ ๊ฐ€์ด๋“œ ์ด ๋””๋ ‰ํ† ๋ฆฌ๋Š” ์ธํŽ˜์ธํŒ… ์„œ๋ฒ„์˜ API ์—”๋“œํฌ์ธํŠธ๋“ค์„ ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์œ„ํ•œ ๋„๊ตฌ๋“ค์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ## ๐Ÿ“ ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ ``` tests/ โ”œโ”€โ”€ images/ # ํ…Œ์ŠคํŠธ์šฉ ์ƒ˜ํ”Œ ์ด๋ฏธ์ง€๋“ค โ”œโ”€โ”€ results/ # ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ ์ด๋ฏธ์ง€๋“ค โ”œโ”€โ”€ scripts/ # ํ…Œ์ŠคํŠธ ์Šคํฌ๋ฆฝํŠธ๋“ค โ””โ”€โ”€ README.md # ์ด ํŒŒ์ผ ``` ## ๐Ÿ–ผ๏ธ ํ…Œ์ŠคํŠธ ์ด๋ฏธ์ง€ ### ์ƒ์„ฑ๋œ ํ…Œ์ŠคํŠธ ์ด๋ฏธ์ง€๋“ค - **๊ธฐ๋ณธ ํ…Œ์ŠคํŠธ ์ด๋ฏธ์ง€** - `test_image_256.png` / `test_mask_256.png` (256x256) - `test_image_512.png` / `test_mask_512.png` (512x512) - `test_image_1024.png` / `large_mask_1024.png` (1024x1024) - **๋ณต์žกํ•œ ํ…Œ์ŠคํŠธ ์ด๋ฏธ์ง€** - `complex_image_512.png` / `complex_mask_512.png` (512x512) - ์ฒดํฌ๋ฌด๋Šฌ ํŒจํ„ด๊ณผ ์—ฌ๋Ÿฌ ๋„ํ˜•๋“ค์ด ํฌํ•จ๋œ ๋ณต์žกํ•œ ์ด๋ฏธ์ง€ ### ํ…Œ์ŠคํŠธ ์ด๋ฏธ์ง€ ์ƒ์„ฑ ```bash cd tests/scripts python generate_test_images.py ``` ## ๐Ÿš€ API ํ…Œ์ŠคํŠธ ### ์ „์ฒด ํ…Œ์ŠคํŠธ ์‹คํ–‰ ```bash cd tests/scripts python test_api.py ``` ### ๋‹จ์ผ ํ…Œ์ŠคํŠธ ์‹คํ–‰ ```bash # ํ—ฌ์Šค ์ฒดํฌ๋งŒ python test_api.py --single health # ์„œ๋ฒ„ ์„ค์ • ์ •๋ณด๋งŒ python test_api.py --single config # ์ธํŽ˜์ธํŒ… ํ…Œ์ŠคํŠธ๋งŒ python test_api.py --single inpaint # ๋ฐฐ๊ฒฝ ์ œ๊ฑฐ ํ…Œ์ŠคํŠธ๋งŒ python test_api.py --single rembg # ํ”Œ๋Ÿฌ๊ทธ์ธ ํ…Œ์ŠคํŠธ๋งŒ python test_api.py --single plugin ``` ### ๋‹ค๋ฅธ ์„œ๋ฒ„ URL๋กœ ํ…Œ์ŠคํŠธ ```bash python test_api.py --url http://192.168.1.100:8000 ``` ## ๐Ÿ“Š ํ…Œ์ŠคํŠธ ํ•ญ๋ชฉ ### 1. ํ—ฌ์Šค ์ฒดํฌ (`/health`) - ์„œ๋ฒ„ ์ƒํƒœ ํ™•์ธ - ๊ฐ€๋™ ์‹œ๊ฐ„ ํ™•์ธ ### 2. ์„œ๋ฒ„ ์„ค์ • ์ •๋ณด (`/api/v1/server-config`) - ์‹œ์Šคํ…œ ์ •๋ณด (Jetson Xavier / x86_64) - ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ชจ๋ธ ๋ชฉ๋ก - ์ตœ๋Œ€ ํŒŒ์ผ ํฌ๊ธฐ ์ œํ•œ ### 3. ์ƒ˜ํ”Œ๋Ÿฌ ๋ชฉ๋ก (`/api/v1/samplers`) - Stable Diffusion ์ƒ˜ํ”Œ๋Ÿฌ ๋ชฉ๋ก ํ™•์ธ ### 4. ์ธํŽ˜์ธํŒ… API (`/api/v1/inpaint`) - Simple LAMA ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•œ ์ธํŽ˜์ธํŒ… - ๋‹ค์–‘ํ•œ ํฌ๊ธฐ์˜ ์ด๋ฏธ์ง€ ํ…Œ์ŠคํŠธ - ํ”„๋กฌํ”„ํŠธ, ์‹œ๋“œ, ์„ค์ •๊ฐ’ ํ…Œ์ŠคํŠธ ### 5. ๋ฐฐ๊ฒฝ ์ œ๊ฑฐ API (`/api/v1/remove_bg`) - REMBG ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•œ ๋ฐฐ๊ฒฝ ์ œ๊ฑฐ - ๊ฒฐ๊ณผ ์ด๋ฏธ์ง€์™€ ๋งˆ์Šคํฌ ๋ฐ˜ํ™˜ ### 6. ํ”Œ๋Ÿฌ๊ทธ์ธ API (`/api/v1/run_plugin_gen_image`) - ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ํ†ตํ•œ ์ด๋ฏธ์ง€ ์ƒ์„ฑ - REMBG ํ”Œ๋Ÿฌ๊ทธ์ธ ํ…Œ์ŠคํŠธ ## ๐Ÿ”ง ํ…Œ์ŠคํŠธ ์ „ ์ค€๋น„์‚ฌํ•ญ ### 1. ์„œ๋ฒ„ ์‹คํ–‰ ```bash # ๊ฐœ๋ฐœ ๋ชจ๋“œ๋กœ ์‹คํ–‰ python main.py --dev # ๋˜๋Š” ํ”„๋กœ๋•์…˜ ๋ชจ๋“œ๋กœ ์‹คํ–‰ python main.py --host 0.0.0.0 --port 8000 --workers 1 ``` ### 2. ์˜์กด์„ฑ ์„ค์น˜ ```bash pip install -r requirements.txt ``` ### 3. ํ…Œ์ŠคํŠธ ์ด๋ฏธ์ง€ ์ƒ์„ฑ ```bash cd tests/scripts python generate_test_images.py ``` ## ๐Ÿ“ˆ ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ ### ์„ฑ๊ณต์ ์ธ ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ ``` ๐Ÿงช ์ „์ฒด API ํ…Œ์ŠคํŠธ ์‹œ์ž‘ ================================================== ๐Ÿฅ ํ—ฌ์Šค ์ฒดํฌ ํ…Œ์ŠคํŠธ... โœ… ์„œ๋ฒ„ ์ƒํƒœ: healthy ๐Ÿ“Š ๊ฐ€๋™ ์‹œ๊ฐ„: 15.23์ดˆ โš™๏ธ ์„œ๋ฒ„ ์„ค์ • ์ •๋ณด ํ…Œ์ŠคํŠธ... โœ… ์„œ๋ฒ„ ์„ค์ • ์กฐํšŒ ์„ฑ๊ณต ๐Ÿ–ฅ๏ธ ์‹œ์Šคํ…œ: Jetson Xavier ๐ŸŽฎ ๋””๋ฐ”์ด์Šค: cuda ๐Ÿ“ ์ตœ๋Œ€ ํŒŒ์ผ ํฌ๊ธฐ: 25MB ๐ŸŽฏ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ชจ๋ธ: 3๊ฐœ ๐ŸŽจ ์ธํŽ˜์ธํŒ… ํ…Œ์ŠคํŠธ (test_image_512.png + test_mask_512.png)... โœ… ์ธํŽ˜์ธํŒ… ์„ฑ๊ณต! โฑ๏ธ ์ฒ˜๋ฆฌ ์‹œ๊ฐ„: 2.45์ดˆ ๐ŸŽฒ ์‚ฌ์šฉ๋œ ์‹œ๋“œ: 42 ๐Ÿ’พ ๊ฒฐ๊ณผ ์ด๋ฏธ์ง€ ์ €์žฅ: inpaint_result_test_image_512.png ================================================== ๐Ÿ“Š ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ ์š”์•ฝ ================================================== ํ—ฌ์Šค ์ฒดํฌ โœ… PASS ์„œ๋ฒ„ ์„ค์ • ์ •๋ณด โœ… PASS ์ƒ˜ํ”Œ๋Ÿฌ ๋ชฉ๋ก โœ… PASS ์ธํŽ˜์ธํŒ… (256x256) โœ… PASS ์ธํŽ˜์ธํŒ… (512x512) โœ… PASS ๋ฐฐ๊ฒฝ ์ œ๊ฑฐ โœ… PASS ํ”Œ๋Ÿฌ๊ทธ์ธ ์ด๋ฏธ์ง€ ์ƒ์„ฑ โœ… PASS ================================================== ์ „์ฒด: 7๊ฐœ, ์„ฑ๊ณต: 7๊ฐœ, ์‹คํŒจ: 0๊ฐœ ๐ŸŽ‰ ๋ชจ๋“  ํ…Œ์ŠคํŠธ๊ฐ€ ์„ฑ๊ณตํ–ˆ์Šต๋‹ˆ๋‹ค! ``` ### ์‹คํŒจํ•œ ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ ``` โŒ ์ธํŽ˜์ธํŒ… ์‹คํŒจ: 500 ๐Ÿ“ ์—๋Ÿฌ ๋ฉ”์‹œ์ง€: ์›Œ์ปค ๋งค๋‹ˆ์ €๊ฐ€ ์ดˆ๊ธฐํ™”๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค ``` ## ๐Ÿ› ๋ฌธ์ œ ํ•ด๊ฒฐ ### 1. ์—ฐ๊ฒฐ ์‹คํŒจ - ์„œ๋ฒ„๊ฐ€ ์‹คํ–‰ ์ค‘์ธ์ง€ ํ™•์ธ - ํฌํŠธ ๋ฒˆํ˜ธ๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ์ง€ ํ™•์ธ - ๋ฐฉํ™”๋ฒฝ ์„ค์ • ํ™•์ธ ### 2. ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ ์‹คํŒจ - GPU ๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑ ํ™•์ธ - ๋ชจ๋ธ ํŒŒ์ผ์ด ์˜ฌ๋ฐ”๋ฅธ ์œ„์น˜์— ์žˆ๋Š”์ง€ ํ™•์ธ - ๋กœ๊ทธ ํŒŒ์ผ์—์„œ ์ƒ์„ธ ์—๋Ÿฌ ํ™•์ธ ### 3. ํƒ€์ž„์•„์›ƒ ์—๋Ÿฌ - `timeout` ๊ฐ’์„ ๋Š˜๋ ค์„œ ์žฌ์‹œ๋„ - ์„œ๋ฒ„ ์„ฑ๋Šฅ ํ™•์ธ - ๋„คํŠธ์›Œํฌ ์ƒํƒœ ํ™•์ธ ## ๐Ÿ“ ๋กœ๊ทธ ํ™•์ธ ### ์„œ๋ฒ„ ๋กœ๊ทธ ```bash tail -f logs/main_server.log ``` ### ๋ชจ๋‹ˆํ„ฐ๋ง ๋กœ๊ทธ ```bash tail -f logs/monitoring.log ``` ## ๐Ÿ”„ ์ง€์†์  ํ…Œ์ŠคํŠธ ### ์ž๋™ ํ…Œ์ŠคํŠธ ์Šคํฌ๋ฆฝํŠธ ```bash #!/bin/bash while true; do echo "๐Ÿ”„ ํ…Œ์ŠคํŠธ ์‹คํ–‰ ์ค‘... $(date)" python test_api.py echo "โณ 60์ดˆ ๋Œ€๊ธฐ ์ค‘..." sleep 60 done ``` ์ด ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ฒ„์˜ ์•ˆ์ •์„ฑ์„ ์ง€์†์ ์œผ๋กœ ๋ชจ๋‹ˆํ„ฐ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.