Skip to content
Guides9 min read

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

أعدّ كشف الأجسام المدعوم بالذكاء الاصطناعي والتوصيف المسبق والتصنيف لمهام الصور والفيديو مع YOLO وOllama وOpenAI وClaude.

Potato Team·

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

يقدم Potato 2.1 دعم الذكاء الاصطناعي البصري الذي يجلب المساعدة المدعومة بالذكاء الاصطناعي مباشرة إلى سير عمل توصيف الصور والفيديو. بدلاً من توصيف كل مربع إحاطة من الصفر، يمكنك جعل YOLO يكشف الأجسام تلقائياً ثم مراجعة اقتراحاته، أو اطلب من نموذج رؤية-لغة تصنيف الصور وشرح استدلاله.

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

ما ستتعلمه

  • إعداد YOLO لكشف الأجسام المحلي السريع
  • تشغيل نماذج Ollama Vision للفهم المحلي للصور
  • استخدام واجهات OpenAI وAnthropic السحابية للرؤية
  • إعداد أوضاع الكشف والتوصيف المسبق والتصنيف والتلميحات
  • الجمع بين نقاط نهاية الذكاء الاصطناعي البصري والنصي في مشروع واحد
  • سير عمل القبول/الرفض لمراجعة اقتراحات الذكاء الاصطناعي

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

ستحتاج Potato 2.1.0 أو أحدث:

bash
pip install --upgrade potato-annotation

وحسب نقطة النهاية التي تختارها، ستحتاج أحد هذه:

  • YOLO: pip install ultralytics opencv-python
  • Ollama: ثبّت من ollama.ai واسحب نموذج رؤية
  • OpenAI: مفتاح API مع وصول إلى GPT-4o
  • Anthropic: مفتاح API مع وصول إلى نماذج رؤية Claude

الخيار 1: YOLO لكشف الأجسام

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

الإعداد

bash
pip install ultralytics opencv-python

الإعدادات

yaml
annotation_task_name: "Object Detection with YOLO"
 
data_files:
  - data/images.json
 
item_properties:
  id_key: id
  text_key: image_url
 
instance_display:
  fields:
    - key: image_url
      type: image
      display_options:
        max_width: 800
        zoomable: true
 
annotation_schemes:
  - annotation_type: image_annotation
    name: objects
    description: "Detect and label objects"
    source_field: "image_url"
    tools:
      - bbox
    labels:
      - name: "person"
        color: "#FF6B6B"
      - name: "car"
        color: "#4ECDC4"
      - name: "dog"
        color: "#45B7D1"
      - name: "cat"
        color: "#96CEB4"
 
    ai_support:
      enabled: true
      features:
        detection: true
        pre_annotate: true
        hint: true
 
ai_support:
  enabled: true
  endpoint_type: "yolo"
  ai_config:
    model: "yolov8m.pt"
    confidence_threshold: 0.5
    iou_threshold: 0.45
 
output_annotation_dir: "annotation_output/"
user_config:
  allow_all_users: true

تنسيق البيانات

أنشئ data/images.json بتنسيق JSONL (كائن JSON واحد لكل سطر):

json
{"id": "img_001", "image_url": "images/street_scene_1.jpg"}
{"id": "img_002", "image_url": "images/park_photo.jpg"}
{"id": "img_003", "image_url": "https://example.com/images/office.jpg"}

اختيار نموذج YOLO

النموذجالحجمالسرعةالدقةالأفضل لـ
yolov8n.pt6 MBالأسرعأقلنماذج أولية سريعة
yolov8s.pt22 MBسريعجيدأعباء عمل متوازنة
yolov8m.pt50 MBمتوسطأفضلاستخدام عام
yolov8l.pt84 MBأبطأعالٍعندما تهم الدقة
yolov8x.pt131 MBالأبطأالأعلىأقصى دقة

لكشف أجسام ليست في فئات YOLO المدمجة، استخدم YOLO-World للكشف بمفردات مفتوحة:

yaml
ai_config:
  model: "yolo-world"
  confidence_threshold: 0.3

ضبط الكشف

إذا كان YOLO يفوّت أجساماً، خفّض عتبة الثقة:

yaml
ai_config:
  confidence_threshold: 0.3  # More detections, more false positives

إذا كنت تحصل على إيجابيات كاذبة كثيرة، ارفعها:

yaml
ai_config:
  confidence_threshold: 0.7  # Fewer detections, higher precision

الخيار 2: Ollama Vision لنماذج الرؤية المحلية

يمنحك Ollama Vision قوة نماذج الرؤية واللغة محلياً. بخلاف YOLO، يمكن لهذه النماذج فهم سياق الصورة وتصنيف المشاهد وإنشاء تفسيرات نصية -- كل ذلك بدون إرسال البيانات لواجهة سحابية.

الإعداد

bash
# Install Ollama
curl -fsSL https://ollama.ai/install.sh | sh
 
# Pull a vision model
ollama pull llava
 
# Or for better performance:
ollama pull qwen2.5-vl:7b

الإعدادات

yaml
annotation_task_name: "Image Classification with Ollama Vision"
 
data_files:
  - data/images.json
 
item_properties:
  id_key: id
  text_key: image_url
 
instance_display:
  fields:
    - key: image_url
      type: image
      display_options:
        max_width: 600
        zoomable: true
 
annotation_schemes:
  - annotation_type: radio
    name: scene_type
    description: "What type of scene is shown?"
    labels:
      - indoor
      - outdoor_urban
      - outdoor_nature
      - aerial
      - underwater
 
    ai_support:
      enabled: true
      features:
        hint: true
        classification: true
 
ai_support:
  enabled: true
  endpoint_type: "ollama_vision"
  ai_config:
    model: "llava:latest"
    base_url: "http://localhost:11434"
    max_tokens: 500
    temperature: 0.1
 
output_annotation_dir: "annotation_output/"
user_config:
  allow_all_users: true

النماذج المدعومة

النموذجالمعاملاتنقاط القوة
llava:7b7Bسريع، فهم عام جيد
llava:13b13Bدقة أفضل
llava-llama38Bاستدلال قوي
bakllava7Bتفاصيل بصرية جيدة
llama3.2-vision:11b11Bأحدث رؤية Llama
qwen2.5-vl:7b7Bمتعدد اللغات + رؤية قوية
moondream1.8Bسريع جداً، خفيف

الخيار 3: OpenAI Vision

يوفر OpenAI Vision فهم صور عالي الجودة من خلال GPT-4o. الأفضل عندما تحتاج لأقوى نموذج رؤية ولا تمانع تكاليف واجهة السحابة.

الإعدادات

yaml
ai_support:
  enabled: true
  endpoint_type: "openai_vision"
  ai_config:
    api_key: "${OPENAI_API_KEY}"
    model: "gpt-4o"
    max_tokens: 1000
    detail: "auto"  # "low" for faster/cheaper, "high" for detail

عيّن مفتاح API:

bash
export OPENAI_API_KEY="sk-..."

معامل detail يتحكم في دقة الصورة المرسلة للواجهة:

  • low -- أسرع وأرخص، جيد للتصنيف
  • high -- دقة كاملة، أفضل لإيجاد أجسام صغيرة
  • auto -- دع الواجهة تقرر

الخيار 4: Anthropic Vision

قدرات رؤية Claude قوية في فهم سياق الصورة وتقديم تفسيرات مفصلة.

الإعدادات

yaml
ai_support:
  enabled: true
  endpoint_type: "anthropic_vision"
  ai_config:
    api_key: "${ANTHROPIC_API_KEY}"
    model: "claude-sonnet-4-20250514"
    max_tokens: 1024
bash
export ANTHROPIC_API_KEY="sk-ant-..."

أوضاع المساعدة بالذكاء الاصطناعي

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

وضع الكشف

يجد الأجسام المطابقة لتسمياتك المُعدّة ويعرضها كتراكبات مربعات إحاطة متقطعة:

yaml
ai_support:
  enabled: true
  features:
    detection: true

ينقر المُوصِّف "كشف"، وتظهر اقتراحات الذكاء الاصطناعي كتراكبات متقطعة على الصورة. نقر مزدوج للقبول، نقر يمين للرفض.

وضع التوصيف المسبق (تلقائي)

يكشف تلقائياً جميع الأجسام وينشئ اقتراحات في مسح واحد. الأفضل لبدء مجموعات البيانات الكبيرة:

yaml
ai_support:
  enabled: true
  features:
    pre_annotate: true

وضع التصنيف

يصنّف منطقة محددة أو الصورة بأكملها، مُعيداً تسمية مقترحة مع درجة ثقة:

yaml
ai_support:
  enabled: true
  features:
    classification: true

وضع التلميحات

يقدم نص إرشادي دون الكشف عن الإجابة. جيد لتدريب المُوصِّفين الجدد:

yaml
ai_support:
  enabled: true
  features:
    hint: true

سير عمل القبول/الرفض

عندما ينقر المُوصِّف زر مساعدة ذكاء اصطناعي، تظهر الاقتراحات كتراكبات متقطعة:

  1. قبول اقتراح -- نقر مزدوج على التراكب المتقطع لتحويله إلى توصيف حقيقي
  2. رفض اقتراح -- نقر يمين على التراكب لإلغائه
  3. قبول الكل -- انقر "قبول الكل" في شريط الأدوات لقبول كل اقتراح دفعة واحدة
  4. مسح الكل -- انقر "مسح" لإلغاء جميع الاقتراحات

هذا يبقي المُوصِّفين في السيطرة مع تقليل العمل اليدوي لرسم المربعات من الصفر.

توصيف الفيديو مع الذكاء الاصطناعي البصري

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

yaml
annotation_schemes:
  - annotation_type: video_annotation
    name: scenes
    description: "Segment this video into scenes"
    mode: segment
    labels:
      - name: "intro"
        color: "#4ECDC4"
      - name: "main_content"
        color: "#FF6B6B"
      - name: "outro"
        color: "#45B7D1"
 
    ai_support:
      enabled: true
      features:
        scene_detection: true
        pre_annotate: true
        hint: true
 
ai_support:
  enabled: true
  endpoint_type: "ollama_vision"
  ai_config:
    model: "llava:latest"
    max_frames: 10  # Number of frames to sample

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

الجمع بين نقاط نهاية الذكاء الاصطناعي البصري والنصي

إذا كان مشروعك يحتوي على توصيف نصي وصوري، يمكنك إعداد نقاط نهاية منفصلة لكل منهما. استخدم نموذجاً محسّناً للنص للتلميحات والكلمات المفتاحية، ونموذج رؤية للكشف:

yaml
ai_support:
  enabled: true
 
  # Text AI for radio buttons, text schemes, etc.
  endpoint_type: "ollama"
  ai_config:
    model: "llama3.2"
    include:
      all: true
 
  # Visual AI for image/video schemes
  visual_endpoint_type: "yolo"
  visual_ai_config:
    model: "yolov8m.pt"
    confidence_threshold: 0.5

أو استخدم نموذج رؤية سحابي إلى جانب نموذج نص محلي:

yaml
ai_support:
  enabled: true
  endpoint_type: "ollama"
  visual_endpoint_type: "openai_vision"
  ai_config:
    model: "llama3.2"
  visual_ai_config:
    api_key: "${OPENAI_API_KEY}"
    model: "gpt-4o"

مثال كامل: توصيف صور المنتجات

إليك إعداداً جاهزاً للإنتاج لتوصيف صور المنتجات مع كشف YOLO وتلميحات ذكاء اصطناعي نصية:

yaml
annotation_task_name: "Product Photo Annotation"
 
data_files:
  - data/product_photos.json
 
item_properties:
  id_key: sku
  text_key: photo_url
 
instance_display:
  layout:
    direction: horizontal
    gap: 24px
  fields:
    - key: photo_url
      type: image
      label: "Product Photo"
      display_options:
        max_width: 600
        zoomable: true
    - key: product_description
      type: text
      label: "Product Details"
 
annotation_schemes:
  - annotation_type: image_annotation
    name: product_regions
    description: "Draw boxes around products and defects"
    source_field: "photo_url"
    tools:
      - bbox
    labels:
      - name: "product"
        color: "#4ECDC4"
      - name: "defect"
        color: "#FF6B6B"
      - name: "label"
        color: "#45B7D1"
      - name: "packaging"
        color: "#96CEB4"
 
    ai_support:
      enabled: true
      features:
        detection: true
        pre_annotate: true
 
  - annotation_type: radio
    name: photo_quality
    description: "Is this photo suitable for the product listing?"
    labels:
      - Approved
      - Needs editing
      - Reshoot required
 
  - annotation_type: multiselect
    name: quality_issues
    description: "Select any issues present"
    labels:
      - Blurry
      - Poor lighting
      - Wrong angle
      - Background clutter
      - Color inaccurate
 
ai_support:
  enabled: true
  endpoint_type: "ollama"
  visual_endpoint_type: "yolo"
 
  ai_config:
    model: "llama3.2"
    include:
      all: true
 
  visual_ai_config:
    model: "yolov8m.pt"
    confidence_threshold: 0.5
 
output_annotation_dir: "annotation_output/"
output_annotation_format: "json"
user_config:
  allow_all_users: true

بيانات العيّنة (data/product_photos.json):

json
{"sku": "SKU-001", "photo_url": "images/products/laptop_front.jpg", "product_description": "15-inch laptop, silver finish"}
{"sku": "SKU-002", "photo_url": "images/products/headphones_side.jpg", "product_description": "Over-ear wireless headphones, black"}
{"sku": "SKU-003", "photo_url": "images/products/backpack_full.jpg", "product_description": "40L hiking backpack, navy blue"}

نصائح لتوصيف الذكاء الاصطناعي البصري

  1. ابدأ بالتوصيف المسبق لمجموعات البيانات الكبيرة -- استخدم زر التلقائي لإنشاء اقتراحات لجميع الأجسام، ثم اجعل المُوصِّفين يراجعون ويصححون بدلاً من الرسم من الصفر
  2. طابق نقطة النهاية مع مهمتك -- YOLO للكشف الدقيق، نماذج الرؤية واللغة للتصنيف والفهم
  3. اضبط عتبات الثقة -- ابدأ عند 0.5 واضبط بناءً على مقايضة الإيجابيات/السلبيات الكاذبة التي تراها
  4. استخدم التلميحات لتدريب المُوصِّفين -- وضع التلميحات يرشد المُوصِّفين دون تحيزهم نحو إجابة محددة
  5. ادمج نقاط النهاية -- نقطة نهاية بصرية YOLO للكشف مع نقطة نهاية نصية Ollama للتلميحات تمنحك أفضل ما في العالمين
  6. خزّن نتائج الذكاء الاصطناعي مؤقتاً -- فعّل التخزين على القرص لتجنب إعادة تشغيل الكشف على نفس الصور

استكشاف الأخطاء وإصلاحها

"لم يتم إعداد نقطة نهاية ذكاء اصطناعي بصري"

تأكد من أن ai_support.enabled هو true وأنك عيّنت endpoint_type يدعم الرؤية: yolo أو ollama_vision أو openai_vision أو anthropic_vision.

YOLO لا يكشف أجسامك

فئات YOLO المدمجة تغطي 80 جسماً شائعاً. إذا لم تطابق تسمياتك أسماء فئات YOLO، جرّب YOLO-World للكشف بمفردات مفتوحة، أو خفّض confidence_threshold.

Ollama يُرجع أخطاء

تحقق من أن Ollama يعمل وأنك سحبت نموذج رؤية:

bash
curl http://localhost:11434/api/tags  # Check Ollama is running
ollama list                           # Check installed models

استجابة بطيئة من واجهات السحابة

فعّل التخزين المؤقت حتى لا تُحلل نفس الصورة مرتين:

yaml
ai_support:
  cache_config:
    disk_cache:
      enabled: true
      path: "ai_cache/visual_cache.json"

الخطوات التالية


التوثيق الكامل في /docs/features/visual-ai-support.