دفاتر ملاحظات | الاستدلال | Autodistill | يجمع
يستخدم Autodistill نماذج أساسية كبيرة وأبطأ لتدريب النماذج الصغيرة الخاضعة للإشراف. باستخدام autodistill ، يمكنك الانتقال من الصور غير المسماة إلى الاستدلال على نموذج مخصص يعمل على الحافة دون تدخل بشري بينهما.
نصيحة
يمكنك استخدام Autodistill على أجهزتك الخاصة ، أو استخدام الإصدار المستضاف Roboflow من Autodistill لتسمية الصور في السحابة.
حاليًا ، يدعم autodistill مهام الرؤية مثل اكتشاف الكائنات وتجزئة المثيلات ، ولكن في المستقبل يمكن توسيعها لدعم النماذج اللغوية (وغيرها).
| درس تعليمي | مستندات | النماذج المدعومة | يساهم |
|---|
فيما يلي مثال على تنبؤات على نموذج مستهدف يكتشف زجاجات الحليب وعربة زجاجية بعد تدريبه على مجموعة بيانات ذات علامات تلقائية باستخدام Autodistill (انظر فيديو YouTube Autodistill للحصول على تجول كامل):
لاستخدام autodistill ، تقوم بإدخال بيانات غير مسمّلة في نموذج أساسي يستخدم علم الأنطولوجيا لتسمية مجموعة بيانات يتم استخدامها لتدريب نموذج مستهدف يقوم بإخراج نموذج مقطر تم ضبطه بشكل دقيق لأداء مهمة محددة.
يحدد Autodistill العديد من البدائيات الأساسية:
autodistill ليكونوا متوافقين مع بعضها البعض. يتم دعم اكتشاف الكائنات وتجزئة المثيل حاليًا من خلال مهمة detection . سيتم إضافة دعم classification قريبًا.CaptionOntology التي تطالب نموذجًا أساسيًا مع تسميات توضيحية نصية وتخطط لأسماء الفصول الدراسية. قد تستخدم الأنطولوجيا الأخرى ، على سبيل المثال ، متجهًا أو مثالًا على مثال بدلاً من تعليق نص.autodistill ؛ إنها مجموعة من الأوزان التي يتم ضبطها بشكل جيد لمهمتك التي يمكن نشرها للحصول على تنبؤات. يعد وضع العلامات البشرية أحد أكبر الحواجز التي تحول دون اعتماد رؤية الكمبيوتر الواسعة. قد يستغرق الأمر آلاف الساعات لصياغة مجموعة بيانات مناسبة لتدريب نموذج الإنتاج. إن عملية التقطير لتدريب النماذج الخاضعة للإشراف ليست جديدة ، في الواقع ، وضع العلامات البشرية التقليدية مجرد شكل آخر من أشكال التقطير من نموذج قاعدة قادر للغاية (الدماغ البشري؟).
تعرف نماذج الأساس الكثير عن الكثير ، ولكن بالنسبة للإنتاج ، نحتاج إلى نماذج تعرف الكثير عن القليل.
نظرًا لأن نماذج الأساس تتحسن وأفضل ، فستتمكن بشكل متزايد من زيادة أو استبدال البشر في عملية وضع العلامات. نحتاج إلى أدوات للتوجيه والاستخدام ومقارنة هذه النماذج. بالإضافة إلى ذلك ، فإن نماذج الأساس هذه كبيرة ومكلفة ، وغالبًا ما تكون ذات بوابات خلف واجهات برمجة التطبيقات الخاصة. بالنسبة للعديد من حالات استخدام الإنتاج ، نحتاج إلى نماذج يمكن أن تعمل بثمن بخس وفي الوقت الفعلي على الحافة.
يمكن أن تنشئ النماذج الأساسية الخاصة بـ Autodistill بالفعل مجموعات بيانات للعديد من حالات الاستخدام الشائعة (ومن خلال الطالبة الإبداعية والقطعة القليلة ، يمكننا توسيع فائدتها إلى الكثير) ، لكنها ليست مثالية بعد. لا يزال هناك الكثير من العمل للقيام به ؛ هذه مجرد بداية ونحب مساعدتك في اختبار وتوسيع قدرات النظام!
Autodistill هو وحدات. ستحتاج إلى تثبيت حزمة autodistill (التي تحدد واجهات المفاهيم المذكورة أعلاه) جنبًا إلى جنب مع النموذج الأساسي والمكونات الإضافية للنموذج المستهدف (والتي تنفذ نماذج محددة).
من خلال تغليف هذه الإضافات بشكل منفصل ، يتم تقليل عدم توافق التبعية والترخيص وإمكانية تنفيذ نماذج جديدة وصيانتها من قبل أي شخص.
مثال:
pip install autodistill autodistill-grounded-sam autodistill-yolov8يمكنك أيضًا استنساخ المشروع من Github للتنمية المحلية:
git clone https://github.com/roboflow/autodistill
cd autodistill
pip install -e .يتم تعداد النماذج الإضافية والهدف أدناه.
راجع دفتر الملاحظات التجريبية للحصول على مقدمة سريعة إلى autodistill . يمشي دفتر الملاحظات هذا من خلال بناء نموذج اكتشاف حاوية الحليب بدون وضع علامات.
أدناه ، لدينا أجزاء رئيسية مكثفة من دفتر الملاحظات للحصول على مقدمة سريعة إلى autodistill .
يمكنك أيضًا تشغيل Autodistill في أمر واحد. أولاً ، قم بتثبيت autodistill :
pip install autodistillثم ، قم بالتشغيل:
autodistill images --base= " grounding_dino " --target= " yolov8 " --ontology ' {"prompt": "label"} ' --output= " ./dataset " سيقوم هذا الأمر بتسمية جميع الصور في دليل يسمى images مع Grounding Dino واستخدام الصور المسمى لتدريب طراز Yolov8. ستعمل Grounding Dino على تسمية جميع الصور بـ "موجه" وحفظ الملصق باسم "Label". يمكنك تحديد العديد من المطالبات والعلامات كما تريد. سيتم حفظ مجموعة البيانات الناتجة في مجلد يسمى dataset .
على سبيل المثال ، سنعرض كيفية تقطير GroundedSam في نموذج Yolov8 صغير باستخدام SAM-SAM-sam-oodistill و autodistill-yolov8.
pip install autodistill autodistill-grounded-sam autodistill-yolov8
from autodistill_grounded_sam import GroundedSAM
from autodistill . detection import CaptionOntology
from autodistill_yolov8 import YOLOv8
# define an ontology to map class names to our GroundingDINO prompt
# the ontology dictionary has the format {caption: class}
# where caption is the prompt sent to the base model, and class is the label that will
# be saved for that caption in the generated annotations
base_model = GroundedSAM ( ontology = CaptionOntology ({ "shipping container" : "container" }))
# label all images in a folder called `context_images`
base_model . label (
input_folder = "./images" ,
output_folder = "./dataset"
)
target_model = YOLOv8 ( "yolov8n.pt" )
target_model . train ( "./dataset/data.yaml" , epochs = 200 )
# run inference on the new model
pred = target_model . predict ( "./dataset/valid/your-image.jpg" , confidence = 0.5 )
print ( pred )
# optional: upload your model to Roboflow for deployment
from roboflow import Roboflow
rf = Roboflow ( api_key = "API_KEY" )
project = rf . workspace (). project ( "PROJECT_ID" )
project . version ( DATASET_VERSION ). deploy ( model_type = "yolov8" , model_path = f"./runs/detect/train/" ) لرسم التعليقات التوضيحية لصورة واحدة باستخدام autodistill ، يمكنك استخدام الرمز أدناه. هذا الرمز مفيد لتصور التعليقات التوضيحية التي تم إنشاؤها بواسطة نموذجك الأساسي (أي GroundSam) ونتائج النموذج المستهدف الخاص بك (أي Yolov8).
import supervision as sv
import cv2
img_path = "./images/your-image.jpeg"
image = cv2 . imread ( img_path )
detections = base_model . predict ( img_path )
# annotate image with detections
box_annotator = sv . BoxAnnotator ()
label_annotator = sv . LabelAnnotator ()
labels = [
f" { base_model . ontology . classes ()[ class_id ] } { confidence :0.2f } "
for _ , _ , confidence , class_id , _ , _ in detections
]
annotated_frame = box_annotator . annotate (
scene = image . copy (), detections = detections
)
annotated_frame = label_annotator . annotate (
scene = annotated_frame , detections = detections , labels = labels
)
sv . plot_image ( annotated_frame , ( 16 , 16 )) هدفنا هو أن يدعم autodistill استخدام جميع نماذج الأساس كنماذج أساسية ومعظم النماذج الخاضعة للإشراف على SOTA كنماذج مستهدفة. ركزنا على مهام الكشف عن الكائنات والتجزئة أولاً ولكننا نخطط لبدء دعم التصنيف قريبًا! في المستقبل ، نأمل أن يتم استخدام autodistill أيضًا في نماذج تتجاوز رؤية الكمبيوتر.
| قاعدة / الهدف | Yolov8 | يولو ناس | Yolov5 | ديتور | Yolov6 | Yolov7 | MT-Yolov6 |
|---|---|---|---|---|---|---|---|
| ترتكز سام 2 | ✅ | ✅ | ✅ | ✅ | ؟ | ||
| Detic | ✅ | ✅ | ✅ | ✅ | ؟ | ||
| تراكم | ✅ | ✅ | ✅ | ✅ | ؟ | ||
| Groundingdino | ✅ | ✅ | ✅ | ✅ | ؟ | ||
| البومة | ✅ | ✅ | ✅ | ✅ | ؟ | ||
| سام كليب | ✅ | ✅ | ✅ | ✅ | ؟ | ||
| llava-1.5 | ✅ | ✅ | ✅ | ✅ | ؟ | ||
| Kosmos-2 | ✅ | ✅ | ✅ | ✅ | ؟ | ||
| OWLV2 | ✅ | ✅ | ✅ | ✅ | ؟ | ||
| نماذج الكون Roboflow (نماذج 50K+ تدريب مسبقًا) | ✅ | ✅ | ✅ | ✅ | ؟ | ||
| CODET | ✅ | ✅ | ✅ | ✅ | ؟ | ||
| Azure الرؤية المخصصة | ✅ | ✅ | ✅ | ✅ | ؟ | ||
| AWS إعادة التعرف | ✅ | ✅ | ✅ | ✅ | ؟ | ||
| رؤية جوجل | ✅ | ✅ | ✅ | ✅ | ؟ |
| قاعدة / الهدف | Yolov8 | يولو ناس | Yolov5 | Yolov7 | segformer |
|---|---|---|---|---|---|
| تراكم | ✅ | ؟ | ؟ | ||
| سام كليب | ✅ | ؟ | ؟ | ||
| seggpt | ✅ | ؟ | ؟ | ||
| Fastsam | ؟ | ؟ | ؟ |
| قاعدة / الهدف | فيت | Yolov8 | Yolov5 |
|---|---|---|---|
| مقطع | ✅ | ✅ | ؟ |
| metaclip | ✅ | ✅ | ؟ |
| dinov2 | ✅ | ✅ | ؟ |
| وميض | ✅ | ✅ | ؟ |
| وإن | ✅ | ✅ | ؟ |
| fastvit | ✅ | ✅ | ؟ |
| altclip | ✅ | ✅ | ؟ |
| evaclip | ✅ | ✅ | ؟ |
| تَوأَم | ✅ | ✅ | ؟ |
| فويو | ؟ | ؟ | ؟ |
| فتح فلامنغو | ؟ | ؟ | ؟ |
| GPT-4 | |||
| نخيل 2 |
يمكنك اختياريا نشر بعض النماذج المستهدفة المدربة باستخدام Autodistill على roboflow. يتيح لك النشر على Roboflow استخدام مجموعة من SDKs الموجزة لاستخدام النموذج الخاص بك على الحافة ، من roboflow.js لنشر الويب إلى أجهزة nvidia jetson.
يتم دعم نماذج Autodistill المستهدفة التالية من قبل Roboflow للنشر:
| اسم النموذج | مدعوم؟ |
|---|---|
| yolov8 الكشف عن الكائن | ✅ |
| YOLOV8 تجزئة مثيل | ✅ |
| yolov5 الكشف عن الكائن | ✅ |
| YOLOV5 تجزئة مثيل | ✅ |
| تصنيف Yolov8 |
Autodistill: تدريب yolov8 مع التعليقات التوضيحية صفر
بصرف النظر عن إضافة نماذج جديدة ، هناك العديد من المناطق التي نخطط لاستكشافها مع autodistill بما في ذلك:
نحن نحب مدخلاتك! يرجى الاطلاع على دليلنا المساهم للبدء. شكرا لجميع المساهمين لدينا!
حزمة autodistill مرخصة بموجب Apache 2.0. يجوز لكل مكون إضافي أساسي أو مستهدف استخدام ترخيصه المقابل لترخيص نموذجه الأساسي. يرجى الرجوع إلى الترخيص في كل ريال مكون من مكونات إضافية لمزيد من المعلومات.
PytorchStreamReader failed reading zip archive: failed finding central directory ؟ يحدث هذا الخطأ عندما لا يمكن Pytorch تحميل أوزان النموذج للنموذج. انتقل إلى دليل ~/.cache/autodistill وحذف المجلد المرتبط بالنموذج الذي تحاول تحميله. ثم ، قم بتشغيل الكود مرة أخرى. سيتم تنزيل الأوزان النموذجية من الصفر. اترك عملية التثبيت دون انقطاع.
| مشروع | وصف |
|---|---|
| الإشراف | الأدوات المساعدة للأغراض العامة لاستخدامها في مشاريع رؤية الكمبيوتر ، من تصفية التنبؤات والعرض إلى تتبع الكائنات لتقييم النموذج. |
| Autodistill (هذا المشروع) | قم بتسمية الصور تلقائيًا للاستخدام في تدريب نماذج رؤية الكمبيوتر. |
| الاستدلال | خادم استدلال سهل الاستخدام وجاهز للإنتاج لرؤية الكمبيوتر يدعم نشر العديد من بنية النماذج الشائعة والنماذج التي يتم ضبطها. |
| دفاتر | البرامج التعليمية لمهام رؤية الكمبيوتر ، من تدريب النماذج الحديثة إلى تتبع الكائنات إلى حساب الكائنات في منطقة ما. |
| يجمع | جمع البيانات التلقائي والذكي مدعوم من مقطع. |