Meta ने अंततः Llama 3.2 11B & 90B विज़न मॉडलों को पेश करके Llama इकोसिस्टम में मल्टीमॉडैलिटी जोड़ दी है। ये दोनों मॉडल टेक्स्ट और इमेज, दोनों को प्रोसेस करने में उत्कृष्ट हैं, जिसने मुझे 90B संस्करण के साथ एक प्रोजेक्ट बनाने की कोशिश करने के लिए प्रेरित किया।
इस लेख में, मैं अपना काम साझा करूँगा और आपको एक इंटरैक्टिव इमेज कैप्शनिंग ऐप बनाने की प्रक्रिया समझाऊँगा—फ्रंट एंड के लिए Streamlit और कैप्शन जनरेट करने के इंजन के रूप में Llama 3.2 90B का उपयोग करते हुए।
इमेज कैप्शनिंग ऐप के लिए Llama 3.2 90B क्यों
Llama 3.2-Vision 90B एक अत्याधुनिक मल्टीमॉडल बड़ा भाषा मॉडल (LLM) है, जिसे इमेज और टेक्स्ट दोनों इनपुट वाले कार्यों के लिए बनाया गया है।
यह विज़ुअल रीजनिंग, इमेज रिकग्निशन और इमेज कैप्शनिंग जैसे जटिल कार्यों को संभालने की क्षमता के साथ अलग दिखता है। इसे 6 बिलियन इमेज-टेक्स्ट पेयर्स के विशाल डेटासेट पर प्रशिक्षित किया गया है।
Llama 3.2-Vision हमारे ऐप के लिए एक बढ़िया विकल्प है क्योंकि यह टेक्स्ट कार्यों के लिए कई भाषाओं को सपोर्ट करता है, हालांकि इमेज-संबंधित अनुप्रयोगों के लिए इसका प्राथमिक फोकस अंग्रेज़ी है। इसकी प्रमुख विशेषताएँ इसे Visual Question Answering (VQA), Document VQA, और इमेज-टेक्स्ट रिट्रीवल जैसे कार्यों के लिए उत्कृष्ट बनाती हैं, जिसमें इमेज कैप्शनिंग इसके प्रमुख अनुप्रयोगों में से एक है।
आइए देखें कि ये क्षमताएँ इमेज कैप्शनिंग जैसी वास्तविक-जीवन की एप्लिकेशन में कैसे रूपांतरित होती हैं।
इमेज कैप्शनिंग पाइपलाइन
इमेज कैप्शनिंग किसी इमेज की सामग्री का सार बताने के लिए वर्णनात्मक टेक्स्ट को स्वतः जनरेट करने की प्रक्रिया है। यह कंप्यूटर विज़न और नैचुरल लैंग्वेज प्रोसेसिंग को जोड़ती है ताकि दृश्य विवरणों की व्याख्या कर उन्हें भाषा में व्यक्त किया जा सके।
परंपरागत रूप से, इमेज कैप्शनिंग के लिए एक जटिल पाइपलाइन की आवश्यकता होती रही है, जिसमें अक्सर इमेज प्रोसेसिंग और लैंग्वेज जनरेशन के लिए अलग-अलग चरण शामिल होते हैं। मानक दृष्टिकोण में तीन मुख्य चरण होते हैं: इमेज प्रीप्रोसेसिंग, फीचर एक्सट्रैक्शन, और कैप्शन जनरेशन।
इमेज प्रीप्रोसेसिंग: इमेज को आमतौर पर मॉडल के इनपुट विनिर्देशों को पूरा करने के लिए री-साइज़, नॉर्मलाइज़, और कभी-कभी क्रॉप किया जाता है।
फीचर एक्सट्रैक्शन: इमेज के भीतर ऑब्जेक्ट्स, सीन, या प्रासंगिक डिटेल्स की पहचान के लिए विज़ुअल फीचर्स निकाले जाते हैं। अधिकांश मॉडलों में, इसके लिए इमेज की व्याख्या करने हेतु एक अलग विज़न मॉडल की आवश्यकता होती है, जो संरचित डेटा जनरेट करता है जिसे भाषा मॉडल समझ सके।
कैप्शन जनरेशन: इन निकाले गए फीचर्स का उपयोग भाषा मॉडल द्वारा एक सुसंगत विवरण बनाने के लिए किया जाता है, जो दृश्य डेटा में पहचाने गए ऑब्जेक्ट्स, संदर्भ और संबंधों को जोड़कर प्रस्तुत करता है।
Llama 3.2 90B के साथ, यह पारंपरिक रूप से जटिल प्रक्रिया सरल हो जाती है। मॉडल का विज़न अडैप्टर विज़ुअल फीचर्स को कोर भाषा मॉडल में एकीकृत करता है, जिससे यह सीधे इमेज की व्याख्या कर सकता है और सरल प्रॉम्प्ट्स के ज़रिए कैप्शन जनरेट कर सकता है।
अपनी आर्किटेक्चर में क्रॉस-अटेंशन लेयर्स एम्बेड करके, Llama 3.2 90B उपयोगकर्ताओं को केवल मॉडल को प्रॉम्प्ट करके किसी इमेज का वर्णन करने देता है—अलग-अलग प्रोसेसिंग चरणों की जरूरत समाप्त हो जाती है। यह सरलता इमेज कैप्शनिंग को अधिक सुलभ और कुशल बनाती है, जहाँ एक ही प्रॉम्प्ट से किसी इमेज का सार प्रभावी ढंग से पकड़ने वाला प्राकृतिक, वर्णनात्मक कैप्शन मिल सकता है।
इमेज कैप्शनिंग ऐप का ओवरव्यू
Llama 3.2 90B की शक्ति को व्यवहार में लाने के लिए, हम फ्रंट एंड के लिए Streamlit और कैप्शन जनरेट करने के लिए Groq का उपयोग करके एक सरल लेकिन प्रभावी इमेज कैप्शनिंग एप्लिकेशन बनाएँगे।
ऐप उपयोगकर्ताओं को एक इमेज अपलोड करने और केवल दो क्लिक में मॉडल द्वारा जनरेट किया गया वर्णनात्मक कैप्शन प्राप्त करने देगा। यह सेटअप उपयोगकर्ता-अनुकूल है और शुरू करने के लिए न्यूनतम कोडिंग ज्ञान की आवश्यकता होती है।
हमारे एप्लिकेशन में निम्नलिखित फीचर्स शामिल होंगे:
शीर्षक: एक प्रमुखता से दिखाया गया शीर्षक, Llama Captioner, जो ऐप के उद्देश्य को स्थापित करता है।
अपलोड बटन: उपयोगकर्ता के डिवाइस से इमेज अपलोड करने के लिए एक इंटरफ़ेस।
जनरेट बटन: कैप्शन जनरेशन प्रक्रिया शुरू करने के लिए एक बटन।
कैप्शन आउटपुट: ऐप इंटरफ़ेस पर ही जनरेट किया गया कैप्शन प्रदर्शित करेगा।
हमारे Llama 3.2 90B ऐप के लिए कोड इम्प्लीमेंटेशन
Groq API उपयोगकर्ता द्वारा अपलोड की गई इमेज और Llama 3.2-Vision मॉडल के बीच पुल का काम करेगा। यदि आप मेरे साथ-साथ चलते हुए कोड करना चाहते हैं, तो पहले यह सुनिश्चित करें कि आप:
साइन अप करके अपना Groq API कुंजी प्राप्त करेंGroq Console पर।
आसान एक्सेस के लिए अपनी API कुंजी को credentials.json फ़ाइल में सेव करें।
इंस्टॉलेशन और कॉन्फ़िगरेशन के लिए Groq कीक्विकस्टार्ट गाइड का पालन करें।
नीचे दिया गया Python कोड स्निपेट Groq API के साथ संवाद करने के लिए एक Streamlit एप्लिकेशन सेटअप करता है। इसमें शामिल है:
वेब ऐप डेवलपमेंट (Streamlit), AI इंटरेक्शन (Groq), इमेज हैंडलिंग (base64), और फ़ाइल ऑपरेशंस (os, json) के लिए लाइब्रेरीज़ इम्पोर्ट करना।
बेहतर सुरक्षा के लिए Groq API कुंजी को एक अलग JSON फ़ाइल से पढ़ना।
इमेज को प्रभावी ट्रांसमिशन और प्रोसेसिंग के लिए base64 फ़ॉर्मेट में एन्कोड करने हेतु एक फ़ंक्शन परिभाषित करना।
import streamlit as stfrom groq import Groqimport base64import osimport json# Set up Groq API Keyos.environ['GROQ_API_KEY'] = json.load(open('credentials.json', 'r'))['groq_token']# Function to encode the imagedef encode_image(image_path): with open(image_path, "rb") as image_file: return base64.b64encode(image_file.read()).decode('utf-8')संचालित द्वारा
हम नीचे दिया गया फ़ंक्शन लिखते हैं, जो Groq API का उपयोग करके अपलोड की गई इमेज का टेक्स्टुअल विवरण जनरेट करने के लिए डिज़ाइन किया गया है। इसके काम करने का संक्षिप्त विवरण:
इमेज एन्कोडिंग: अपलोड की गई इमेज को base64 एन्कोडेड स्ट्रिंग में बदला जाता है। यह फ़ॉर्मेट API रिक्वेस्ट के भीतर इमेज डेटा को आसानी से ट्रांसमिट करने देता है।
Groq API इंटरेक्शन: Groq सर्विस के साथ संचार सक्षम करने के लिए एक Groq क्लाइंट बनाया जाता है। एक चैट कम्प्लीशन रिक्वेस्ट तैयार की जाती है, जिसमें शामिल है:
उपयोगकर्ता प्रॉम्प्ट: "What's in this image?"
डेटा URI के भीतर एम्बेड किया गया base64 एन्कोडेड इमेज डेटा। इमेज को प्रोसेस कर टेक्स्टुअल विवरण जनरेट करने के लिए llama-3.2-90b-vision-preview मॉडल निर्दिष्ट किया जाता है।
कैप्शन एक्सट्रैक्शन: Groq API रिस्पॉन्स से जनरेटेड कैप्शन निकाला जाता है। पहली चॉइस की मैसेज सामग्री, जिसमें कैप्शन होता है, लौटाई जाती है।
# Function to generate captiondef generate_caption(uploaded_image): base64_image = base64.b64encode(uploaded_image.read()).decode('utf-8') client = Groq() chat_completion = client.chat.completions.create( messages=[ { "role": "user", "content": [ {"type": "text", "text": "What's in this image?"}, { "type": "image_url", "image_url": { "url": f"data:image/jpeg;base64,{base64_image}", }, }, ], } ], model="llama-3.2-90b-vision-preview", ) return chat_completion.choices[0].message.contentसंचालित द्वारा
अंत में, हम Streamlit के माध्यम से अपना इंटरैक्टिव वेब ऐप जनरेट करते हैं:
# Streamlit Appst.title("Llama Captioner")uploaded_file = st.file_uploader("Upload an image", type=["jpg", "jpeg", "png"])if uploaded_file is not None: # Show the uploaded image st.image(uploaded_file, caption="Uploaded Image", use_container_width=True) if st.button("Generate Caption"): with st.spinner("Generating caption..."): caption = generate_caption(uploaded_file) st.success("Caption Generated!") st.write("**Caption:**", caption)संचालित द्वारा
अंतिम Streamlit ऐप: Llama Captioner
यह Streamlit एप्लिकेशन इमेज कैप्शनिंग के लिए उपयोगकर्ता-अनुकूल इंटरफ़ेस प्रदान करता है। इसके काम करने का विवरण:
शीर्षक और फ़ाइल अपलोडर:
ऐप एक शीर्षक दिखाता है: "Llama Captioner"।
एक फ़ाइल अपलोडर कंपोनेंट उपयोगकर्ताओं को इमेज फ़ाइल (JPG, JPEG, या PNG) चुनने देता है।
इमेज डिस्प्ले:
इमेज अपलोड होते ही, ऐप st.image फ़ंक्शन का उपयोग कर उसे प्रदर्शित करता है।
कैप्शन जनरेशन:
"Generate Caption" नामक बटन कैप्शन जनरेशन प्रक्रिया को ट्रिगर करता है।
क्लिक करने पर, एक स्पिनर दिखता है जो दर्शाता है कि कैप्शन जनरेट हो रहा है।
अपलोड की गई इमेज को प्रोसेस करने और कैप्शन प्राप्त करने के लिए generate_caption फ़ंक्शन कॉल किया जाता है।
सफल जनरेशन पर, एक सफलता संदेश दिखाया जाता है, जिसके बाद जनरेट किया गया कैप्शन प्रदर्शित होता है।
नीचे दिया गया स्निपेट कोड के वास्तविक उपयोग को दर्शाता है, जहाँ Eddie Hall की एक इमेज अपलोड की गई थी ताकि कैप्शन जनरेट किया जा सके। चौंकाने वाली बात यह रही कि इसने “Strongest Man” जैसी वे जानकारियाँ भी निकाल लीं जो स्पष्ट रूप से दिखाई नहीं दे रही थीं।
निष्कर्ष
Llama 3.2 90B और Streamlit के साथ इमेज कैप्शनिंग ऐप बनाना दिखाता है कि उन्नत AI कैसे कठिन कामों को आसान बना सकता है। यह प्रोजेक्ट एक शक्तिशाली मॉडल को एक सरल इंटरफ़ेस के साथ जोड़ता है, जिससे एक ऐसा टूल बनता है जो सहज और उपयोग में आसान दोनों है।
एक AI इंजीनियर के रूप में, मुझे ऐसे टूल्स में अपार संभावनाएँ दिखती हैं। ये तकनीक को अधिक सुलभ बना सकते हैं, लोगों को कंटेंट के साथ बेहतर ढंग से जोड़ सकते हैं, और प्रक्रियाओं को और स्मार्ट तरीकों से ऑटोमेट कर सकते हैं।
Llama पर अपनी सीख जारी रखने के लिए, मैं निम्न संसाधनों की अनुशंसा करता हूँ:
Meta ने अंततः Llama 3.2 11B & 90B विज़न मॉडलों को पेश करके Llama इकोसिस्टम में मल्टीमॉडैलिटी जोड़ दी है। ये दोनों मॉडल टेक्स्ट और इमेज, दोनों को प्रोसेस करने में उत्कृष्ट हैं, जिसने मुझे 90B संस्करण के साथ एक प्रोजेक्ट बनाने की कोशिश करने के लिए प्रेरित किया।
इस लेख में, मैं अपना काम साझा करूँगा और आपको एक इंटरैक्टिव इमेज कैप्शनिंग ऐप बनाने की प्रक्रिया समझाऊँगा—फ्रंट एंड के लिए Streamlit और कैप्शन जनरेट करने के इंजन के रूप में Llama 3.2 90B का उपयोग करते हुए।
इमेज कैप्शनिंग ऐप के लिए Llama 3.2 90B क्यों
Llama 3.2-Vision 90B एक अत्याधुनिक मल्टीमॉडल बड़ा भाषा मॉडल (LLM) है, जिसे इमेज और टेक्स्ट दोनों इनपुट वाले कार्यों के लिए बनाया गया है।
यह विज़ुअल रीजनिंग, इमेज रिकग्निशन और इमेज कैप्शनिंग जैसे जटिल कार्यों को संभालने की क्षमता के साथ अलग दिखता है। इसे 6 बिलियन इमेज-टेक्स्ट पेयर्स के विशाल डेटासेट पर प्रशिक्षित किया गया है।
Llama 3.2-Vision हमारे ऐप के लिए एक बढ़िया विकल्प है क्योंकि यह टेक्स्ट कार्यों के लिए कई भाषाओं को सपोर्ट करता है, हालांकि इमेज-संबंधित अनुप्रयोगों के लिए इसका प्राथमिक फोकस अंग्रेज़ी है। इसकी प्रमुख विशेषताएँ इसे Visual Question Answering (VQA), Document VQA, और इमेज-टेक्स्ट रिट्रीवल जैसे कार्यों के लिए उत्कृष्ट बनाती हैं, जिसमें इमेज कैप्शनिंग इसके प्रमुख अनुप्रयोगों में से एक है।
आइए देखें कि ये क्षमताएँ इमेज कैप्शनिंग जैसी वास्तविक-जीवन की एप्लिकेशन में कैसे रूपांतरित होती हैं।
इमेज कैप्शनिंग पाइपलाइन
इमेज कैप्शनिंग किसी इमेज की सामग्री का सार बताने के लिए वर्णनात्मक टेक्स्ट को स्वतः जनरेट करने की प्रक्रिया है। यह कंप्यूटर विज़न और नैचुरल लैंग्वेज प्रोसेसिंग को जोड़ती है ताकि दृश्य विवरणों की व्याख्या कर उन्हें भाषा में व्यक्त किया जा सके।
परंपरागत रूप से, इमेज कैप्शनिंग के लिए एक जटिल पाइपलाइन की आवश्यकता होती रही है, जिसमें अक्सर इमेज प्रोसेसिंग और लैंग्वेज जनरेशन के लिए अलग-अलग चरण शामिल होते हैं। मानक दृष्टिकोण में तीन मुख्य चरण होते हैं: इमेज प्रीप्रोसेसिंग, फीचर एक्सट्रैक्शन, और कैप्शन जनरेशन।
Llama 3.2 90B के साथ, यह पारंपरिक रूप से जटिल प्रक्रिया सरल हो जाती है। मॉडल का विज़न अडैप्टर विज़ुअल फीचर्स को कोर भाषा मॉडल में एकीकृत करता है, जिससे यह सीधे इमेज की व्याख्या कर सकता है और सरल प्रॉम्प्ट्स के ज़रिए कैप्शन जनरेट कर सकता है।
अपनी आर्किटेक्चर में क्रॉस-अटेंशन लेयर्स एम्बेड करके, Llama 3.2 90B उपयोगकर्ताओं को केवल मॉडल को प्रॉम्प्ट करके किसी इमेज का वर्णन करने देता है—अलग-अलग प्रोसेसिंग चरणों की जरूरत समाप्त हो जाती है। यह सरलता इमेज कैप्शनिंग को अधिक सुलभ और कुशल बनाती है, जहाँ एक ही प्रॉम्प्ट से किसी इमेज का सार प्रभावी ढंग से पकड़ने वाला प्राकृतिक, वर्णनात्मक कैप्शन मिल सकता है।
इमेज कैप्शनिंग ऐप का ओवरव्यू
Llama 3.2 90B की शक्ति को व्यवहार में लाने के लिए, हम फ्रंट एंड के लिए Streamlit और कैप्शन जनरेट करने के लिए Groq का उपयोग करके एक सरल लेकिन प्रभावी इमेज कैप्शनिंग एप्लिकेशन बनाएँगे।
ऐप उपयोगकर्ताओं को एक इमेज अपलोड करने और केवल दो क्लिक में मॉडल द्वारा जनरेट किया गया वर्णनात्मक कैप्शन प्राप्त करने देगा। यह सेटअप उपयोगकर्ता-अनुकूल है और शुरू करने के लिए न्यूनतम कोडिंग ज्ञान की आवश्यकता होती है।
हमारे एप्लिकेशन में निम्नलिखित फीचर्स शामिल होंगे:
हमारे Llama 3.2 90B ऐप के लिए कोड इम्प्लीमेंटेशन
Groq API उपयोगकर्ता द्वारा अपलोड की गई इमेज और Llama 3.2-Vision मॉडल के बीच पुल का काम करेगा। यदि आप मेरे साथ-साथ चलते हुए कोड करना चाहते हैं, तो पहले यह सुनिश्चित करें कि आप:
नीचे दिया गया Python कोड स्निपेट Groq API के साथ संवाद करने के लिए एक Streamlit एप्लिकेशन सेटअप करता है। इसमें शामिल है:
हम नीचे दिया गया फ़ंक्शन लिखते हैं, जो Groq API का उपयोग करके अपलोड की गई इमेज का टेक्स्टुअल विवरण जनरेट करने के लिए डिज़ाइन किया गया है। इसके काम करने का संक्षिप्त विवरण:
अंत में, हम Streamlit के माध्यम से अपना इंटरैक्टिव वेब ऐप जनरेट करते हैं:
अंतिम Streamlit ऐप: Llama Captioner
यह Streamlit एप्लिकेशन इमेज कैप्शनिंग के लिए उपयोगकर्ता-अनुकूल इंटरफ़ेस प्रदान करता है। इसके काम करने का विवरण:
st.imageफ़ंक्शन का उपयोग कर उसे प्रदर्शित करता है।नीचे दिया गया स्निपेट कोड के वास्तविक उपयोग को दर्शाता है, जहाँ Eddie Hall की एक इमेज अपलोड की गई थी ताकि कैप्शन जनरेट किया जा सके। चौंकाने वाली बात यह रही कि इसने “Strongest Man” जैसी वे जानकारियाँ भी निकाल लीं जो स्पष्ट रूप से दिखाई नहीं दे रही थीं।
निष्कर्ष
Llama 3.2 90B और Streamlit के साथ इमेज कैप्शनिंग ऐप बनाना दिखाता है कि उन्नत AI कैसे कठिन कामों को आसान बना सकता है। यह प्रोजेक्ट एक शक्तिशाली मॉडल को एक सरल इंटरफ़ेस के साथ जोड़ता है, जिससे एक ऐसा टूल बनता है जो सहज और उपयोग में आसान दोनों है।
एक AI इंजीनियर के रूप में, मुझे ऐसे टूल्स में अपार संभावनाएँ दिखती हैं। ये तकनीक को अधिक सुलभ बना सकते हैं, लोगों को कंटेंट के साथ बेहतर ढंग से जोड़ सकते हैं, और प्रक्रियाओं को और स्मार्ट तरीकों से ऑटोमेट कर सकते हैं।
Llama पर अपनी सीख जारी रखने के लिए, मैं निम्न संसाधनों की अनुशंसा करता हूँ: