| # 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://huggingface.co/papers/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 | |