File size: 4,710 Bytes
17c6d62 |
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 |
# AltCLIP
## ๊ฐ์[[overview]]
AltCLIP ๋ชจ๋ธ์ Zhongzhi Chen, Guang Liu, Bo-Wen Zhang, Fulong Ye, Qinghong Yang, Ledell Wu์ [AltCLIP: Altering the Language Encoder in CLIP for Extended Language Capabilities](https://arxiv.org/abs/2211.06679v2) ๋
ผ๋ฌธ์์ ์ ์๋์์ต๋๋ค. AltCLIP(CLIP์ ์ธ์ด ์ธ์ฝ๋๋ฅผ ๋ณ๊ฒฝํ์ฌ ์ธ์ด ๊ธฐ๋ฅ ํ์ฅ)์ ๋ค์ํ ์ด๋ฏธ์ง-ํ
์คํธ ๋ฐ ํ
์คํธ-ํ
์คํธ ์์ผ๋ก ํ๋ จ๋ ์ ๊ฒฝ๋ง์
๋๋ค. CLIP์ ํ
์คํธ ์ธ์ฝ๋๋ฅผ ์ฌ์ ํ๋ จ๋ ๋ค๊ตญ์ด ํ
์คํธ ์ธ์ฝ๋ XLM-R๋ก ๊ต์ฒดํ์ฌ, ๊ฑฐ์ ๋ชจ๋ ์์
์์ CLIP๊ณผ ์ ์ฌํ ์ฑ๋ฅ์ ์ป์ ์ ์์์ผ๋ฉฐ, ์๋ CLIP์ ๋ค๊ตญ์ด ์ดํด์ ๊ฐ์ ๊ธฐ๋ฅ๋ ํ์ฅ๋์์ต๋๋ค.
๋
ผ๋ฌธ์ ์ด๋ก์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
*๋ณธ ์ฐ๊ตฌ์์๋ ๊ฐ๋ ฅํ ์ด์ค ์ธ์ด ๋ฉํฐ๋ชจ๋ฌ ํํ ๋ชจ๋ธ์ ํ๋ จํ๋ ๊ฐ๋
์ ์ผ๋ก ๊ฐ๋จํ๊ณ ํจ๊ณผ์ ์ธ ๋ฐฉ๋ฒ์ ์ ์ํฉ๋๋ค. OpenAI์์ ์ถ์ํ ์ฌ์ ํ๋ จ๋ ๋ฉํฐ๋ชจ๋ฌ ํํ ๋ชจ๋ธ CLIP์์ ์์ํ์ฌ, ๊ทธ ํ
์คํธ ์ธ์ฝ๋๋ฅผ ์ฌ์ ํ๋ จ๋ ๋ค๊ตญ์ด ํ
์คํธ ์ธ์ฝ๋ XLM-R๋ก ๊ต์ฒดํ๊ณ , ๊ต์ฌ ํ์ต๊ณผ ๋์กฐ ํ์ต์ผ๋ก ๊ตฌ์ฑ๋ 2๋จ๊ณ ํ๋ จ ์คํค๋ง๋ฅผ ํตํด ์ธ์ด์ ์ด๋ฏธ์ง ํํ์ ์ ๋ ฌํ์ต๋๋ค. ์ฐ๋ฆฌ๋ ๊ด๋ฒ์ํ ์์
ํ๊ฐ๋ฅผ ํตํด ์ฐ๋ฆฌ์ ๋ฐฉ๋ฒ์ ๊ฒ์ฆํ์ต๋๋ค. ImageNet-CN, Flicker30k-CN, COCO-CN์ ํฌํจํ ์ฌ๋ฌ ์์
์์ ์๋ก์ด ์ต๊ณ ์ฑ๋ฅ์ ๋ฌ์ฑํ์ผ๋ฉฐ, ๊ฑฐ์ ๋ชจ๋ ์์
์์ CLIP๊ณผ ์ ์ฌํ ์ฑ๋ฅ์ ์ป์์ต๋๋ค. ์ด๋ CLIP์ ํ
์คํธ ์ธ์ฝ๋๋ฅผ ๋จ์ํ ๋ณ๊ฒฝํ์ฌ ๋ค๊ตญ์ด ์ดํด์ ๊ฐ์ ํ์ฅ ๊ธฐ๋ฅ์ ์ป์ ์ ์์์ ์์ฌํฉ๋๋ค.*
์ด ๋ชจ๋ธ์ [jongjyh](https://huggingface.co/jongjyh)์ ์ํด ๊ธฐ์ฌ๋์์ต๋๋ค.
## ์ฌ์ฉ ํ๊ณผ ์์ [[usage-tips-and-example]]
AltCLIP์ ์ฌ์ฉ๋ฒ์ CLIP๊ณผ ๋งค์ฐ ์ ์ฌํ๋ฉฐ, ์ฐจ์ด์ ์ ํ
์คํธ ์ธ์ฝ๋์ ์์ต๋๋ค. ์ผ๋ฐ์ ์ธ ์ดํ
์
๋์ ์๋ฐฉํฅ ์ดํ
์
์ ์ฌ์ฉํ๋ฉฐ, XLM-R์ [CLS] ํ ํฐ์ ์ฌ์ฉํ์ฌ ํ
์คํธ ์๋ฒ ๋ฉ์ ๋ํ๋
๋๋ค.
AltCLIP์ ๋ฉํฐ๋ชจ๋ฌ ๋น์ ๋ฐ ์ธ์ด ๋ชจ๋ธ์
๋๋ค. ์ด๋ฏธ์ง์ ํ
์คํธ ๊ฐ์ ์ ์ฌ์ฑ ๊ณ์ฐ ๋ฐ ์ ๋ก์ท ์ด๋ฏธ์ง ๋ถ๋ฅ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. AltCLIP์ ViT์ ๊ฐ์ ํธ๋์คํฌ๋จธ๋ฅผ ์ฌ์ฉํ์ฌ ์๊ฐ์ ํน์ง์ ์ป๊ณ , ์๋ฐฉํฅ ์ธ์ด ๋ชจ๋ธ์ ์ฌ์ฉํ์ฌ ํ
์คํธ ํน์ง์ ์ป์ต๋๋ค. ์ดํ ํ
์คํธ์ ์๊ฐ์ ํน์ง ๋ชจ๋ ๋์ผํ ์ฐจ์์ ์ ์ฌ ๊ณต๊ฐ์ผ๋ก ํฌ์ฌ๋ฉ๋๋ค. ํฌ์ฌ๋ ์ด๋ฏธ์ง์ ํ
์คํธ ํน์ง ๊ฐ์ ๋ด์ ์ ์ ์ฌ๋ ์ ์๋ก ์ฌ์ฉํฉ๋๋ค.
์ด๋ฏธ์ง๋ฅผ ํธ๋์คํฌ๋จธ ์ธ์ฝ๋์ ์
๋ ฅํ๊ธฐ ์ํด, ๊ฐ ์ด๋ฏธ์ง๋ฅผ ์ผ์ ํ ํฌ๊ธฐ์ ๊ฒน์น์ง ์๋ ํจ์น ์ํ์ค๋ก ๋ถํ ํ ๋ค, ์ด๋ฅผ ์ ํ ์๋ฒ ๋ฉํฉ๋๋ค. ์ ์ฒด ์ด๋ฏธ์ง๋ฅผ ๋ํ๋ด๊ธฐ ์ํด [CLS] ํ ํฐ์ด ์ถ๊ฐ๋ฉ๋๋ค. ์ ์๋ค์ ์ ๋ ์์น ์๋ฒ ๋ฉ๋ ์ถ๊ฐํ์ฌ ๊ฒฐ๊ณผ ๋ฒกํฐ ์ํ์ค๋ฅผ ํ์ค ํธ๋์คํฌ๋จธ ์ธ์ฝ๋์ ์
๋ ฅํฉ๋๋ค. [`CLIPImageProcessor`]๋ ๋ชจ๋ธ์ ์ํด ์ด๋ฏธ์ง๋ฅผ ํฌ๊ธฐ ์กฐ์ ํ๊ณ ์ ๊ทํํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค.
[`AltCLIPProcessor`]๋ [`CLIPImageProcessor`]์ [`XLMRobertaTokenizer`]๋ฅผ ํ๋์ ์ธ์คํด์ค๋ก ๋ฌถ์ด ํ
์คํธ๋ฅผ ์ธ์ฝ๋ฉํ๊ณ ์ด๋ฏธ์ง๋ฅผ ์ค๋นํฉ๋๋ค. ๋ค์ ์์ ๋ [`AltCLIPProcessor`]์ [`AltCLIPModel`]์ ์ฌ์ฉํ์ฌ ์ด๋ฏธ์ง์ ํ
์คํธ ๊ฐ์ ์ ์ฌ์ฑ ์ ์๋ฅผ ์ป๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค๋๋ค.
```python
>>> from PIL import Image
>>> import requests
>>> from transformers import AltCLIPModel, AltCLIPProcessor
>>> model = AltCLIPModel.from_pretrained("BAAI/AltCLIP")
>>> processor = AltCLIPProcessor.from_pretrained("BAAI/AltCLIP")
>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> image = Image.open(requests.get(url, stream=True).raw)
>>> inputs = processor(text=["a photo of a cat", "a photo of a dog"], images=image, return_tensors="pt", padding=True)
>>> outputs = model(**inputs)
>>> logits_per_image = outputs.logits_per_image # ์ด๋ฏธ์ง-ํ
์คํธ ์ ์ฌ๋ ์ ์
>>> probs = logits_per_image.softmax(dim=1) # ๋ผ๋ฒจ ๋ง๋ค ํ๋ฅ ์ ์ป๊ธฐ ์ํด softmax ์ ์ฉ
```
<Tip>
์ด ๋ชจ๋ธ์ `CLIPModel`์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ฏ๋ก, ์๋ CLIP์ฒ๋ผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
</Tip>
## AltCLIPConfig
[[autodoc]] AltCLIPConfig
- from_text_vision_configs
## AltCLIPTextConfig
[[autodoc]] AltCLIPTextConfig
## AltCLIPVisionConfig
[[autodoc]] AltCLIPVisionConfig
## AltCLIPProcessor
[[autodoc]] AltCLIPProcessor
## AltCLIPModel
[[autodoc]] AltCLIPModel
- forward
- get_text_features
- get_image_features
## AltCLIPTextModel
[[autodoc]] AltCLIPTextModel
- forward
## AltCLIPVisionModel
[[autodoc]] AltCLIPVisionModel
- forward
|