--- title: Webtoon Lineart Cropper emoji: ๐Ÿค— colorFrom: yellow colorTo: blue sdk: gradio sdk_version: 5.25.2 app_file: app.py python_version: 3.12.10 pinned: false --- # Helix-Painting Data Tool ์›นํˆฐ PSD ํŒŒ์ผ์„ ์ด๋ฏธ์ง€ ํŒŒ์ผ(PNG)๋กœ ๋ณ€ํ™˜ํ•˜๊ณ , ์ปท ์ถ”์ถœ ๋ฐ ์ธ๋ฌผ ๊ฒ€์ถœ ๋“ฑ์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•˜๋Š” ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ## Prerequisites [Prerequisites](docs/PREREQUISITES.md) ## Setup a project [Setup a project](docs/SETUP.md) ## Features - **PSD โ†’ PNG ๋ณ€ํ™˜** ์›นํˆฐ PSD ํŒŒ์ผ์„ ๊ณ ํ•ด์ƒ๋„ PNG ์ด๋ฏธ์ง€๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค. - **์ปท ์ถ”์ถœ ๋ฐ ํ•„ํ„ฐ๋ง** ์ด๋ฏธ์ง€ ๋‚ด ํฐ์ƒ‰ ์˜์—ญ์„ ๊ธฐ์ค€์œผ๋กœ ์ปท ๋ฐ•์Šค๋ฅผ ์ถ”์ถœํ•˜๊ณ , ์ธ๋ฌผ ๊ฒ€์ถœ(face detector)๊ณผ ํƒœ๊น…(tagger) ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ์ปท ๋ณ„ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. - **๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ** ์ฒ˜๋ฆฌ ์†๋„๋ฅผ ๋†’์ด๊ธฐ ์œ„ํ•ด Python์˜ multiprocessing์„ ์‚ฌ์šฉํ•œ ๋ณ‘๋ ฌ ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ## Usage ### 1. PSD ํŒŒ์ผ์„ PNG ์ด๋ฏธ์ง€๋กœ ๋ณ€ํ™˜ `convert_psd_to_png.py` ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ PSD ํŒŒ์ผ๋“ค์„ PNG ์ด๋ฏธ์ง€๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ```shell python scripts/convert_psd_to_png.py --directory --output [--visible_layers layer1 layer2 ...] [--invisible_layers layer3 layer4 ...] ``` - `--directory` : PSD ํŒŒ์ผ์„ ๊ฒ€์ƒ‰ํ•  ๋””๋ ‰ํ† ๋ฆฌ - `--output` : ๋ณ€ํ™˜๋œ PNG ํŒŒ์ผ์„ ์ €์žฅํ•  ๋””๋ ‰ํ† ๋ฆฌ - `--visible_layers` / `--invisible_layers` : ๋ณด์ด๊ฑฐ๋‚˜ ์ˆจ๊ธธ ๋ ˆ์ด์–ด๋“ค์„ ์ง€์ • ### 2. ์ด๋ฏธ์ง€ ์ปท ์ถ”์ถœ ๋ฐ ํ•„ํ„ฐ๋ง `parse_cut_from_page.py` ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ปท ๋ฐ•์Šค๋ฅผ ์ถ”์ถœํ•˜๊ณ , ๊ฐ ์ปท์— ๋Œ€ํ•ด ํ•„ํ„ฐ๋ง๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ```shell python scripts/parse_cut_from_page.py --lineart --flat --segmentation --color --output [--num_process ] ``` - `--lineart` : ๋ผ์ธ์•„ํŠธ ์ด๋ฏธ์ง€๊ฐ€ ์ €์žฅ๋œ ๋””๋ ‰ํ† ๋ฆฌ - `--flat` : ์ฑ„์ƒ‰ ์ „ ํ‰๋ฉด ์ด๋ฏธ์ง€๊ฐ€ ์ €์žฅ๋œ ๋””๋ ‰ํ† ๋ฆฌ - `--segmentation` : ์„ธ๋ถ„ํ™” ์ด๋ฏธ์ง€๊ฐ€ ์ €์žฅ๋œ ๋””๋ ‰ํ† ๋ฆฌ - `--color` : ์ปฌ๋Ÿฌ ์ด๋ฏธ์ง€๊ฐ€ ์ €์žฅ๋œ ๋””๋ ‰ํ† ๋ฆฌ - `--output` : ์ž˜๋ผ๋‚ธ ์ปท ์ด๋ฏธ์ง€๋ฅผ ์ €์žฅํ•  ๋””๋ ‰ํ† ๋ฆฌ - `--num_process` : ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ์— ์‚ฌ์šฉํ•  ํ”„๋กœ์„ธ์Šค ์ˆ˜ (์„ ํƒ๊ฐ’) ### 3. ํƒœ๊น… ๋ฐ ํ•„ํ„ฐ๋ง ์‹คํ–‰ `run_tag_filter.py` ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฏธ์ง€์— ํƒœ๊น… ๋ฐ ํ•„ํ„ฐ๋ง์„ ์ˆ˜ํ–‰ํ•˜๊ณ , ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ```shell python scripts/run_tag_filter.py --input_dir --output_dir [--ext png jpg jpeg] ``` - `--input_dir` : ํ•„ํ„ฐ๋งํ•  ์ด๋ฏธ์ง€๋“ค์ด ์ €์žฅ๋œ ๋””๋ ‰ํ† ๋ฆฌ - `--output_dir` : ํ•„ํ„ฐ๋ง ๊ฒฐ๊ณผ ์ด๋ฏธ์ง€ ๋ฐ ์บก์…˜ ํŒŒ์ผ์„ ์ €์žฅํ•  ๋””๋ ‰ํ† ๋ฆฌ - `--ext` : ์ฒ˜๋ฆฌํ•  ์ด๋ฏธ์ง€ ํ™•์žฅ์ž ๋ชฉ๋ก (๊ธฐ๋ณธ๊ฐ’: png) --- ์ด์™€ ๊ฐ™์ด ๊ฐ ์Šคํฌ๋ฆฝํŠธ๋Š” ๋ณ„๋„์˜ ์ธ์ž๋“ค์„ ๋ฐ›์•„์„œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋ฉฐ, ์Šคํฌ๋ฆฝํŠธ ๋‚ด๋ถ€์˜ ๋กœ์ง์— ๋”ฐ๋ผ PSD ๋ณ€ํ™˜, ์ปท ์ถ”์ถœ, ์ธ๋ฌผ ๊ฒ€์ถœ/ํƒœ๊น…, ์บก์…˜ ํŒŒ์ผ ์ƒ์„ฑ ๋“ฑ์˜ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ### 4. Gradio ๋ฐ๋ชจ ํŽ˜์ด์ง€ ์•„๋ž˜ ๋ช…๋ ์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ Gradio ๋ฐ๋ชจ ํŽ˜์ด์ง€๋กœ ์›ํ•˜๋Š” PNGํŒŒ์ผ์„ ์—…๋กœ๋“œํ•˜์—ฌ ํ•„ํ„ฐ๋ง๋œ ์ด๋ฏธ์ง€ ์ปท ์ถ”์ถœ ๊ฒฐ๊ณผ๋ฅผ ZIPํŒŒ์ผ ํ˜น์€ PSDํŒŒ์ผ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ```shell python app.py ```