LaiCai Flowالدليل
YOLO · ONNX · LaiCai Flow

تدريب نموذج للكشف عن الأجسامLaiCai Flow

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

وصفة اختبارYOLO26n · 960 px ; 17 classes ; officetop and Android agent model contract (Android Agent)
مشهد لعبة جيني مع صناديق الكشف حول ركاز شجرة ووحش
ويمكن لنموذج واحد أن يكشف الطبقات المتعددة ذات الصلة في نفس الموقع، مثل الموارد، والشخصيات، وولايات الجسم.
تدريب نموذج للكشف عن الأجسامLaiCai Flow
YouTube

الطريق الكامل

  1. Captureمجموعة أطر متنوعة
  2. Labelصناديق ضيقة
  3. رقيبالحفاظ على هوية الفصل مستقرة
  4. القطارقيمة الأطر غير المنظورة
  5. الصادراتإنتاج خام من طراز ONNX
  6. الوارداتأضف الوصية (config.json)

قبل أن تبدأ

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

هل يجب أن يكون الركاز، الخشب، والوحوش في نموذج واحد؟

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

01

إعداد شاشات مفيدة

جمع الإطارات من الجهاز الدقيق، والتسوية، ومستوى التكبير، والجودة البصرية التي ستراه لاي كاي. ويكتسي التنوع أهمية أكبر من توفير العديد من أطر الفيديو المتتالية التي تبدو متطابقة تقريبا.

  • Include different positions, sizes, lighting, backgrounds, animation frames, and partial occlusion.
  • حافظوا على أمثلة صعبة: أشياء صغيرة، أطراف حافة، طائشة، جمهور، غير أهداف متشابهة بصريا.
  • أضف بعض الصور الخلفية حيث لا يظهر أي من صفوفك المستهدفة ملفاتهم فارغة
  • ليس هناك حد أدنى عالمي وللاختبار الأول، يستهدف ما لا يقل عن ٥٠ صندوقا متنوعا لكل فصل؛ وتحتاج الفصول الصعبة أو المماثلة عادة إلى ١٠٠-٢٠٠ أو أكثر.
02

تصميم قائمة الطبقة قبل وضع العلامات

يجب أن يمثل الفصل قراراً بصرياً واحداً يجب أن يتخذه التدفق إبقاء الأسماء قصيرة، فريدة، ومستقرة لأن نفس الطلب يستخدمYOLOالبطاقات، البيانات، والثقة، والرؤية، واختيار الصف. (vision.detect · config.json · data.yaml)

معالجة الولايات المختلفة بصريا كصفوف منفصلة

If a collected resource still resembles the available resource, label both states, for example Copper and CopperDepleted. ولا تتوقع عتبة الثقة وحدها لفصل ولايتين مرئيتين حقيقيتين بشكل موثوق.

مقارنة جانبية لمورد النحاس المتاح وموارد مستنفدة، لكل منها صندوق كشف منفصل
استخدام فصول منفصلة عندما يكون التشغيل الآلي مختلفاً مع الولاياتتين.
  • كل حالة واضحة لكل فئة مستهدفة يجب تسميتها يتم تعلم هدف غير محدد كخلفية
  • Use the same box policy everywhere: tight around the visible object, without large margins.
  • نُسخت أسماء مفضلة مثل النحاس أو النحاس عندما تغير أداة الوسم الأماكن.
03

Label in MakeSense.ai

(كيسينس آي) هو أداة توسيم قائمة على المروجين For LaiCai models, choose Object Detection, use rectangular boxes, and exportYOLOشروح (MakeSense.ai)

  1. 1

    افتح الماكيسيس وارفع صور المصدر حافظ على ملف الصور الأصلي الخاص بك؛ والعلامة المصدرة ZIP لا يحل محله. (MakeSense.ai)

  2. 2

    اختر كشف الأجسام وليس التعرف على الصور (Object Detection · Image Recognition)

  3. 3

    إنشاء القائمة النهائية في ترتيب ثابت، ثم رسم تراجع حول كل حالة مستهدفة.

  4. 4

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

  5. 5

    Export Rect annotations as a ZIP package inYOLOشكل

04

بناء واحد نظيفYOLOالبيانات

كل صورة لها نفس اسم ملف بطاقة توكست Split by recording session or time range, not by randomly scattering adjacent video frames across train and validation.

Dataset
dataset/
├── images/
│   ├── train/
│   └── val/
├── labels/
│   ├── train/
│   └── val/
└── data.yaml
data.yaml
path: /absolute/path/to/dataset
train: images/train
val: images/val

names:
  0: Copper
  1: CopperDepleted
  2: Wood
  3: Monster

A practical starting split is 80% train and 20% validation. ويجب أن تتضمن مجموعة المصادقة مشاهد غير مرئية حقا.

  • من أجل دفعة شروح جديدة، لا تحتاج إلى رفع الصور القديمة إلى ماكينس.اي مرة أخرى. (MakeSense.ai)
  • دمج الصور والعلامات الجديدة خارج الخط، ثم جني بطاقات هوية رقمية بالاسم الفصلي حتى يبقى النظام الأصلي دون تغيير.
  • التأقلم مع مجموعة البيانات القديمة الجديدة التدريب فقط على الصور الجديدة يمكن أن تجعل الفصول القديمة تتصرف كالخلفية.
مثالYOLOرسم بياني يبين عدد الحالات الملصقة حسب الفئة وحجم الصندوق
تحقق من عدد الفصول قبل التدريب والفصل الذي لا يوجد سوى بضعة أمثلة ينتج مقاييس غير مستقرة حتى لو كانت النتيجة العامة تبدو جيدة.
05

Install Ultralytics and train

The example below uses versions verified with this workflow. نموذج نانو هو امن نقطة انطلاق للكشف المستمر استخدام 640 باكس للأجسام الكبيرة و 960 باكس عندما تكون الأهداف المهمة صغيرة.

تهيئة بيئة معزولة
python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
pip install ultralytics==8.4.138 onnx==1.22.0 \
  onnxruntime==1.29.0 onnxslim==0.1.96

بارامترات البدء الموصى بها

البارامتراتالقيمة الناشئةلماذا
modelYOLO26nصغيرة وسريعة بما فيه الكفاية للضغط الأول.
imgsz960 / 640Use 960 for small targets; use 640 when targets are larger or speed matters more.
epochs200يضع سقفاً كريماً بينما يتوقف مبكراً يمكن أن ينتهي قريباً
patience40ولم تتحسن حالات التوقف بعد التصديق بالنسبة لأربعين نقطة.
batch8خفض إلى 4 أو 2 إذا نفذت الذاكرة؛ ولا تزيد إلا بعد القياس.
devicemps / 0 / cpu(أبل سيليكون) يستخدم (أمبير) و (نيفيدا) يستخدم صفراً و أي آلة يمكن أن تستخدم (كبو)
workers4نقطة انطلاق متحفظة
seed42ويسهل استنساخ البيانات ومقارنات التدريب.
close_mosaic15المصابون بالهزاء قرب النهاية حتى يشاهدون صوراً طبيعية أكثر
train.py
from ultralytics import YOLO

model = YOLO("yolo26n.pt")
model.train(
    data="dataset/data.yaml",
    imgsz=960,
    epochs=200,
    patience=40,
    batch=8,
    device="mps",  # NVIDIA: 0 · CPU: "cpu"
    workers=4,
    seed=42,
    close_mosaic=15,
)
06

قيّم النموذج، ليس فقط منحنى الخسارة

استخدام أفضل نقاط التفتيش، وفحص التنبؤات على الشاشات غير المرئية، واستعراض كل فئة على حدة. النتيجة العالمية العالية يمكن أن تخفي طبقة نادرة ضعيفة.

  • الدقة: كم عدد حالات الكشف المبلغ عنها صحيحة.
  • Recall: how many real objects were found.
  • mAP50 and mAP50-95: overall localization and classification quality across thresholds.
  • مصفوفة الكونفوس: أي صفوف مخطوءة لبعضها البعض أو لخلفية.
Example Ultralytics training loss and validation metric curves
وينبغي أن تنخفض الخسائر في التدريب مع استقرار مقاييس التحقق. استخدمي أفضل ما تم إنقاذه ليس تلقائياً (best.pt)
مصفوفة الارتباك المطّردة لجهاز كشف متعدد الطبقات
فتّشوا التشخيص و الصف الخلفي و العمود فصول مماثلة من الولايات تستحق الشيكات الخاصة بها.
07

Export a LaiCai-compatible ONNX model

(لاي كاي) تستورد (إنكس) وليس الملف التدريبي Export one static NCHW RGB input, batch 1, float32 or float16, and raw one-to-many predictions so LaiCai can apply confidence filtering and NMS. (ONNX)

export.py
from ultralytics import YOLO

model = YOLO("runs/detect/train/weights/best.pt")
model.export(
    format="onnx",
    imgsz=960,
    batch=1,
    dynamic=False,
    simplify=True,
    nms=None,
)

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

اختار الدليل نفسه في مكتبة لاي كاي النموذجية. يجب أن يحتوي الدليل على الوصية و الملف الخاص بـ (أن نكس) مسمّى بالنموذج (فايل) يجب أن تبدأ بطاقات الهوية من الدرجة صفر وأن تبقى متقاربة. (ONNX · config.json · modelFile)

Model directory
game-objects/
├── config.json
└── model.onnx
config.json
{
  "id": "game-objects-v1",
  "name": "Game Objects v1",
  "type": "yolo",
  "modelFile": "model.onnx",
  "outputFormat": "raw_yolo_no_objectness",
  "id2label": {
    "0": "Copper",
    "1": "CopperDepleted",
    "2": "Wood",
    "3": "Monster"
  },
  "label2id": {
    "Copper": 0,
    "CopperDepleted": 1,
    "Wood": 2,
    "Monster": 3
  }
}

مستورد بالتحذيرات؟

إذا قال (لاي كاي) أنّ الوصية مفقودة أو غير قابلة للقراءة، فقد اخترت ملفّاً لـ(أنكس) أو ملفاً ناقصاً. استورد الدليل المثالي الكامل وتأكد من أن (إيد2لابل) أو (أو سم2د) يعرف كل صف (ONNX · config.json · id2label · label2id)

08

Import and test in LaiCai

مفتوحLaiCai Flowأذهب إلى المكتبة النموذجية، واستورد الدليل المعد، وأكّد أن النموذج مقارن قبل استخدامه في الرؤية. كشف (vision.detect)

  • (ب) اختيار النموذج في المكتبة النموذجية وتأكيد مدخله، والناتج، وشكل النواتج، وقائمة الطبقة.
  • Use Test Current Screen with a class and a reasonable starting threshold such as 0.5.
  • اختبار الأطر الإيجابية والأطر السلبية أو المحيرة. الدعوة الناجحة لا تشبه الجسم المكتشف
  • بعد التثبت المكتبي، اختبار نفس النموذج بشكل منفصل على أندرويد وكيل إذا فلو سير على الهاتف. (Android Agent)
V2+

كيفية تحسين النسخة القادمة

أنقذ الصور الأصليةYOLOعلامات، قائمة الطبقة، بيانات يامل، قيادة تدريب، وأفضل معا. وهذه الملفات هي مصدر البيانات القابلة لإعادة الاستخدام؛ وملف شركة " أنكس " المصدرة وحدها لا يكفي لإعادة التدريب الموثوق به. (ONNX · data.yaml · best.pt)

  1. جمع إيجابيات زائفة، أشياء مفقودة، بيئات جديدة، ولايات بصرية جديدة من عمليات حقيقية.
  2. لابل فقط الصور الجديدة في مكسينس آي باستخدام سياسة الفصل النهائي (MakeSense.ai)
  3. البيانات القديمة والجديدة، الحفاظ على هويات الفصل بالاسم، ثم تقسيم مرة أخرى.
  4. بدء تشغيل جديد من الأفضل سابقاً، عندما يكون رسم الخرائط متوافقاً، وتحقق من الحالات القديمة والجديدة. (best.pt)
لا تترك أبداً أصنافاً قديمة مرئية غير مثبتة في الصور الجديدة وسيعاملون كخلفية أثناء التدريب.

المسائل المشتركة

هل عليّ إعادة توصيل جميع الصور القديمة إلى "كيسيس آي"؟ (MakeSense.ai)

لا وضع علامة على الدفعة الجديدة، تصديرها، ودمجها مع نظام البيانات القديم المنقذ. إعادة تصنيف البيانات القديمة فقط عندما تحتاج لتصحيح الشروح القديمة

هل يمكنني ببساطة إضافة صف جديد؟

نعم، ولكن تذييله بعد الفصول الحالية وجني التصدير الجديد باسم الصف. ثم إعادة التدريب على مجموعة البيانات كاملة حتى تظل الفصول القديمة ممثلة.

لماذا لا يزال النموذج يكتشف مورداً مجمّعاً؟

والولاياتتان متشابهتان بصرياً ولم يتعلم النموذج التمييز. يضاف فصل مستقل من فئة الولايات المستنفدة أو أمثلة مؤكدة ذات حجية صلبة، ثم يعاد تدريب مصفوفة الارتباك واستعراضها.

هل يجب أن أرفع عتبة الثقة لأصلح كل إيجابي كاذب؟

لا A threshold can trade recall for precision, but it cannot replace missing classes, inconsistent labels, or confusing negative examples.

المراجع الرسمية

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

استمرLaiCai Flow

بعد أن يكون النموذج متوافقاً، استخدم الرؤية الكشف عن اختيار طبقة، وعتبة، ومنطقة شاشة، ثم ربط النجاح أو الفشل بالعمل التالي. (vision.detect)