Hugging Face Processor Practice
μ΄ νλ‘μ νΈλ Hugging Face Tokenizer, ImageProcessor, Processor μ€μ΅ μ½λλ₯Ό VS Codeμμ μ€ννκΈ° μ’κ² μ 리ν μμ μ
λλ€.
μ°Έκ³ νμ΄μ§: https://ds31x.github.io/wiki/hf/hf_processor/
ꡬμ±
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
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
conda create -n hfprocessor python=3.11 -y
conda activate hfprocessor
pip install -r requirements.txt
pip install -e .
μ€ν λ°©λ²
μ 체 μ€ν:
python scripts/run_all.py
κ°λ³ μ€ν:
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 μ΄λ―Έμ§ μμ±
μ€νλΌμΈ λͺ¨λλ‘ λͺ νν μ€ννλ €λ©΄:
# 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 νκ²½μ κΆμ₯ν©λλ€.