CLIP
CLIP एक मशीन लर्निंग मॉडल है जो छवियों और टेक्स्ट के लिए एम्बेडिंग्स जनरेट करने में सक्षम है। इन एम्बेडिंग्स का उपयोग ज़ीरो शॉट क्लासिफिकेशन, सेमांटिक इमेज सर्च, और कई अन्य उपयोग मामलों के लिए किया जा सकता है। Roboflow Inference Server पर CLIP का उपयोग करने के लिए तीन रूट्स उपलब्ध हैं:
embed_image: छवि एम्बेडिंग्स की गणना के लिए उपयोग किया जाता है
embed_text: टेक्स्ट एम्बेडिंग्स की गणना के लिए उपयोग किया जाता है
compare: टेक्स्ट और छवियों की एम्बेडिंग्स की गणना और तुलना के लिए उपयोग किया जाता है
Embed Image
किसी छवि को एम्बेड करना उस छवि की जानकारी को एक अधिक प्रबंधनीय आकार में संपीड़ित करने जैसा है। जब हम किसी छवि को एम्बेड करते हैं, तो हम छवि को इनपुट के रूप में लेते हैं जिसमें दसियों हज़ार पिक्सल होते हैं और हम उसे कुछ सौ संख्याओं में परिष्कृत करते हैं जिन्हें एम्बेडिंग कहा जाता है। ये एम्बेडिंग्स मानव आंख के लिए विशेष रूप से अर्थपूर्ण होती हैं, लेकिन जब अन्य एम्बेडिंग्स से तुलना की जाती है, तो वे बहुत उपयोगी साबित हो सकती हैं।
CLIP और Roboflow Inference Server का उपयोग करके छवि एम्बेडिंग जनरेट करने के लिए:
#Request Payload परिभाषित करें
infer_clip_payload = {
#छवियां url के रूप में या base64 एन्कोडेड स्ट्रिंग्स के रूप में दी जा सकती हैं
"image": {
# "type" भी "base64" हो सकता है
"type": "url",
# "value" छवि डेटा की base64 एन्कोडेड स्ट्रिंग भी हो सकता है
"value": "https://images.freeimages.com/images/large-previews/36c/raccoons-in-the-wild-4-1624830.jpg",
},
}
# inference server url परिभाषित करें (localhost:9001, infer.roboflow.com, आदि)
base_url = "https://infer.roboflow.com"
# अपना Roboflow API Key परिभाषित करें
api_key = <YOUR API KEY HERE>
res = requests.post(
f"{base_url}/clip/embed_image?api_key={api_key}",
json=infer_clip_payload,
)
embeddings = res.json()['embeddings']
print(embeddings)
[[-0.4853120744228363, ... ]]
एक ही अनुरोध में कई छवियों को एम्बेड किया जा सकता है:
#Request Payload परिभाषित करें
infer_clip_payload = {
#छवियां url के रूप में या base64 एन्कोडेड स्ट्रिंग्स के रूप में दी जा सकती हैं
"image": [
{
"type": "url",
"value": "https://images.freeimages.com/images/large-previews/36c/raccoons-in-the-wild-4-1624830.jpg",
},
{
"type": "url",
"value": "https://images.freeimages.com/images/large-previews/36c/raccoons-in-the-wild-4-1624830.jpg",
}
],
}
res = requests.post(
f"{base_url}/clip/embed_image?api_key={api_key}",
json=infer_clip_payload,
)
Embed Text
CLIP टेक्स्ट के लिए भी एम्बेडिंग्स जनरेट कर सकता है, जैसे कि यह छवियों के लिए करता है।
#Request Payload परिभाषित करें
infer_clip_payload = {
"text": "the quick brown fox jumped over the lazy dog",
}
res = requests.post(
f"{base_url}/clip/embed_text?api_key={api_key}",
json=infer_clip_payload,
)
embeddings = res.json()['embeddings']
print(embeddings)
[[0.56842650744228363, ... ]]
कई टेक्स्ट ब्लॉक्स को एक ही अनुरोध में बैच किया जा सकता है:
#Request Payload परिभाषित करें
infer_clip_payload = {
"text": [
"the quick brown fox jumped over the lazy dog",
"how vexingly quick daft zebras jump"
]
}
res = requests.post(
f"{base_url}/clip/embed_text?api_key={api_key}",
json=infer_clip_payload,
)
Compare
CLIP का असली मूल्य तब सामने आता है जब एम्बेडिंग्स की तुलना की जाती है। तुलना दो एम्बेडिंग्स के बीच गणितीय दूरी है, जिसे कोसाइन सिमिलैरिटी का उपयोग करके गणना की जाती है। इस दूरी को समानता स्कोर के रूप में समझा जा सकता है। यदि दो एम्बेडिंग्स की कोसाइन सिमिलैरिटी 1 के पास है, तो वे समान हैं।
जब आप तुलना करते हैं, तो आप एक प्रॉम्प्ट और एक या एक से अधिक सब्जेक्ट्स परिभाषित करते हैं। चूंकि आप टेक्स्ट या छवियों के किसी भी संयोजन की तुलना कर सकते हैं, आपको प्रॉम्प्ट टाइप और सब्जेक्ट टाइप भी परिभाषित करना होगा।
#Request Payload परिभाषित करें
infer_clip_payload = {
"prompt": {
"type": "url",
"value": "https://images.freeimages.com/images/large-previews/36c/raccoons-in-the-wild-4-1624830.jpg",
},
"prompt_type": "image",
"subject": "A very cute raccoon",
"subject_type": "text",
}
res = requests.post(
f"{base_url}/clip/compare?api_key={api_key}",
json=infer_clip_payload,
)
similarity = res.json()['similarity']
print(similarity)
[0.30969720949239016]
कई प्रॉम्प्ट्स (एक अनुरोध में आठ तक) सूची के रूप में भेजे जा सकते हैं:
infer_clip_payload = {
"subject": {
"type": "url",
"value": "https://i.imgur.com/Q6lDy8B.jpg",
},
"subject_type": "image",
"prompt": [
"A very cute raccoon",
"A large dog",
"A black cate",
],
"prompt_type": "text",
}
[0.80559720949239016, 0.20329720949239016, 0.505559720949239016]
Last updated
Was this helpful?