| # Hugging Face Processor Practice |
|
|
| μ΄ νλ‘μ νΈλ Hugging Face `Tokenizer`, `ImageProcessor`, `Processor` μ€μ΅ μ½λλ₯Ό VS Codeμμ μ€ννκΈ° μ’κ² μ 리ν μμ μ
λλ€. |
|
|
| μ°Έκ³ νμ΄μ§: `https://ds31x.github.io/wiki/hf/hf_processor/` |
|
|
| ## κ΅¬μ± |
|
|
| ```text |
| hf_processor_vscode/ |
| βββ README.md |
| βββ requirements.txt |
| βββ pyproject.toml |
| βββ scripts/ |
| β βββ 00_check_environment.py |
| β βββ 01_tokenizer.py |
| β βββ 02_image_processor.py |
| β βββ 03_processor_clip.py |
| β βββ 04_custom_image_processor_roundtrip.py |
| β βββ run_all.py |
| βββ src/ |
| β βββ hf_processor_practice/ |
| β βββ image_processing_simple_vision.py |
| β βββ utils.py |
| βββ notebooks/ |
| β βββ hf_processor_practice.ipynb |
| βββ reports/ |
| β βββ result_analysis.md |
| β βββ agent_log.md |
| βββ data/ |
| βββ outputs/ |
| ``` |
|
|
| ## νκ²½ λ§λ€κΈ° |
|
|
| ### λ°©λ² 1: venv |
|
|
| ```bash |
| python -m venv .venv |
| |
| # Windows PowerShell |
| .venv\Scripts\Activate.ps1 |
| |
| # macOS/Linux |
| source .venv/bin/activate |
| |
| pip install -U pip |
| pip install -r requirements.txt |
| pip install -e . |
| ``` |
|
|
| ### λ°©λ² 2: conda |
|
|
| ```bash |
| conda create -n hfprocessor python=3.11 -y |
| conda activate hfprocessor |
| pip install -r requirements.txt |
| pip install -e . |
| ``` |
|
|
| ## μ€ν λ°©λ² |
|
|
| μ 체 μ€ν: |
|
|
| ```bash |
| python scripts/run_all.py |
| ``` |
|
|
| κ°λ³ μ€ν: |
|
|
| ```bash |
| python scripts/00_check_environment.py |
| python scripts/01_tokenizer.py |
| python scripts/02_image_processor.py |
| python scripts/03_processor_clip.py |
| python scripts/04_custom_image_processor_roundtrip.py |
| ``` |
|
|
| ## μΈν°λ·μ΄ μμ λ |
|
|
| κΈ°λ³Έμ μΌλ‘λ Hugging Face Hubμμ `bert-base-uncased`, `google/vit-base-patch16-224`, `openai/clip-vit-base-patch32`λ₯Ό λΆλ¬μ€λ €κ³ μλν©λλ€. |
|
|
| μΈν°λ·μ΄ μκ±°λ λͺ¨λΈ λ€μ΄λ‘λκ° μ€ν¨νλ©΄ λ€μ fallbackμ΄ μλμΌλ‘ λμν©λλ€. |
|
|
| - Tokenizer: λ‘컬 tiny BERT tokenizer μμ± |
| - ImageProcessor: λ‘컬 ViTImageProcessor μμ± |
| - Processor: λ‘컬 CLIPProcessor κ΅¬μ± |
| - μ΄λ―Έμ§ νμΌ: λ€μ΄λ‘λ μ€ν¨ μ placeholder μ΄λ―Έμ§ μμ± |
|
|
| μ€νλΌμΈ λͺ¨λλ‘ λͺ
νν μ€ννλ €λ©΄: |
|
|
| ```bash |
| # macOS/Linux |
| TRANSFORMERS_OFFLINE=1 HF_HUB_OFFLINE=1 python scripts/run_all.py |
| |
| # Windows PowerShell |
| $env:TRANSFORMERS_OFFLINE="1" |
| $env:HF_HUB_OFFLINE="1" |
| python scripts/run_all.py |
| ``` |
|
|
| ## μ€μ΅ λ΄μ© |
|
|
| ### 01. Tokenizer |
|
|
| - `AutoTokenizer.from_pretrained()` μ¬μ© |
| - λ¬Έμ₯μ `input_ids`, `token_type_ids`, `attention_mask`λ‘ λ³ν |
| - `batch_decode()`λ‘ ν ν°ν κ²°κ³Ό νμΈ |
| - `save_pretrained()` / `from_pretrained()` μ μ₯ λ° λ³΅μ |
|
|
| ### 02. ImageProcessor |
|
|
| - `AutoImageProcessor.from_pretrained()` μ¬μ© |
| - PIL μ΄λ―Έμ§λ₯Ό `pixel_values` ν
μλ‘ λ³ν |
| - μΆλ ₯ shape νμΈ: μΌλ°μ μΌλ‘ `(batch, channel, height, width)` |
| - `preprocessor_config.json` μ μ₯ λ° λ³΅μ |
|
|
| ### 03. Processor / CLIP |
|
|
| - `AutoProcessor` λλ `CLIPProcessor` μ¬μ© |
| - ν
μ€νΈμ μ΄λ―Έμ§λ₯Ό λμμ μ μ²λ¦¬ |
| - μΆλ ₯ key: `pixel_values`, `input_ids`, `attention_mask` λ± |
| - Processor μ μ₯ λ° λ³΅μ |
|
|
| ### 04. Custom ImageProcessor |
|
|
| - `ImageProcessingMixin` κΈ°λ° μ»€μ€ν
μ΄λ―Έμ§ νλ‘μΈμ ꡬν |
| - resize, normalize, tensor λ³ν μν |
| - `save_pretrained()` / `from_pretrained()` round-trip νμΈ |
| - νκ²½μ λ°λΌ `AutoImageProcessor(..., trust_remote_code=True)` λ‘λλ μλ |
|
|
| ## ν
μ€νΈ λ©λͺ¨ |
|
|
| μ΄ νλ‘μ νΈλ λ€μμ νμΈνμ΅λλ€. |
|
|
| - λͺ¨λ `.py` νμΌ λ¬Έλ² κ²μ¬ ν΅κ³Ό |
| - μΈν°λ·μ΄ μλ νκ²½μμ fallback λͺ¨λλ‘ `python scripts/run_all.py` μ€ν μ±κ³΅ |
| - ν
μ€νΈ λ‘κ·Έ: `outputs/logs/run_all_test.log` |
|
|
| μΌλΆ νκ²½, νΉν Python 3.13 + torchvision μ‘°ν©μμλ `torchvision::nms` κ΄λ ¨ μ€λ₯κ° λ μ μμ΅λλ€. κ·Έλ° κ²½μ° Python 3.10 λλ 3.11 νκ²½μ κΆμ₯ν©λλ€. |
|
|