یک مدل تشخیص شی را با AutoML Vision Edge آموزش دهید

یک مدل تشخیص شی شبیه به مدل برچسب‌گذاری تصویر است، اما به جای تخصیص برچسب‌ها به کل تصاویر، برچسب‌ها را به مناطقی از تصاویر اختصاص می‌دهد. می توانید از مدل های تشخیص اشیا برای تشخیص و مکان یابی اشیاء در یک تصویر یا برای ردیابی حرکات یک شی در یک سری از تصاویر استفاده کنید.

برای آموزش یک مدل تشخیص شی، مجموعه ای از تصاویر را با برچسب های شی و مرزهای شیء مربوطه در AutoML Vision Edge ارائه می کنید. AutoML Vision Edge از این مجموعه داده برای آموزش یک مدل جدید در فضای ابری استفاده می کند که می توانید از آن برای تشخیص اشیاء روی دستگاه استفاده کنید.

قبل از شروع

  • اگر قبلاً پروژه Firebase ندارید، آن را در کنسول Firebase ایجاد کنید.

  • با دستورالعمل های ارائه شده در راهنمای ML فراگیر - AutoML آشنا شوید.

  • اگر فقط می‌خواهید AutoML Vision Edge را امتحان کنید و داده‌های آموزشی خود را ندارید، یک مجموعه داده نمونه مانند یکی از موارد زیر را دانلود کنید:

1. داده های آموزشی خود را جمع آوری کنید

ابتدا باید مجموعه داده آموزشی از تصاویر برچسب گذاری شده را جمع آوری کنید. دستورالعمل های زیر را در نظر داشته باشید:

  • تصاویر باید در یکی از فرمت های زیر باشند: JPEG، PNG، GIF، BMP، ICO.

  • هر تصویر باید 30 مگابایت یا کوچکتر باشد. توجه داشته باشید که AutoML Vision Edge اکثر تصاویر را در طول پیش پردازش کاهش می دهد، بنابراین به طور کلی هیچ مزیتی از دقت برای ارائه تصاویر با وضوح بسیار بالا وجود ندارد.

  • حداقل 10، و ترجیحاً 100 یا بیشتر، نمونه از هر برچسب را شامل شود.

  • برای هر برچسب چندین زاویه، وضوح و پس‌زمینه اضافه کنید.

  • داده های آموزشی باید تا حد امکان نزدیک به داده هایی باشد که بر اساس آنها پیش بینی می شود. به عنوان مثال، اگر مورد استفاده شما شامل تصاویر تار و با وضوح پایین (مانند یک دوربین امنیتی) باشد، داده های آموزشی شما باید از تصاویر تار و با وضوح پایین تشکیل شده باشد.

  • مدل‌های تولید شده توسط AutoML Vision Edge برای عکس‌برداری از اشیاء در دنیای واقعی بهینه‌سازی شده‌اند. آنها ممکن است برای عکسبرداری با اشعه ایکس، نقاشی های دستی، اسناد اسکن شده، رسیدها و غیره به خوبی کار نکنند.

    همچنین، مدل‌ها معمولاً نمی‌توانند برچسب‌هایی را که انسان نمی‌تواند اختصاص دهد، پیش‌بینی کند. بنابراین، اگر یک انسان نتواند با نگاه کردن به تصویر برای 1-2 ثانیه برچسب‌هایی را اختصاص دهد، احتمالاً مدل نیز نمی‌تواند این کار را انجام دهد.

وقتی تصاویر آموزشی خود را آماده کردید، آنها را برای وارد کردن به Google Cloud آماده کنید. شما دو گزینه دارید:

گزینه 1: Cloud Storage با شاخص CSV

تصاویر آموزشی خود را در Google Cloud Storage آپلود کنید و یک فایل CSV تهیه کنید که نشانی وب هر تصویر و در صورت تمایل، برچسب‌های شی درست و مناطق محدود کننده برای هر تصویر را فهرست می‌کند. این گزینه هنگام استفاده از مجموعه داده های بزرگ مفید است.

به عنوان مثال، تصاویر خود را در Cloud Storage آپلود کنید و یک فایل CSV مانند شکل زیر آماده کنید:

gs://your-training-data-bucket/001.jpg,accordion,0.2,0.4,,,0.3,0.5,,
gs://your-training-data-bucket/001.jpg,tuba,0.2,0.5,,,0.4,0.8,,
gs://your-training-data-bucket/002.jpg,accordion,0.2,0.2,,,0.9,0.8,,

جعبه های محدود کننده اشیا به عنوان مختصات نسبی در تصویر مشخص شده اند. به قالب‌بندی CSV داده‌های آموزشی مراجعه کنید.

تصاویر باید در سطلی ذخیره شوند که در منطقه us-central1 و بخشی از پروژه Google Cloud مربوط به پروژه Firebase شما است.

گزینه 2: تصاویر بدون برچسب

تصاویر آموزشی خود را برچسب گذاری کنید و پس از آپلود آنها، مرزهای اشیاء را در کنسول Google Cloud ترسیم کنید. این فقط برای مجموعه داده های کوچک توصیه می شود. مرحله بعدی را ببینید.

2. مدل خود را آموزش دهید

سپس با استفاده از تصاویر خود یک مدل را آموزش دهید:

  1. صفحه Vision Datasets را در کنسول Google Cloud باز کنید. وقتی از شما خواسته شد پروژه خود را انتخاب کنید.

  2. روی مجموعه داده جدید کلیک کنید، یک نام برای مجموعه داده ارائه کنید، نوع مدلی را که می خواهید آموزش دهید انتخاب کنید و روی ایجاد مجموعه داده کلیک کنید.

  3. در برگه Import مجموعه داده خود، تصاویر آموزشی خود، یک بایگانی فشرده از تصاویر آموزشی خود یا یک فایل CSV حاوی مکان‌های Cloud Storage که آنها را در آنها آپلود کرده‌اید، آپلود کنید. به جمع آوری داده های آموزشی خود مراجعه کنید.

  4. پس از اتمام کار وارد کردن، از تب Images برای تأیید داده های آموزشی استفاده کنید.

  5. اگر یک CSV آپلود نکرده‌اید، برای هر تصویر، کادرهای محدودکننده اطراف اشیایی را که می‌خواهید تشخیص دهید بکشید و هر شی را برچسب‌گذاری کنید.

  6. در برگه Train ، روی شروع آموزش کلیک کنید.

    1. مدل را نام ببرید و نوع مدل Edge را انتخاب کنید.

    2. تنظیمات آموزشی زیر را که بر عملکرد مدل تولید شده حاکم است، پیکربندی کنید:

      بهینه سازی مدل برای ... پیکربندی مدل برای استفاده می‌توانید مدل‌های سریع‌تر، کوچک‌تر، زمانی که تأخیر کم یا اندازه بسته‌بندی کوچک مهم است، یا مدل‌های کندتر و بزرگ‌تر، زمانی که دقت مهم‌تر است، آموزش دهید.
      بودجه ساعت گره

      حداکثر زمان، بر حسب ساعت محاسبه، برای صرف آموزش مدل. زمان آموزش بیشتر به طور کلی منجر به یک مدل دقیق تر می شود.

      توجه داشته باشید که اگر سیستم تشخیص دهد که مدل بهینه شده است و آموزش اضافی دقت را بهبود نمی بخشد، آموزش می تواند در کمتر از زمان مشخص شده تکمیل شود. شما فقط برای ساعات استفاده واقعی صورتحساب دریافت می کنید.

      زمان های تمرین معمولی
      مجموعه های بسیار کوچک 1 ساعت
      500 عکس 2 ساعت
      1000 تصویر 3 ساعت
      5000 عکس 6 ساعت
      10000 تصویر 7 ساعت
      50000 عکس 11 ساعت
      100000 عکس 13 ساعت
      1000000 عکس 18 ساعت

3. مدل خود را ارزیابی کنید

وقتی آموزش کامل شد، می‌توانید روی برگه ارزیابی کلیک کنید تا معیارهای عملکرد مدل را ببینید.

یکی از کاربردهای مهم این صفحه تعیین آستانه اطمینانی است که برای مدل شما بهترین کار را دارد. آستانه اطمینان حداقل اطمینانی است که مدل باید برای اختصاص برچسب به یک تصویر داشته باشد. با حرکت دادن نوار لغزنده آستانه اطمینان ، می توانید ببینید که آستانه های مختلف چگونه بر عملکرد مدل تأثیر می گذارد. عملکرد مدل با استفاده از دو معیار اندازه گیری می شود: دقت و یادآوری .

در زمینه طبقه بندی تصاویر، دقت نسبت تعداد تصاویری است که به درستی برچسب گذاری شده اند به تعداد تصاویری که مدل با توجه به آستانه انتخاب شده برچسب گذاری کرده است. هنگامی که یک مدل دقت بالایی دارد، برچسب‌ها را کمتر به اشتباه اختصاص می‌دهد (کمتر موارد مثبت کاذب).

یادآوری نسبت تعداد تصاویری است که به درستی برچسب گذاری شده اند به تعداد تصاویری که دارای محتوایی هستند که مدل باید قادر به برچسب گذاری است. زمانی که مدلی یادآوری بالایی داشته باشد، نمی تواند برچسبی را کمتر اختصاص دهد (منفی های کاذب کمتر).

اینکه آیا شما برای دقت یا فراخوانی بهینه سازی می کنید به مورد استفاده شما بستگی دارد. برای اطلاعات بیشتر به راهنمای مبتدیان AutoML Vision و راهنمای ML فراگیر - AutoML مراجعه کنید.

هنگامی که آستانه اطمینانی پیدا کردید که معیارهایی را ایجاد می کند که با آن راحت هستید، آن را یادداشت کنید. شما از آستانه اطمینان برای پیکربندی مدل در برنامه خود استفاده خواهید کرد. (شما می توانید در هر زمان از این ابزار برای به دست آوردن یک مقدار آستانه مناسب استفاده کنید.)

4. مدل خود را منتشر یا دانلود کنید

اگر از عملکرد مدل راضی هستید و می‌خواهید از آن در یک برنامه استفاده کنید، سه گزینه دارید که از بین آنها می‌توانید هر ترکیبی را انتخاب کنید: استقرار مدل برای پیش‌بینی آنلاین، انتشار مدل در Firebase، یا دانلود مدل و بسته‌بندی آن. با برنامه شما

مدل را مستقر کنید

در برگه Test & use مجموعه داده خود، می توانید مدل خود را برای پیش بینی آنلاین مستقر کنید، که مدل شما را در فضای ابری اجرا می کند. این گزینه در اسناد Cloud AutoML پوشش داده شده است. اسناد موجود در این سایت با دو گزینه باقی مانده سروکار دارند.

مدل را منتشر کنید

با انتشار مدل در Firebase، می‌توانید مدل را بدون انتشار نسخه جدید برنامه به‌روزرسانی کنید و می‌توانید از Remote Config و A/B Testing برای ارائه پویا مدل‌های مختلف به مجموعه‌های مختلف کاربران استفاده کنید.

اگر ترجیح می‌دهید مدل را فقط با میزبانی آن در Firebase ارائه دهید، و آن را با برنامه خود همراه نکنید، می‌توانید حجم دانلود اولیه برنامه خود را کاهش دهید. البته به خاطر داشته باشید که اگر مدل با برنامه شما همراه نباشد، تا زمانی که برنامه شما برای اولین بار مدل را دانلود نکند، هیچ عملکرد مرتبط با مدل در دسترس نخواهد بود.

برای انتشار مدل خود، می توانید از یکی از دو روش استفاده کنید:

  • مدل TF Lite را از صفحه آزمایش و استفاده مجموعه داده خود در کنسول Google Cloud دانلود کنید و سپس مدل را در صفحه مدل سفارشی کنسول Firebase آپلود کنید. این معمولا ساده ترین راه برای انتشار یک مدل واحد است.
  • با استفاده از Admin SDK، مدل را مستقیماً از پروژه Google Cloud خود در Firebase منتشر کنید. شما می توانید از این روش برای انتشار دسته ای چندین مدل یا کمک به ایجاد خطوط لوله انتشار خودکار استفاده کنید.

برای انتشار مدل با API مدیریت مدل SDK Admin:

  1. SDK را نصب و مقداردهی اولیه کنید .

  2. مدل را منتشر کنید

    شما باید شناسه منبع مدل را مشخص کنید، که رشته ای شبیه به مثال زیر است:

    projects/PROJECT_NUMBER/locations/us-central1/models/MODEL_ID
    PROJECT_NUMBER شماره پروژه سطل Cloud Storage که حاوی مدل است. این ممکن است پروژه Firebase شما یا پروژه Google Cloud دیگری باشد. می توانید این مقدار را در صفحه تنظیمات کنسول Firebase یا داشبورد کنسول Google Cloud پیدا کنید.
    MODEL_ID شناسه مدل که از AutoML Cloud API دریافت کردید.

    پایتون

    # First, import and initialize the SDK.
    
    # Get a reference to the AutoML model
    source = ml.TFLiteAutoMlSource('projects/{}/locations/us-central1/models/{}'.format(
        # See above for information on these values.
        project_number,
        model_id
    ))
    
    # Create the model object
    tflite_format = ml.TFLiteFormat(model_source=source)
    model = ml.Model(
        display_name="example_model",  # This is the name you will use from your app to load the model.
        tags=["examples"],             # Optional tags for easier management.
        model_format=tflite_format)
    
    # Add the model to your Firebase project and publish it
    new_model = ml.create_model(model)
    new_model.wait_for_unlocked()
    ml.publish_model(new_model.model_id)
    

    Node.js

    // First, import and initialize the SDK.
    
    (async () => {
      // Get a reference to the AutoML model. See above for information on these
      // values.
      const automlModel = `projects/${projectNumber}/locations/us-central1/models/${modelId}`;
    
      // Create the model object and add the model to your Firebase project.
      const model = await ml.createModel({
        displayName: 'example_model',  // This is the name you use from your app to load the model.
        tags: ['examples'],  // Optional tags for easier management.
        tfliteModel: { automlModel: automlModel },
      });
    
      // Wait for the model to be ready.
      await model.waitForUnlocked();
    
      // Publish the model.
      await ml.publishModel(model.modelId);
    
      process.exit();
    })().catch(console.error);
    

مدل را با برنامه خود بارگیری و بسته بندی کنید

با بسته‌بندی مدل خود با برنامه‌تان، می‌توانید مطمئن شوید که ویژگی‌های ML برنامه‌تان همچنان در زمانی که مدل میزبانی شده توسط Firebase در دسترس نیست، کار می‌کنند.

اگر هم مدل را منتشر کنید و هم آن را با برنامه خود همراه کنید، برنامه از آخرین نسخه موجود استفاده خواهد کرد.

برای دانلود مدل خود، روی TF Lite در صفحه تست و استفاده مجموعه داده خود کلیک کنید.

مراحل بعدی

اکنون که مدل را منتشر یا دانلود کردید، نحوه استفاده از مدل را در برنامه‌های iOS+ و Android خود بیاموزید.