"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > ROBOFLOW - تدريب واختبار مع بيثون

ROBOFLOW - تدريب واختبار مع بيثون

تم النشر بتاريخ 2024-11-07
تصفح:771

Roboflow عبارة عن منصة للتعليق على الصور لاستخدامها في الذكاء الاصطناعي لاكتشاف الكائنات.

أستخدم هذه المنصة لـ C2SMR c2smr.fr، جمعية رؤية الكمبيوتر الخاصة بي للإنقاذ البحري.

أوضح لك في هذه المقالة كيفية استخدام هذا النظام الأساسي وتدريب نموذجك باستخدام لغة بايثون.

يمكنك العثور على المزيد من نماذج التعليمات البرمجية على جيثب الخاص بي: https://github.com/C2SMR/detector


أنا - مجموعة البيانات

لإنشاء مجموعة البيانات الخاصة بك، انتقل إلى https://app.roboflow.com/ وابدأ في إضافة تعليقات توضيحية إلى صورتك كما هو موضح في الصورة التالية.

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

ROBOFLOW - train & test with python

يمكنك بالفعل استخدام مجموعة بيانات roboflow العامة، لإجراء هذا الفحص https://universe.roboflow.com/

ثانيا- التدريب

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

الخطوة الأولى هي استيراد مجموعة البيانات الخاصة بك. للقيام بذلك، يمكنك استيراد مكتبة Roboflow.

pip install roboflow

لإنشاء نموذج، تحتاج إلى استخدام خوارزمية YOLO، والتي يمكنك استيرادها باستخدام مكتبة Ultralytics.

pip install ultralytics

في البرنامج النصي الخاص بي، أستخدم الأمر التالي:

py train.py api-key project-workspace project-name project-version nb-epoch size_model

يجب عليك الحصول على :

  • مفتاح الوصول
  • مساحة العمل
  • اسم مشروع roboflow
  • إصدار مجموعة بيانات المشروع
  • عدد العصور لتدريب النموذج
  • حجم الشبكة العصبية

في البداية، يقوم البرنامج بتنزيل yolov8-obb.pt، وزن yolo الافتراضي مع بيانات ما قبل التمرين، لتسهيل التدريب.

import sys
import os
import random
from roboflow import Roboflow
from ultralytics import YOLO
import yaml
import time


class Main:
    rf: Roboflow
    project: object
    dataset: object
    model: object
    results: object
    model_size: str

    def __init__(self):
        self.model_size = sys.argv[6]
        self.import_dataset()
        self.train()

    def import_dataset(self):
        self.rf = Roboflow(api_key=sys.argv[1])
        self.project = self.rf.workspace(sys.argv[2]).project(sys.argv[3])
        self.dataset = self.project.version(sys.argv[4]).download("yolov8-obb")

        with open(f'{self.dataset.location}/data.yaml', 'r') as file:
            data = yaml.safe_load(file)

        data['path'] = self.dataset.location

        with open(f'{self.dataset.location}/data.yaml', 'w') as file:
            yaml.dump(data, file, sort_keys=False)

    def train(self):
        list_of_models = ["n", "s", "m", "l", "x"]
        if self.model_size != "ALL" and self.model_size in list_of_models:

            self.model = YOLO(f"yolov8{self.model_size}-obb.pt")

            self.results = self.model.train(data=f"{self.dataset.location}/"
                                                 f"yolov8-obb.yaml",
                                            epochs=int(sys.argv[5]), imgsz=640)



        elif self.model_size == "ALL":
            for model_size in list_of_models:
                self.model = YOLO(f"yolov8{model_size}.pt")

                self.results = self.model.train(data=f"{self.dataset.location}"
                                                     f"/yolov8-obb.yaml",
                                                epochs=int(sys.argv[5]),
                                                imgsz=640)



        else:
            print("Invalid model size")



if __name__ == '__main__':
    Main()

ثالثا - العرض

بعد تدريب النموذج، تحصل على الملفات best.py وlast.py، والتي تتوافق مع الوزن.

باستخدام مكتبة Ultralytics، يمكنك أيضًا استيراد YOLO وتحميل وزنك ثم الفيديو الاختباري.
في هذا المثال، أستخدم وظيفة التتبع للحصول على معرف لكل سباح.

import cv2
from ultralytics import YOLO
import sys


def main():
    cap = cv2.VideoCapture(sys.argv[1])

    model = YOLO(sys.argv[2])

    while True:
        ret, frame = cap.read()
        results = model.track(frame, persist=True)
        res_plotted = results[0].plot()
        cv2.imshow("frame", res_plotted)

        if cv2.waitKey(1) == 27:
            break

    cap.release()
    cv2.destroyAllWindows()


if __name__ == "__main__":
    main()

لتحليل التوقع يمكنك الحصول على النموذج json كما يلي.

 results = model.track(frame, persist=True)
 results_json = json.loads(results[0].tojson())
بيان الافراج تم إعادة نشر هذه المقالة على: https://dev.to/victordalet/roboflow-train-test-with-python-4bd4?1 إذا كان هناك أي انتهاك، فيرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

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

Copyright© 2022 湘ICP备2022001581号-3