Hugging Face Transformers๋ฅผ ์ฌ์ฉํด Vision Transformer(ViT) ๋ชจ๋ธ์ beans ๋ฐ์ดํฐ์ ์ ํ์ธํ๋ํ์ฌ 98.5% ํ๊ฐ ์ ํ๋ ๋ฌ์ฑ
Fine-Tune ViT for Image Classification with ๐ค Transformers
AI ์์ฝ
Context
Transformer ์ํคํ ์ฒ๋ NLP ๋ถ์ผ์์ ํ์ ์ ๊ฐ์ ธ์์ผ๋, ์ปดํจํฐ ๋น์ ๋ถ์ผ์ ์ ์ฉํ๊ธฐ ์ํ ๋ฐฉ๋ฒ๋ก ์ด ๋ถ์กฑํ๋ค. Vision Transformer(ViT)๋ ์ด๋ฏธ์ง๋ฅผ NLP์ ํ ํฐํ ๋ฐฉ์์ฒ๋ผ ํจ์น๋ก ๋ถํ ํ์ฌ ์ฒ๋ฆฌํ๋ ์ ๊ทผ๋ฒ์ ์ ์ํ์ผ๋, ์ค์ ์ด๋ฏธ์ง ๋ถ๋ฅ ์์ ์ ์ ์ฉํ๋ ๊ตฌ์ฒด์ ์ธ ํ์ธํ๋ ํ๋ก์ธ์ค๊ฐ ํ์ํ๋ค.
Technical Solution
- ์ด๋ฏธ์ง๋ฅผ 16x16 ํฝ์ ํจ์น๋ก ๋ถํ ํ๊ณ ์ ํ ํฌ์์ผ๋ก ์๋ฒ ๋ฉ: google/vit-base-patch16-224-in21k ๋ชจ๋ธ์ ViTImageProcessor๋ฅผ ์ฌ์ฉํ์ฌ 224x224 ํฌ๊ธฐ๋ก ์ ๊ทํ ๋ฐ ์ ๊ท๋ถํฌ(mean=[0.5, 0.5, 0.5], std=[0.5, 0.5, 0.5])๋ก ์ ๊ทํ
- Hugging Face datasets ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก beans ๋ฐ์ดํฐ์ (3๊ฐ ํด๋์ค, ์ด ์ด๋ฏธ์ง ์ํ) ๋ก๋ ๋ฐ ์ ์ฒ๋ฆฌ: ClassLabel ํน์ฑ์ ํ์ฉํด 'angular_leaf_spot', 'bean_rust', 'healthy' ํด๋์ค ๋งคํ
- Trainer API๋ฅผ ํตํ ์๋ํ๋ ํ์ธํ๋: TrainingArguments์์ ์ํฌํฌ ์, ๋ฐฐ์น ํฌ๊ธฐ, ํ์ต๋ฅ ์ค์ ํ์ฌ ๋ฐ๋ณต ์ํ
- ํ์ต๋ ๋ชจ๋ธ์ Hugging Face Hub๋ก ํธ์: push_to_hub ํ๋ผ๋ฏธํฐ๋ฅผ True๋ก ์ค์ ํ์ฌ 'nateraw/vit-base-beans'๋ก ๊ณต๊ฐ ๋ฐฐํฌ
- ์ด๋ฏธ์ง ๊ทธ๋ฆฌ๋ ์๊ฐํ ํจ์๋ก ํด๋์ค๋ณ ์ํ ๊ฒ์ฆ: PIL๊ณผ ImageDraw๋ฅผ ํ์ฉํด ๊ฐ ํด๋์ค๋ณ 3๊ฐ ์์๋ฅผ ํ์
Impact
- ํ๊ฐ ์ ํ๋(eval_accuracy): 0.985 (98.5%)
- ํ๊ฐ ์์ค(eval_loss): 0.0637
- ํ๊ฐ ์ฒ๋ฆฌ ์๋: ์ด๋น 62.356 ์ํ, ์ด๋น 7.97 ์คํ
Key Takeaway
Vision Transformer๋ฅผ ํ์ฉํ ์ด๋ฏธ์ง ๋ถ๋ฅ ์์ ์ Hugging Face์ ํตํฉ ๋๊ตฌ(datasets, transformers, Trainer)๋ฅผ ์ฌ์ฉํ๋ฉด NLP ํ์ธํ๋๊ณผ ๋์ผํ๊ฒ ๊ฐ๋จํ๊ฒ ์ํํ ์ ์๋ค. ์ฌ์ ํ์ต๋ ๋ชจ๋ธ์ ViTImageProcessor๋ฅผ ๋ฐ๋์ ์ฌ์ฉํ์ฌ ์ผ๊ด๋ ์ด๋ฏธ์ง ์ ์ฒ๋ฆฌ๋ฅผ ๋ณด์ฅํด์ผ ๋ชจ๋ธ์ด ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํ๋ค.
์ค์ฒ ํฌ์ธํธ
์ปดํจํฐ ๋น์ ๋ถ๋ฅ ์์ ์ ์ํํ๋ ์์ง๋์ด๋ google/vit-base-patch16-224 ๊ฐ์ ์ฌ์ ํ์ต ViT ๋ชจ๋ธ์ ๊ณต์ ViTImageProcessor๋ฅผ ํ์ดํ๋ผ์ธ์ ํตํฉํ๊ณ , ๊ณต๊ฐ ๋ฐ์ดํฐ์ (beans, CIFAR-10 ๋ฑ)์์ Trainer API๋ก ํ์ธํ๋ํ๋ฉด 98% ์ด์์ ์ ํ๋๋ฅผ ๋น ๋ฅด๊ฒ ๋ฌ์ฑํ ์ ์๋ค.