# Menggunakan OpenCLIP di Hugging Face

[OpenCLIP](https://github.com/mlfoundations/open_clip) adalah implementasi open-source dari CLIP milik OpenAI.

## Menjelajahi OpenCLIP di Hub

Anda dapat menemukan model OpenCLIP dengan memfilter di bagian kiri [halaman model](https://huggingface.co/models?library=open_clip&sort=trending).

Model OpenCLIP yang dihosting di Hub memiliki kartu model dengan informasi berguna tentang model-model tersebut. Berkat integrasi OpenCLIP dengan Hugging Face Hub, Anda dapat memuat model OpenCLIP dengan beberapa baris kode. Anda juga dapat mendeploy model-model ini menggunakan [Inference Endpoints](https://huggingface.co/inference-endpoints).

## Instalasi

Untuk memulai, Anda dapat mengikuti [panduan instalasi OpenCLIP](https://github.com/mlfoundations/open_clip#usage). Anda juga dapat menggunakan instalasi satu baris berikut melalui pip:

```
$ pip install open_clip_torch
```

## Menggunakan model yang sudah ada

Semua model OpenCLIP dapat dengan mudah dimuat dari Hub:

```py
import open_clip

model, preprocess = open_clip.create_model_from_pretrained('hf-hub:laion/CLIP-ViT-g-14-laion2B-s12B-b42K')
tokenizer = open_clip.get_tokenizer('hf-hub:laion/CLIP-ViT-g-14-laion2B-s12B-b42K')
```

Setelah dimuat, Anda dapat mengkodekan gambar dan teks untuk melakukan [klasifikasi gambar zero-shot](https://huggingface.co/tasks/zero-shot-image-classification):

```py
import torch
from PIL import Image
import requests

url = 'http://images.cocodataset.org/val2017/000000039769.jpg'
image = Image.open(requests.get(url, stream=True).raw)
image = preprocess(image).unsqueeze(0)
text = tokenizer(["a diagram", "a dog", "a cat"])

with torch.no_grad(), torch.cuda.amp.autocast():
    image_features = model.encode_image(image)
    text_features = model.encode_text(text)
    image_features /= image_features.norm(dim=-1, keepdim=True)
    text_features /= text_features.norm(dim=-1, keepdim=True)

    text_probs = (100.0 * image_features @ text_features.T).softmax(dim=-1)

print("Label probs:", text_probs) 
```

Ia menghasilkan probabilitas untuk setiap kelas yang mungkin:

```text
Label probs: tensor([[0.0020, 0.0034, 0.9946]])
```

Jika Anda ingin memuat model OpenCLIP tertentu, Anda dapat mengklik `Use in OpenCLIP` di kartu model dan Anda akan diberikan potongan kode yang berfungsi!

## Sumber daya tambahan

* Repositori [OpenCLIP](https://github.com/mlfoundations/open_clip)
* OpenCLIP [dokumentasi](https://github.com/mlfoundations/open_clip/tree/main/docs)
* Model OpenCLIP [di Hub](https://huggingface.co/models?library=open_clip&sort=trending)

