استخدام Llama 3.2-90b-vision-instruct لاستعلامات الذكاء الاصطناعي متعددة الوسائط بلغة Python باستخدام watsonx

في هذا البرنامج التعليمي، ستكتشف كيفية استخدام نموذج Meta Llama 3.2-90b-vision-instruct المتوفر الآن على watsonx.ai في مهام رؤية الكمبيوتر مثل إنشاء تسميات توضيحية للصور والإجابة عن الأسئلة المرئية.

نظرة عامة على الذكاء الاصطناعي متعدد الوسائط

مقارنة بين نماذج الذكاء الاصطناعي متعددة الوسائط ونماذج الذكاء الاصطناعي أحادية الوسائط

العديد منا على دراية بتطبيقات الذكاء الاصطناعي أحادية الوسائط. من أدوات الذكاء الاصطناعي أحادية الوسائط الشهيرة ChatGPT. تستخدم روبوتات المحادثة مثل ChatGPT معالجة اللغة الطبيعية (NLP) لفهم أسئلة المستخدمين وأتمتة الردود في الوقت الفعلي. يقتصر نوع الإدخال الذي يمكن تطبيق هذه النماذج اللغوية الكبرى أحادية الوسائط عليها على النصوص.

يعتمد الذكاء الاصطناعي متعدد الوسائط على نماذج التعلم الآلي المبنية على الشبكات العصبية. هذه الشبكات العصبية تتمكن من معالجة ودمج المعلومات من أنواع بيانات متعددة باستخدام تقنيات التعلم العميق المعقدة. هذه الوسائط المختلفة التي تنتجها نماذج الذكاء الاصطناعي التوليدي، والتي تسمى أحيانًا نماذج gen AI، يمكن أن تشمل إدخالات النصوص، والصور، والفيديو، والصوت.

أنظمة الذكاء الاصطناعي متعددة الوسائط لها العديد من حالات الاستخدام الواقعية والتي تتراوح بين تشخيصات الأشعة الطبية في مجال الرعاية الصحية باستخدام رؤية الكمبيوتر إلى التعرف على الكلام في تطبيقات الترجمة. ويمكن لهذه التطورات في تقنية الذكاء الاصطناعي تحسين مختلف المجالات. تكمن الميزة الرئيسية للبُنى متعددة الوسائط في إمكانية معالجة أنواع مختلفة من البيانات.

الذكاء الاصطناعي متعدد الوسائط: كيف يعمل؟

يتضمن الذكاء الاصطناعي متعدد الوسائط ثلاثة عناصر:

وحدة الإدخال

وحدة الإدخال مبنية على عدة شبكات عصبية أحادية الوسائط لمعالجة أنواع بيانات مختلفة مسبقًا. وفيها، تُجهز البيانات لخوارزميات التعلم الآلي التي تُنفذ في وحدة الدمج.

وحدة الدمج

يحدث دمج البيانات ومواءمتها ومعالجتها في هذه الوحدة. تحدث عملية الدمج لكل نوع من أنواع وسائط البيانات. تُستخدم العديد من التقنيات بشكل شائع في هذه الوحدة. أحد الأمثلة على ذلك هو الدمج المبكر، حيث تُدمج البيانات غير المنسقة من جميع أنواع الإدخالات. بالإضافة إلى ذلك، يحدث الدمج المتوسط عند تشفير بيانات الوسائط المختلفة في مراحل المعالجة المسبقة المختلفة. وأخيرًا، يجمع الدمج الأخير البيانات بعد معالجتها في البداية في وحدة الإدخال بواسطة نماذج مختلفة تتوافق مع كل نوع من أنواع الوسائط.

وحدة الإخراج

تُنشئ وحدة الإخراج نتائج بتنسيق الإخراج المطلوب من خلال فهم البيانات المنتجة في وحدة الدمج. يمكن أن تتخذ هذه المخرجات أشكالاً مختلفة مثل النصوص أو الصور أو مجموعة من التنسيقات.

الخطوات

راجع فيديو IBM Technology على YouTube الذي يشرح لك تعليمات الإعداد التالية في الخطوتين 1 و2.

الخطوة 1. إعداد البيئة.

بينما يمكنك الاختيار من بين عدة أدوات، يُعد هذا البرنامج التعليمي أكثر ما يناسب Jupyter Notebook. تُستخدم Jupyter Notebooks على نطاق واسع في علم البيانات لدمج التعليمات البرمجية مع مصادر بيانات متنوعة مثل النصوص والصور والعروض المصورة للبيانات.

هذا البرنامج التعليمي يرشدك حول كيفية إعداد حساب IBM لاستخدام Jupyter Notebook.

  1. سجِّل الدخول إلى watsonx.ai باستخدام حساب IBM Cloud الخاص بك.

  2. أنشئ مشروع watsonx.ai.

    يمكنك الحصول على معرِّف المشروع من داخل مشروعك. انقر فوق علامة التبويب الإدارة (Manage) ، ثم انسخ معرِّف المشروع من قسم التفاصيل (Details) في صفحة عام (General). ستحتاج إلى هذا المعرِّف في هذا البرنامج التعليمي.

  3. أنشئ Jupyter Notebook.

    هذه الخطوة ستفتح بيئة دفتر ملاحظات حيث يمكنك نسخ التعليمات البرمجية من هذا البرنامج التعليمي لضبط الموجِّهات بنفسك. أو يمكنك تنزيل هذا الدفتر على نظامك المحلي وتحميله إلى مشروع watsonx.ai كأصل. يمكن العثور على Jupyter Notebook هذا مع مجموعات البيانات المستخدمة على GitHub.

    لتجنب تعارضات ارتباط حزم Python، نوصي بإعداد بيئة افتراضية.

الخطوة 2. إعداد مثيل watsonx.ai Runtime ومفتاح واجهة برمجة التطبيقات.

في هذا البرنامج التعليمي، نقترح استخدام نموذج Meta 3.2-90b-vision-instruct مع watsonx.ai لتحقيق نتائج مماثلة. لديك مطلق الحرية في استخدام أي نموذج من نماذج الذكاء الاصطناعي التي تدعم التعلم متعدد الوسائط. توجد عدة نماذج ذكاء اصطناعي متعددة الوسائط يمكنك الاختيار من بينها، بما في ذلك GPT-4 V(ision) وDALL-E 3 من OpenAI، بالإضافة إلى Gemini من Google. تأكد من أنك تستخدم واجهة برمجة التطبيقات المناسبة في حال استخدام نماذج أخرى لأن هذا البرنامج التعليمي مصمم حول watsonx.ai

  1. أنشئ مثيل خدمة watsonx.ai Runtime (اختَر المنطقة المناسبة لك، واختَر خطة Lite، وهي مثيل مجاني).

  2. أنشئ مفتاح واجهة برمجة التطبيقات.

  3. اربط مثيل خدمة watsonx.ai Runtime بالمشروع الذي أنشأته في watsonx.ai.

الخطوة 3. تثبيت واستيراد المكتبات ذات الصلة وإعداد بيانات الاعتماد الخاصة بك.

سنحتاج إلى عدد قليل من المكتبات والوحدات لهذا البرنامج التعليمي. تأكَّد من استيراد الحزم التالية؛ وإذا لم تكن مثبَّتة، يمكنك تثبيتها بسرعة باستخدام أمر pip.

#installations
%pip install image | tail -n 1
%pip install -U "ibm_watsonx_ai>=1.1.14" | tail -n 1
%pip install python-dotenv | tail -n 1 #imports
import requests
import base64
import os

from PIL import Image
from ibm_watsonx_ai import Credentials
from ibm_watsonx_ai.foundation_models import ModelInference
from dotenv import load_dotenv
load_dotenv(os.getcwd()+"/.env", override=True)

لتعيين بيانات الاعتماد، سنحتاج إلى Watsonx WATSONX_APIKEY وWATSONX_PROJECT_ID الذين أنشأتهما في الخطوة الأولى. يمكنك إما تخزينها في ملف .env  في مجلدك أو استبدال النص النائب. سنعيّن أيضًا عنوان URL كنقطة نهاية لواجهة برمجة التطبيقات.

WATSONX_APIKEY = os.getenv('WATSONX_APIKEY', "<YOUR_WATSONX_APIKEY_HERE>")
WATSONX_PROJECT_ID = os.getenv('WATSONX_PROJECT_ID', "<YOUR_WATSONX_PROJECT_ID_HERE>")
URL = "https://us-south.ml.cloud.ibm.com"

يمكننا استخدام فئة بيانات الاعتماد لتضمين بيانات الاعتماد المرسلة.

credentials = Credentials(
    url=URL,
    api_key=WATSONX_APIKEY
)

الخطوة 4. تشفير الصور

في هذا البرنامج التعليمي، سنعمل على عدة صور لتطبيقات الذكاء الاصطناعي متعددة الوسائط مثل إنشاء التسميات التوضيحية للصور واكتشاف الكائنات. يمكن الوصول إلى الصور التي سنستخدمها باستخدام عناوين URL التالية. يمكننا تخزين عناوين URL هذه في قائمة لتشفيرها بشكل متكرر.

url_image_1 = 'https://assets.ibm.com/sa-ar/is/image/ibm/hv6b0935?$original$'
url_image_2 = 'https://assets.ibm.com/sa-ar/is/image/ibm/c30a2d57-a62b-4bb3-818895bfe2fc7bf8?$original$'
url_image_3 = 'https://assets.ibm.com/sa-ar/is/image/ibm/nt170969?$original$'
url_image_4 = 'https://assets.ibm.com/sa-ar/is/image/ibm/fb123b45-6530-4dd9-a758-10a7ec234d9d?$original$'

image_urls = [url_image_1, url_image_2, url_image_3, url_image_4]

للحصول على فهم أفضل للبيانات المدخلة، دعونا نعرض الصور.

for idx, url in enumerate(image_urls):
    print(f'url_image_{idx}')
    display(Image.open(requests.get(url, stream=True).raw))

المخرجات:

url_image_0

صورة لمدينة نيويورك

url_image_1

امرأة تركض

url_image_2

مزرعة غمرتها مياه نهر المسيسيبي

url_image_3

ملصق عناصر غذائية

لتشفير صورنا بطريقة سهلة الفهم بالنسبة إلى النموذج اللغوي الكبير، سنشفرها بالتحويل إلى وحدات بايت ثم نفك تشفيرها بتحويلها إلى تمثيل UTF-8.

encoded_images = []

for url in image_urls:
    encoded_images.append(base64.b64encode(requests.get(url).content).decode("utf-8"))

الخطوة 5. إعداد طلب واجهة برمجة التطبيقات والنموذج اللغوي الكبير

الآن بعد أن أصبح بإمكاننا تمرير صورنا إلى النموذج اللغوي الكبير، دعونا نضبط دالة لاستدعاءات واجهة برمجة تطبيق watsonx تأخذ دالة augment_api_request_body استعلام المستخدم والصورة كمعلمات وتثري نص طلب واجهة برمجة التطبيق. سوف نستخدم هذه الدالة في كل دورة تكرار.

def augment_api_request_body(user_query, image):
    messages = [
        {
            "role": "user",
            "content": [{
                "type": "text",
                "text": 'You are a helpful assistant. Answer the following user query in 1 or 2 sentences: ' + user_query
            },
            {
                "type": "image_url",
                "image_url": {
                "url": f"data:image/jpeg;base64,{image}",
                }
            }]
        }
    ]

    return messages

دعونا نُنشئ نسخة من واجهة النموذج باستخدام فئة theModelInference. في هذا البرنامج التعليمي، سنستخدم نموذج themeta-llama/llama-3-2-90b-vision-instruct.

model = ModelInference(
    model_id="meta-llama/llama-3-2-90b-vision-instruct",
    credentials=credentials,
    project_id=WATSONX_PROJECT_ID,
    params={
        "max_tokens": 200
    }
)

الخطوة 6. إنشاء تسميات توضيحية للصور

والآن، يمكننا استعراض صورنا لرؤية الأوصاف النصية التي ينتجها النموذج استجابةً لاستعلام، "ماذا يحدث في هذه الصورة؟"

for i in range(len(encoded_images)):
    image = encoded_images[i]
    user_query = "What is happening in this image?"
    messages = augment_api_request_body(user_query, image)
    response = model.chat(messages=messages)
    print(response['choices'][0]['message']['content'])

المخرجات

تُظهر هذه الصورة شارعًا مزدحمًا في مدينة به مبانٍ شاهقة وسيارات، وأشخاص يمشون على الرصيف. الشارع مليء بإشارات المرور والأشجار وإشارات الشوارع، وهناك العديد من الأشخاص يعبرون الشارع عند تقاطع طرق.
تُظهر الصورة امرأة مرتدية زيًا رياضيًا وتركض في الشارع، مع ظهور مبنى وسيارة في الخلفية. امرأة مرتدية كنزة صفراء بقبعة وبنطلونًا ضيقًا أسود وحذاءً رياضيًا، ويبدو أنها تمارس رياضة الركض أو الجري العادي.
تُظهر الصورة منطقة غمرتها المياه، وتغطي المياه الأرض والمباني المحيطة بها. ويبدو أن الفيضانات كانت شديدة، حيث وصل منسوب المياه إلى أسطح بعض المباني.
**وصف الصورة**

* تُظهر الصورة لقطة مقربة لملصق العناصر الغذائية، مع توجيه إصبع إليها.
* يوفر الملصق معلومات مفصلة عن المحتوى الغذائي لصنف معين، يحتوي على:
        + السعرات الحرارية
        + الدهون
        + الصوديوم
        + الكربوهيدرات
        + معلومات أخرى ذات صلة
        * يُعرض الملصق على خلفية بيضاء بنص أسود، ما يجعله سهل القراءة والفهم.

نجح نموذج Llama 3.2-90b-vision-instruct في إنشاء تسميات توضيحية لكل صورة بتفاصيل دقيقة.

الخطوة 7. اكتشاف الكائنات

الآن بعد أن استعرضنا الإمكانات التي يتمتع بها النموذج في تحويل الصور إلى نص في الخطوة السابقة، دعونا نطرح على النموذج بعض الأسئلة التي تتطلب اكتشاف الكائنات. وفيما يتعلق بالصورة الثانية لامرأة تركض في الهواء الطلق، سنسأل النموذج: "كم عدد السيارات الموجودة في هذه الصورة؟"

image = encoded_images[1]
user_query = "How many cars are in this image?"
messages = augment_api_request_body(user_query, image)
response = model.chat(messages=messages)
print(response['choices'][0]['message']['content'])

النتيجة: توجد سيارة واحدة في هذه الصورة. السيارة متوقفة في الشارع على يمين المبنى.

تعرف النموذج على السيارة الوحيدة في الصورة بشكل صحيح. والآن، دعونا نستعلم عن الأضرار التي صورتها صورة الفيضان.

image = encoded_images[2]
user_query = "How severe is the damage in this image?"
messages = augment_api_request_body(user_query, image)
response = model.chat(messages=messages)
print(response['choices'][0]['message']['content'])

النتيجة: الضرر في هذه الصورة جسيم، حيث غطت مياه الفيضان جزءًا كبيرًا من الأرض ومن المحتمل أن تتسبب في أضرار جسيمة للمنشآت والمحاصيل. ويبدو أن منسوب المياه يصل إلى مستوى الخصر على أقل تقدير، ما قد يؤدي إلى خسائر فادحة لمالكي العقارات والمزارعين في المنطقة.

تسلط هذه الاستجابة الضوء على قيمة الذكاء الاصطناعي متعدد الوسائط في مجالات مثل التأمين. تمكّن النموذج من الكشف عن مدى الضرر الذي لحق بالمنزل المغمور بالمياه. ومن ثَم، قد يكون هذا أداة فائقة لتحسين وقت معالجة مطالبات التأمين.

بعد ذلك، لنسأل النموذج عن كمية الصوديوم الموجودة في صورة ملصق العناصر الغذائية.

image = encoded_images[3]
user_query = "How much sodium is in this product?"
request_body = augment_api_request_body(user_query, image)
messages = augment_api_request_body(user_query, image)
response = model.chat(messages=messages)
print(response['choices'][0]['message']['content'])

النتيجة: **كمية الصوديوم:** 640 ملليغرام (ملغ)

رائع! تمكّن النموذج من تمييز الكائنات الموجودة بالصور بعد استعلامات المستخدم. نشجعك على تجربة المزيد من الاستعلامات للتثبت من أداء النموذج أكثر.

ملخص

في هذا البرنامج التعليمي، استخدمت نموذج Llama 3.2-90b-vision-instruct لتنفيذ عمليات متعددة الوسائط بما في ذلك إنشاء تسميات توضيحية للصور والإجابة عن الأسئلة المرئية. لمزيد من حالات استخدام هذا النموذج، ندعوك لزيارة صفحة الوثائق الرسمية. ستجد هناك مزيدًا من المعلومات حول معلمات النموذج وإمكاناته. تُعد مخرجات Python مهمة لأنها تبرز إمكانات النظام متعدد الوسائط في استخراج المعلومات من البيانات متعددة الوسائط.

حلول ذات صلة
IBM watsonx.ai

تدريب الذكاء الاصطناعي التوليدي والتحقق من صحته وضبطه ونشره، وكذلك قدرات نماذج الأساس والتعلم الآلي باستخدام IBM watsonx.ai، وهو استوديو الجيل التالي من المؤسسات لمنشئي الذكاء الاصطناعي. أنشئ تطبيقات الذكاء الاصطناعي بسرعة أكبر وببيانات أقل.

اكتشف watsonx.ai
حلول الذكاء الاصطناعي

استفد من الذكاء الاصطناعي في عملك بالاستعانة بخبرة IBM الرائدة في مجال الذكاء الاصطناعي ومحفظة حلولها المتوفرة لك.

استكشف حلول الذكاء الاصطناعي
خدمات الذكاء الاصطناعي

أعدّ ابتكار عمليات ومهام سير العمل الحساسة بإضافة الذكاء الاصطناعي لتعزيز التجارب وصنع القرارات في الوقت الفعلي والقيمة التجارية.

استكشف خدمات الذكاء الاصطناعي
اتخِذ الخطوة التالية

احصل على وصول شامل إلى القدرات التي تغطي دورة حياة تطوير الذكاء الاصطناعي. تمكَّن من إنتاج حلول ذكاء اصطناعي قوية بفضل الواجهات سهلة الاستخدام وعمليات سير العمل السلسة وإمكانية الوصول إلى واجهات برمجة التطبيقات ومجموعات تطوير البرامج القياسية في الصناعة.

استكشف watsonx.ai احجز عرضًا توضيحيًا مباشرًا