File size: 3,850 Bytes
29d1fb6 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 | # 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 νκ²½μ κΆμ₯ν©λλ€.
|