إنشاء خبير أزياء مدعوم بالذكاء الاصطناعي من خلال IBM Granite باستخدام watsonx.ai

في هذا البرنامج التعليمي، سوف نرشدك حول كيفية إنشاء خبير أزياء شخصي مدعوم بالذكاء الاصطناعي التوليدي. يستفيد هذا البرنامج التعليمي من النموذج اللغوي الكبير IBM Granite™ Vision 3.2 لمعالجة مدخلات الصور وGranite 3.2 مع أحدث إمكانات الاستدلال المحسنة لصياغة أفكار ملابس قابلة للتخصيص.

مقدمة

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

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

يتكون حلنا المستند إلى الذكاء الاصطناعي من المراحل التالية:

  1. يحمل المستخدم صورًا لخزانة ملابسه الحالية أو حتى ملابس يرغب في ارتدائها، كل قطعة بمفردها.
  2. يحدد المستخدم المعايير التالية: 
  • المناسبة: غير رسمية أو رسمية.
  • الوقت من اليوم: صباحًا، أو ظهرًا، أو مساءً.
  • الفصل: الشتاء، أو الربيع، أو الصيف، أو الخريف.
  • الموقع (على سبيل المثال، مقهى).

3. بمجرد تقديم الإدخال، يُجري نموذج Granite Vision 3.2 متعدد الوسائط دورات متكررة على قائمة الصور ويُقدم النتائج التالية:

  • وصف القطعة.
  • الفئة: قميص أو بنطلون أو حذاء.
  • المناسبة: غير رسمية أو رسمية.

4. يعمل نموذج Granite 3.2 الذي يتميز بالاستدلال المحسن عندئذٍ كخبير أزياء. يستخدم النموذج اللغوي الكبير إخراج نموذج Vision لتقديم توصية بملابس ملائمة لمناسبة المستخدم.

5. يُعرض اقتراح الملابس وإطار بيانات القطع التي حملها المستخدم والصور الموجودة في التوصية الشخصية الموصوفة على المستخدم.

المتطلبات الأساسية

تحتاج إلى حساب ®IBM Cloud لإنشاء مشروع ™watsonx.ai .

الخطوات

لاستخدام واجهة برمجة تطبيق watsonx، ستحتاج إلى إكمال الخطوات التالية. ملاحظة، يمكنك أيضًا الوصول إلى هذا البرنامج التعليمي على GitHub

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

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

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

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

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

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

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

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

الخطوة 3. نسخ المستودع (اختياري)

للحصول على تجربة أكثر تفاعلية عند استخدام أداة الذكاء الاصطناعي هذه، انسخ مستودع GitHub واتبع تعليمات الإعداد الواردة في ملف README.md ضمن مشروع خبير الأزياء المدعوم بالذكاء الاصطناعي لتشغيل تطبيق Streamlit على جهازك المحلي. أما إذا كنت تفضل المتابعة خطوة بخطوة، فأنشئ Jupyter Notebook وتابع هذا البرنامج التعليمي.

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

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

# Install required packages
!pip install -q image ibm-watsonx-ai
# Required imports
import getpass, os, base64, json
from ibm_watsonx_ai import Credentials
from ibm_watsonx_ai.foundation_models import ModelInference
from PIL import Image

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

WATSONX_APIKEY = getpass.getpass("Please enter your watsonx.ai Runtime API key (hit enter): ")
WATSONX_PROJECT_ID = getpass.getpass("Please enter your project ID (hit enter): ")
URL = "https://us-south.ml.cloud.ibm.com"

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

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

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

يتم augment_api_request_body تأخذ الدالة استعلام المستخدم والصورة كمعلمات وتثري نص طلب واجهة برمجة التطبيقات. سوف نستخدم هذه الدالة في كل دورة لاستدلال نموذج Vision.

def augment_api_request_body(user_query, image):
    messages = [
        {
            "role": "user",
            "content": [{
                "type": "text",
                "text": user_query
            },
            {
                "type": "image_url",
                "image_url": {
                    "url": f"data:image/jpeg;base64,{image}"
                }
            }]
        }
    ]
return messages

يمكننا أيضًا إنشاء نسخة من واجهة النموذج باستخدام فئة ModelInference  .

model = ModelInference(
    model_id="ibm/granite-vision-3-2-2b",
    credentials=credentials,
    project_id=WATSONX_PROJECT_ID,
    params={
        "max_tokens": 400,
        "temperature": 0
    }
)

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

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

directory = "images" #directory name
images = []
filenames = []
for filename in os.listdir(directory):
    if filename.endswith(".jpeg") or filename.endswith(".png"):
        filepath = directory + '/' + filename
        with open(filepath, "rb") as f:
            images.append(base64.b64encode(f.read()).decode('utf-8'))
        filenames.append(filename)

الخطوة 7. تصنيف الإدخال باستخدام نموذج Vision

الآن بعد أن حمّلنا صورنا وشفرناها، يمكننا استعلام نموذج Vision. موجهنا خاص بالمخرجات المرغوبة للحد من إبداع النموذج حيث إننا نبحث عن مخرجات صالحة بتنسيق JSON. سنخزن الوصف والفئة والمناسبة لكل صورة في قائمة تسمى closet .

user_query = """Provide a description, category, and occasion for the clothing item or shoes in this image.
                Classify the category as shirt, pants, or shoes.
                Classify the occasion as casual or formal.
                Ensure the output is valid JSON. Do not create new categories or occasions. Only use the allowed classifications.
                Your response should be in this schema:
                {
                    "description": "<description>",
                    "category": "<category>",
                    "occasion": "<occasion>"
                }
                """

image_descriptions = []
for i in range(len(images)):
    image = images[i]
    message = augment_api_request_body(user_query, image)
    response = model.chat(messages=message)
    result = response['choices'][0]['message']['content']
    print(result)
    image_descriptions.append(result)

المخرجات:

{
    "description": "A pair of polished brown leather dress shoes with a brogue detailing on the toe box and a classic oxford design.",
    "category": "shoes",
    "occasion": "formal"
}
{
    "description": "A pair of checkered trousers with a houndstooth pattern, featuring a zippered pocket and a button closure at the waist.",
    "category": "pants",
"occasion": "casual"
}
{
    "description": "A light blue, button-up shirt with a smooth texture and a classic collar, suitable for casual to semi-formal occasions.",
    "category": "shirt",
    "occasion": "casual"
}
{
    "description": "A pair of khaki pants with a buttoned waistband and a button closure at the front.",
    "category": "pants",
    "occasion": "casual"
}
{
    "description": "A blue plaid shirt with a collar and long sleeves, featuring chest pockets and a button-up front.",
    "category": "shirt",
    "occasion": "casual"
}
{
    "description": "A pair of bright orange, short-sleeved t-shirts with a crew neck and a simple design.",
    "category": "shirt",
    "occasion": "casual"
}
{
    "description": "A pair of blue suede sneakers with white laces and perforations, suitable for casual wear.",
    "category": "shoes",
    "occasion": "casual"
}

{
    "description": "A pair of red canvas sneakers with white laces, isolated on a white background.",
    "category": "shoes",
    "occasion": "casual"
}
{
    "description": "A pair of grey dress pants with a smooth texture and a classic design, suitable for formal occasions.",
    "category": "pants",
    "occasion": "formal"
}
{
    "description": "A plain white T-shirt with short sleeves and a crew neck, displayed from the front and back.",
    "category": "shirt",
    "occasion": "casual"
}
{
    "description": "A black short-sleeved t-shirt with a crew neck and a simple design.",
    "category": "shirt",
    "occasion": "casual"
}
{
    "description": "Black pants with a zippered pocket and a buttoned fly, showing the waistband and pocket details.",
    "category": "pants",
    "occasion": "casual"
}
{
    "description": "A pair of tan leather boots with a chunky sole and a high-top design, suitable for casual wear.",
    "category": "shoes",
    "occasion": "casual"
}

الخطوة 8. إنشاء أطقم ملابس باستخدام نموذج الاستدلال

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

reasoning_model = ModelInference(
    model_id="ibm/granite-3-2-8b-instruct",
    credentials=credentials,
    project_id=WATSONX_PROJECT_ID
)

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

# Add filenames to the image descriptions
closet = []
for i, desc in enumerate(image_descriptions):
    desc_dict = json.loads(desc)
    desc_dict['filename'] = filenames[i]
    image_descriptions[i] = json.dumps(desc_dict)

closet = [json.loads(js) for js in image_descriptions]

والآن، دعونا نقدم استعلامًا لنموذج Granite 3.2 المزود بإمكانات استدلال لإنتاج طقم يناسب معاييرنا المحددة باستخدام قائمة closet  .

occasion = input("Enter the occasion") #casual or formal (e.g. "casual")
time_of_day = input("Enter the time of day") #morning, afternoon or evening (e.g. "morning")
location = input("Enter the location") #any location (e.g. "park")
season = input("Enter the season") #spring, summer, fall or winter (e.g. "fall")

prompt = f"""Use the description, category, and occasion of the clothes in my closet to put together an outfit for a {occasion} {time_of_day} at the {location}. The event takes place in the {season} season. Make sure to return only one shirt, bottoms, and shoes. Use the description, category, and occasion provided. Do not classify the items yourself. Include the file name of each image in your output along with the file extension. Here are the items in my closet: {closet}"""

messages = [
        {"role": "control",
        "content": "thinking"},
        {"role": "user",
        "content": [
                {"type": "text",
                 "text": f"{prompt}"}
            ]}
        ]
outfit = reasoning_model.chat(messages=messages)['choices'][0]['message']['content']
print(outfit)

المخرجات

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

إليك ردي:

لقضاء صباح غير رسمي في الحديقة خلال فصل الخريف، أقترح أن ترتدي الطقم التالي:

1. **قميص**: قميص أزرق منقوش بياقة وأكمام طويلة (الملف: "image13.jpeg")
- النمط المنقوش هو نمط كلاسيكي لفصل الخريف ويتناسب بشكل جيد مع أجواء الحديقة غير الرسمية. تمنحك الأكتاف الطويلة بعض الدفء في فترات انخفاض درجات الحرارة في الصباح.

2. **بنطلون**: بنطلون كاكي بحزام خصر مزود بأزرار وزر للإغلاق من الأمام (الملف: "image7.jpeg")
- اللون الكاكي خيار عملي يمكن أن يتناسب مع الأجواء غير الرسمية ويمنحك أيضًا تناسقًا رائعًا مع القميص المنقوش. إنه عملي ومريح للتجول.

3. **حذاء**: بوت جلد باللون البني الفاتح ذو نعل سميك وتصميم رقبة عالية (الملف: "image3.jpeg")
- يقدّم لك البوت الجلديّ باللون البني الفاتح خيارًا أنيقًا ومريحًا في الوقت نفسه. يمنحك النعل السميك ثباتًا وتوازنًا جيدًا، وهو مثالي للتنقل في مسارات الحديقة أو الأراضي غير المستوية.

يوفر هذا المزيج إطلالة عملية ومريحة ومناسبة لنزهة صباحية غير رسمية، مع الحفاظ على الراحة والعملية أيضًا.

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

selected_items = []
#extract the images of clothing that the model recommends
for item, uploaded_file in zip(closet, images):
    if item['filename'].lower() in outfit.lower() and not any(key['filename'] == item['filename'] for key in selected_items):
        selected_items.append({
            'image': uploaded_file,
            'category': item['category'],
            'filename': item['filename']
        })

#display the selected clothing items
if len(selected_items) > 0:
    for item in selected_items:
        display(Image.open(directory + '/' + item['filename']))

الخاتمة

في هذا البرنامج التعليمي، أنشأت نظامًا يستخدم الذكاء الاصطناعي لتقديم نصائح حول تنسيق الملابس لمناسبة المستخدم المحددة. باستخدام صور أو لقطات شاشة لملابس المستخدم، تُخصص الأطقم لتلبية المعايير المحددة. كان نموذج Granite-Vision-3-2-2b مهمًا في تسمية كل قطعة وتصنيفها. بالإضافة إلى ذلك، استفاد نموذج Granite-3-2-8B-instruct من إمكاناته الاستدلالية لتوليد أفكار أطقم مخصصة.

يمكن أن تتضمن بعض الخطوات التالية للبناء على هذا التطبيق ما يلي:

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

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

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

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

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

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

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

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

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