Quickstart: إنشاء مشروع تصنيف صور باستخدام مكتبة عميل Custom Vision أو REST API
ابدأ مع مكتبة عميل الرؤية المخصصة لـ .NET. اتبع هذه الخطوات لتثبيت الحزمة وتجربة التعليمات البرمجية المثال لإنشاء نموذج تصنيف صورة. ستقوم بإنشاء مشروع وإضافة علامات وتدريب المشروع واستخدام عنوان URL لنقطة نهاية التنبؤ للمشروع لاختباره برمجيًا. استخدم هذا المثال كنموذج لبناء تطبيق التعرف على صورك.
ملاحظة
إذا كنت ترغب في إنشاء نموذج التصنيف والتدرب عليه دون كتابة التعليمات البرمجية، يُرجى مراجعة الإرشادات المستندة إلى المتصفح بدلاً من ذلك.
استخدام مكتبة عميل الرؤية المُخصصة الخاصة بـ.NET بغرض:
- إنشاء مشروع Custom Vision جديد
- إضافة علامات للمشروع
- رفع الصور والإشارة إليها
- التدريب على المشروع
- انشر التكرار الحالي
- اختبار نقطة نهاية التنبؤ
الوثائق المرجعية | شفرة مصدر المكتبة (التدريب) (التنبؤ) | حزمة (NuGet) (تدريب) (تنبؤ) | عينات
المتطلبات الأساسية
- اشتراك Azure - إنشاء اشتراك مجانًا
- إصدار Visual Studio IDE أو الإصدار الحالي من .NET Core.
- بمجرد حصولك على اشتراكك في Azure، قم بإنشاء مورد Custom Vision في مدخل Azure لإنشاء مورد تدريب وتنبؤ والحصول على المفاتيح ونقطة النهاية. انتظر حتى يتم نشرها وانقر فوق زرالانتقال إلى المورد.
- ستحتاج إلى المفتاح ونقطة النهاية من الموارد التي أنشأتها لتوصيل التطبيق الخاص بك بالرؤية المخصصة. ستلصق المفتاح ونقطة النهاية في التعليمات البرمجية أدناه لاحقًا في التشغيل السريع.
- يمكنك استخدام مستوى التسعير الحر (
F0) لتجربة الخدمة، والترقية لاحقًا إلى مستوى مدفوع للإنتاج.
الإعداد
إنشاء تطبيق C# جديد
باستخدام Visual Studio، قم بإنشاء تطبيق .NET Core جديد.
تثبيت مكتبة العميل
بمجرد إنشاء مشروع جديد، تثبيت مكتبة العميل بالنقر بزر الماوس الأيمن فوق حل المشروع في "Solution Explorer" وتحديد "Manage NuGet Packages" . في إدارة الحزمة المراد فتحها، حدد "Browse" ، "check" تضمين الإصدار المسبق والبحث عن Microsoft.Azure.CognitiveServices.Vision.CustomVision.TrainingوMicrosoft.Azure.CognitiveServices.Vision.CustomVision.Prediction. حدد أحدث إصدار ثم ثبته.
تلميح
هل تريد عرض ملف التعليمات البرمجية للتشغيل السريع بالكامل مرةً واحدة؟ يمكنك العثور عليه على GitHub، والذي يحتوي على أمثلة التعليمات البرمجية في هذا البدء السريع.
من دليل المشروع، افتح ملف program.cs ثم إضافة using التوجيهات التالية:
using Microsoft.Azure.CognitiveServices.Vision.CustomVision.Prediction;
using Microsoft.Azure.CognitiveServices.Vision.CustomVision.Training;
using Microsoft.Azure.CognitiveServices.Vision.CustomVision.Training.Models;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading;
في طريقة التطبيق الرئيسية، قم بإنشاء متغيرات لمفتاح المورد ونقطة النهاية. وسوف تعلن أيضًا عن بعض الكائنات الأساسية لاستخدامها لاحقًا.
// You can obtain these values from the Keys and Endpoint page for your Custom Vision resource in the Azure Portal.
private static string trainingEndpoint = "PASTE_YOUR_CUSTOM_VISION_TRAINING_ENDPOINT_HERE";
private static string trainingKey = "PASTE_YOUR_CUSTOM_VISION_TRAINING_SUBSCRIPTION_KEY_HERE";
// You can obtain these values from the Keys and Endpoint page for your Custom Vision Prediction resource in the Azure Portal.
private static string predictionEndpoint = "PASTE_YOUR_CUSTOM_VISION_PREDICTION_ENDPOINT_HERE";
private static string predictionKey = "PASTE_YOUR_CUSTOM_VISION_PREDICTION_SUBSCRIPTION_KEY_HERE";
// You can obtain this value from the Properties page for your Custom Vision Prediction resource in the Azure Portal. See the "Resource ID" field. This typically has a value such as:
// /subscriptions/<your subscription ID>/resourceGroups/<your resource group>/providers/Microsoft.CognitiveServices/accounts/<your Custom Vision prediction resource name>
private static string predictionResourceId = "PASTE_YOUR_CUSTOM_VISION_PREDICTION_RESOURCE_ID_HERE";
private static List<string> hemlockImages;
private static List<string> japaneseCherryImages;
private static Tag hemlockTag;
private static Tag japaneseCherryTag;
private static Iteration iteration;
private static string publishedModelName = "treeClassModel";
private static MemoryStream testImage;
هام
انتقل إلى مدخل Azure. إذا تم نشر مورد الرؤية المخصصة الذي أنشأته في قسم "Prerequisites" بنجاح، فانقر فوق زر "Go to Resource" في إطار "Next Steps" . يُمكنك العثور على المفاتيح ونقاط النهاية في صفحات مفتاح ونقاط النهاية. للموارد. ستحتاج إلى الحصول على مفاتيح موارد التدريب والتنبؤ، بالإضافة إلى نقطة نهاية API لمورد التدريب.
يُمكن العثور على معرف مورد التنبؤ في علامة التبويب "Properties" الخاصة بالمورد في مدخل Microsoft Azure، المُدرجة باسم معرف المورد.
تذكر إزالة المفاتيح من التعليمات البرمجية عند الانتهاء، وعدم نشرها على الملأ مطلقاً. للإنتاج، فكر في استخدام طريقة آمنة لتخزين بيانات الاعتماد الخاصة بك والوصول إليها. يُرجى الاطلاع على مقالCognitive Services "security" للحصول على المزيد من المعلومات.
في أسلوب التطبيق، الرئيسيأضف المكالمات للأساليب المستخدمة في التشغيل السريع. وستُنفذ ذلك لاحقًا.
CustomVisionTrainingClient trainingApi = AuthenticateTraining(trainingEndpoint, trainingKey);
CustomVisionPredictionClient predictionApi = AuthenticatePrediction(predictionEndpoint, predictionKey);
Project project = CreateProject(trainingApi);
AddTags(trainingApi, project);
UploadImages(trainingApi, project);
TrainProject(trainingApi, project);
PublishIteration(trainingApi, project);
TestIteration(predictionApi, project);
DeleteProject(trainingApi, project);
طراز الكائن
| الاسم | الوصف |
|---|---|
| CustomVisionTrainingClient | يُعالج هذا الفصل إنشاء نماذجك وتدريبها ونشرها. |
| CustomVisionPredictionClient | تعالج هذه الفئة الاستعلام عن نماذجك للتنبؤات بتصنيف الصور. |
| PredictionModel | تعرف هذه الفئة تنبؤًا واحدًا على صورة واحدة. يتضمن خصائص معرف الكائن واسم ودرجة الثقة. |
أمثلة التعليمات البرمجية
توضح لك المقتطفات البرمجية كيفية القيام بالمهام التالية باستخدام مكتبة عميل الرؤية المخصصة لـ .NET:
- مصادقة العميل
- إنشاء مشروع الرؤية المُخصصة الجديد
- إضافة علامات للمشروع
- تحميل الصور ووضع علامات عليها
- التدريب على المشروع
- نشر التكرار الحالي
- اختبار نقطة نهاية التنبؤ
مصادقة العميل
وفقاً للأسلوب الجديد، أنشئ مثيل تدريب وتنبؤ العملاء باستخدام نقطة النهاية والمفاتيح.
private static CustomVisionTrainingClient AuthenticateTraining(string endpoint, string trainingKey)
{
// Create the Api, passing in the training key
CustomVisionTrainingClient trainingApi = new CustomVisionTrainingClient(new Microsoft.Azure.CognitiveServices.Vision.CustomVision.Training.ApiKeyServiceClientCredentials(trainingKey))
{
Endpoint = endpoint
};
return trainingApi;
}
private static CustomVisionPredictionClient AuthenticatePrediction(string endpoint, string predictionKey)
{
// Create a prediction endpoint, passing in the obtained prediction key
CustomVisionPredictionClient predictionApi = new CustomVisionPredictionClient(new Microsoft.Azure.CognitiveServices.Vision.CustomVision.Prediction.ApiKeyServiceClientCredentials(predictionKey))
{
Endpoint = endpoint
};
return predictionApi;
}
قم بإنشاء مشروع بحث ضوئي مخصص جديد
هذا الكود الصغير القادم من التعليمات البرمجية يقوم بإنشاء مشروع تصنيف صورة. سيظهر المشروع الذي تم إنشاؤه على موقع الرؤية المخصصة. راجع إنشاء مشروع لتحديد خيارات أخرى عند إنشاء المشروع الخاص بك (موضح في دليل مدخل ويب إنشاء مصنف).
private static Project CreateProject(CustomVisionTrainingClient trainingApi)
{
// Create a new project
Console.WriteLine("Creating new project:");
return trainingApi.CreateProject("My New Project");
}
قم بإضافة علامات للمشروع
تُحدد هذه الطريقة العلامات التي ستقوم بتدريب الطراز عليها.
private static void AddTags(CustomVisionTrainingClient trainingApi, Project project)
{
// Make two tags in the new project
hemlockTag = trainingApi.CreateTag(project.Id, "Hemlock");
japaneseCherryTag = trainingApi.CreateTag(project.Id, "Japanese Cherry");
}
تحميل ووضع علامات على الصور
أولاً، تنزيل نموذج الصور لهذا المشروع. حفظ محتويات نموذج مجلد الصور على جهازك المحلي.
ملاحظة
هل تحتاج إلى مجموعة أوسع من الصور لإكمال تدريبك؟ يسمح لك Trove، وهو مشروعMicrosoft Garage، بجمع وشراء مجموعات من الصور لأغراض التدريب. بمجرد جمع الصور، يمكنك تنزيلها ثم استيرادها إلى مشروع الرؤية المُخصصة بالطريقة المعتادة. قم بزيارة صفحة Trove لمعرفة المزيد.
ثم قم بتعريف أسلوب مساعد لتحميل الصور في هذا الدليل. قد تحتاج إلى تحرير وسيطة GetFiles للإشارة إلى الموقع الذي يتم حفظ الصور فيه.
private static void LoadImagesFromDisk()
{
// this loads the images to be uploaded from disk into memory
hemlockImages = Directory.GetFiles(Path.Combine("Images", "Hemlock")).ToList();
japaneseCherryImages = Directory.GetFiles(Path.Combine("Images", "Japanese_Cherry")).ToList();
testImage = new MemoryStream(File.ReadAllBytes(Path.Combine("Images", "Test", "test_image.jpg")));
}
بعد ذلك، حدد طريقة لتحميل الصور، وتطبيق العلامات وفقًا لموقع المجلد الخاص بها (تم فرز الصور بالفعل). يمكنك تحميل الصور ووضع علامة عليها بشكل متكرر، أو على دفعة (تصل إلى 64 لكل دفعة). تحتوي هذه التعليمات البرمجية المتكررة على أمثلة من كليهما.
private static void UploadImages(CustomVisionTrainingClient trainingApi, Project project)
{
// Add some images to the tags
Console.WriteLine("\tUploading images");
LoadImagesFromDisk();
// Images can be uploaded one at a time
foreach (var image in hemlockImages)
{
using (var stream = new MemoryStream(File.ReadAllBytes(image)))
{
trainingApi.CreateImagesFromData(project.Id, stream, new List<Guid>() { hemlockTag.Id });
}
}
// Or uploaded in a single batch
var imageFiles = japaneseCherryImages.Select(img => new ImageFileCreateEntry(Path.GetFileName(img), File.ReadAllBytes(img))).ToList();
trainingApi.CreateImagesFromFiles(project.Id, new ImageFileCreateBatch(imageFiles, new List<Guid>() { japaneseCherryTag.Id }));
}
تدريب المشروع
يُنشئ هذا الأسلوب تكرار التدريب الأول في المشروع. إنه يوضح الخدمة حتى اكتمال التدريب.
private static void TrainProject(CustomVisionTrainingClient trainingApi, Project project)
{
// Now there are images with tags start training the project
Console.WriteLine("\tTraining");
iteration = trainingApi.TrainProject(project.Id);
// The returned iteration will be in progress, and can be queried periodically to see when it has completed
while (iteration.Status == "Training")
{
Console.WriteLine("Waiting 10 seconds for training to complete...");
Thread.Sleep(10000);
// Re-query the iteration to get it's updated status
iteration = trainingApi.GetIteration(project.Id, iteration.Id);
}
}
تلميح
التدريب باستخدام علامات محددة
اختيارياً، يمكنك التدريب على مجموعة فرعية فقط من العلامات المطبقة. قد ترغب في القيام بذلك إذا لم تكن قد طبقت ما يكفي من العلامات المُحددة حتى الآن، ولكن لديك ما يكفي من العلامات الأخرى. في استدعاء"TrainProject"، استخدام المعلمة الخاصة بـ trainingParameters. أنشئ "TrainingParameters" وتعيين خاصية "SelectedTags" لإدراجها في قائمة معرفات العلامات التي تريد استخدامها. سيدربك النموذج على التعرف فقط على العلامات المُدرجة في تلك القائمة.
نشر التكرار الحالي
يجعل هذا الأسلوب التكرار الحالي للنموذج متوفراً للاستعلام. يُمكن استخدام اسم الطراز كمرجع لإرسال طلبات التنبؤ. تحتاج إلى إدخال القيمة لـ predictionResourceId. يُمكن العثور على معرف مورد التنبؤ في علامة التبويب "Properties" الخاصة بالمورد في مدخل Microsoft Azure، المُدرجة باسم معرف المورد.
private static void PublishIteration(CustomVisionTrainingClient trainingApi, Project project)
{
trainingApi.PublishIteration(project.Id, iteration.Id, publishedModelName, predictionResourceId);
Console.WriteLine("Done!\n");
// Now there is a trained endpoint, it can be used to make a prediction
}
اختبار نقطة نهاية التنبؤ
يقوم هذا الجزء من البرنامج النصي بتحميل صورة الاختبار، ويستفسر عن نقطة نهاية النموذج، ويخرج بيانات التنبؤ إلى وحدة التحكم.
private static void TestIteration(CustomVisionPredictionClient predictionApi, Project project)
{
// Make a prediction against the new project
Console.WriteLine("Making a prediction:");
var result = predictionApi.ClassifyImage(project.Id, publishedModelName, testImage);
// Loop over each prediction and write out the results
foreach (var c in result.Predictions)
{
Console.WriteLine($"\t{c.TagName}: {c.Probability:P1}");
}
}
شغّل التطبيق
قم بتشغيل التطبيق بنقر الزر Debug أعلى نافذة IDE.
في أثناء ما يتم تشغيل التطبيق، فإنه يجب فتح إطار وحدة تحكم وكتابة الإخراج التالي:
Creating new project:
Uploading images
Training
Done!
Making a prediction:
Hemlock: 95.0%
Japanese Cherry: 0.0%
يمكنك بعد ذلك التحقق من أن صورة الاختبار (الموجودة في Images/Test/ ) موسومة بشكل مناسب. قم بالضغط على أي مفتاح للخروج من التطبيق يمكنك أيضًا العودة إلى موقع الويب المخصص للرؤية ورؤية الحالة الحالية لمشروعك الذي تم إنشاؤه حديثًا.
تنظيف الموارد
إذا كنت ترغب في تنفيذ مشروع تصنيف الصور الخاص بك (أو تجربة مشروع الكشف عن الكائنات بدلاً من ذلك)، فقد ترغب في حذف مشروع تعريف الشجرة من هذا المثال. يسمح الاشتراك المجاني بمشروعي Custom Vision.
على موقع ويب Custom Vision، انتقل إلى Projects وحدِّد سلة المهملات ضمن My New Project.

الخطوات التالية
الآن أنت قد فعلت كل خطوة من عملية تصنيف الصور في التعليمات البرمجية. تقوم هذه العينة بتنفيذ تكرار تدريب واحد، ولكن غالبًا ما ستحتاج إلى تدريب واختبار النموذج الخاص بك عدة مرات من أجل جعله أكثر دقة.
- ما المقصود بالرؤية المُخصصة؟
- يمكن العثور على التعليمات البرمجية للمصدر لهذا النموذج على GitHub
- الوثائق المرجعية لـ SDK
يقدم هذا الدليل إرشادات ونماذج من التعليمات البرمجية لمساعدتك على البدء في استخدام مكتبة عميل Custom Vision لإنشاء نموذج تصنيف الصور. ستُنشئ مشروعاً وتضيف علامات وتتدرب على المشروع وتستخدم عنوان URL لنقطة نهاية التنبؤ بالمشروع لاختباره برمجياً. استخدم هذا المثال كنموذج لبناء تطبيق التعرف على صورك.
ملاحظة
إذا كنت ترغب في إنشاء نموذج تصنيف والتدرب عليه دون كتابة التعليمات البرمجية، راجع الإرشادات القائمة على المستعرض بدلاً من ذلك.
استخدم مكتبة عميل Custom Vision لـ Go بغرض:
- إنشاء رؤية مخصصة جديدة
- إضافة علامات للمشروع
- رفع الصور والإشارة إليها
- التدريب على المشروع
- انشر التكرار الحالي
- اختبار نقطة نهاية التنبؤ
الوثائق المرجعية (التدريب) (التنبؤ)| شفرة مصدر المكتبة (تدريب) (تنبؤ)
المتطلبات الأساسية
- اشتراك Azure - إنشاء اشتراك مجانًا
- Go 1.8+
- بمجرد حصولك على اشتراكك في Azure، قم بإنشاء مورد Custom Vision في مدخل Azure لإنشاء مورد تدريب وتنبؤ والحصول على المفاتيح ونقطة النهاية. انتظر حتى يتم نشرها وانقر فوق زرالانتقال إلى المورد.
- ستحتاج إلى المفتاح ونقطة النهاية من الموارد التي أنشأتها لتوصيل التطبيق الخاص بك بالرؤية المخصصة. ستلصق المفتاح ونقطة النهاية في التعليمات البرمجية أدناه لاحقًا في التشغيل السريع.
- يمكنك استخدام مستوى التسعير الحر (
F0) لتجربة الخدمة، والترقية لاحقًا إلى مستوى مدفوع للإنتاج.
الإعداد
تثبيت مكتبة عميل الرؤية المخصصة
لكتابة تطبيق تحليل الصور باستخدام الرؤية المخصصة للانتقال، ستحتاج إلى مكتبة عميل خدمة الرؤية المخصصة. شغّل الأمر التالي في PowerShell :
go get -u github.com/Azure/azure-sdk-for-go/...
أو إذا كنت تستخدم dep، في نطاق مستودعك:
dep ensure -add github.com/Azure/azure-sdk-for-go
احصل على التعليمات البرمجية للنموذج
يستخدم هذا المثال الصور من مستودع "عينات Python SDK الخدمات المعرفية" على GitHub. استنساخ أو تحميل هذا المستودع إلى بيئة التطوير الخاصة بك. تذكر موقع المجلد الخاص به لخطوة لاحقة.
إنشاء مشروع الرؤية المخصصة
أنشئ ملفًا جديدًا يُسمى sample.go في دليل مشروعك المفضل وافتحه في برنامج محرر التعليمات البرمجية المفضل لديك.
إضافة التعليمات البرمجية التالية إلى البرنامج النصي لإنشاء مشروع خدمة رؤية مخصصة جديدة. إدراج مفاتيح الاشتراك في التعريفات المناسبة. واحصل كذلك على عنوان URL لنقطة نهايتك من صفحة الإعدادات على موقع Custom Vision .
راجع أسلوب إنشاء مشروع لتحديد الخيارات الأخرى عند إنشاء مشروعك (موضح في دليل مدخل الويب إنشاء مصنف).
import(
"context"
"bytes"
"fmt"
"io/ioutil"
"path"
"log"
"time"
"github.com/Azure/azure-sdk-for-go/services/cognitiveservices/v3.0/customvision/training"
"github.com/Azure/azure-sdk-for-go/services/cognitiveservices/v3.0/customvision/prediction"
)
var (
training_key string = "<your training key>"
prediction_key string = "<your prediction key>"
prediction_resource_id = "<your prediction resource id>"
endpoint string = "<your endpoint URL>"
project_name string = "Go Sample Project"
iteration_publish_name = "classifyModel"
sampleDataDirectory = "<path to sample images>"
)
func main() {
fmt.Println("Creating project...")
ctx = context.Background()
trainer := training.New(training_key, endpoint)
project, err := trainer.CreateProject(ctx, project_name, "sample project", nil, string(training.Multilabel))
if (err != nil) {
log.Fatal(err)
}
إضافة علامات في المشروع
لإضافة علامات تصنيف إلى مشروعك، أضف التعليمات البرمجية التالية بنهاية ملف sample.go:
// Make two tags in the new project
hemlockTag, _ := trainer.CreateTag(ctx, *project.ID, "Hemlock", "Hemlock tree tag", string(training.Regular))
cherryTag, _ := trainer.CreateTag(ctx, *project.ID, "Japanese Cherry", "Japanese cherry tree tag", string(training.Regular))
رفع الصور والإشارة إليها
لإضافة نموذج الصور إلى المشروع، أدخل التعليمات البرمجية التالية بعد إنشاء العلامة. ترفع التعليمات البرمجية هذه كل صورة بعلامتها المقابلة لها. يمكنك رفع ما يصل إلى 64 صورة دفعةً واحدة.
ملاحظة
ستحتاج إلى تغيير مسار الصور بناءً على مكان تنزيل مشروع نماذج Cognitive Services Go SDK سابقًا.
fmt.Println("Adding images...")
japaneseCherryImages, err := ioutil.ReadDir(path.Join(sampleDataDirectory, "Japanese Cherry"))
if err != nil {
fmt.Println("Error finding Sample images")
}
hemLockImages, err := ioutil.ReadDir(path.Join(sampleDataDirectory, "Hemlock"))
if err != nil {
fmt.Println("Error finding Sample images")
}
for _, file := range hemLockImages {
imageFile, _ := ioutil.ReadFile(path.Join(sampleDataDirectory, "Hemlock", file.Name()))
imageData := ioutil.NopCloser(bytes.NewReader(imageFile))
trainer.CreateImagesFromData(ctx, *project.ID, imageData, []string{ hemlockTag.ID.String() })
}
for _, file := range japaneseCherryImages {
imageFile, _ := ioutil.ReadFile(path.Join(sampleDataDirectory, "Japanese Cherry", file.Name()))
imageData := ioutil.NopCloser(bytes.NewReader(imageFile))
trainer.CreateImagesFromData(ctx, *project.ID, imageData, []string{ cherryTag.ID.String() })
}
التدريب على المشروع ونشره
ينشئ هذا الرمز التكرار الأول لنموذج التنبؤ ثم ينشر هذا التكرار إلى نقطة النهاية التنبؤ. يمكن استخدام الاسم الذي تم إعطاؤه للتكرار المنشور لإرسال طلبات التنبؤ. لا يتوفر التكرار في نقطة نهاية التنبؤ حتى يتم نشره.
fmt.Println("Training...")
iteration, _ := trainer.TrainProject(ctx, *project.ID)
for {
if *iteration.Status != "Training" {
break
}
fmt.Println("Training status: " + *iteration.Status)
time.Sleep(1 * time.Second)
iteration, _ = trainer.GetIteration(ctx, *project.ID, *iteration.ID)
}
fmt.Println("Training status: " + *iteration.Status)
trainer.PublishIteration(ctx, *project.ID, *iteration.ID, iteration_publish_name, prediction_resource_id))
استخدم نقطة نهاية التنبؤ
لإرسال صورة إلى نقطة نهاية التنبؤ واسترداد التنبؤ، أضف التعليمات البرمجية التالية إلى نهاية الملف:
fmt.Println("Predicting...")
predictor := prediction.New(prediction_key, endpoint)
testImageData, _ := ioutil.ReadFile(path.Join(sampleDataDirectory, "Test", "test_image.jpg"))
results, _ := predictor.ClassifyImage(ctx, *project.ID, iteration_publish_name, ioutil.NopCloser(bytes.NewReader(testImageData)), "")
for _, prediction := range *results.Predictions {
fmt.Printf("\t%s: %.2f%%", *prediction.TagName, *prediction.Probability * 100)
fmt.Println("")
}
}
شغّل التطبيق
شغّل sample.go.
go run sample.go
يجب أن تكون مخرجات التطبيق مشابهة للنص التالي:
Creating project...
Adding images...
Training...
Training status: Training
Training status: Training
Training status: Training
Training status: Completed
Done!
Hemlock: 93.53%
Japanese Cherry: 0.01%
يمكنك بعد ذلك التحقق من أن صورة الاختبار (الموجودة في <base_image_url> / الصور / الاختبار / ) قد تم وضع علامة عليها بشكل مناسب. يمكنك أيضاً العودة إلى الموقع الإلكتروني لـ Custom Vision ورؤية الحالة الحالية لمشروعك الذي تم إنشاؤه حديثاً.
تنظيف الموارد
إذا كنت ترغب في تنفيذ مشروع تصنيف الصور الخاص بك (أو تجربة مشروع الكشف عن الكائنات بدلاً من ذلك)، فقد ترغب في حذف مشروع تعريف الشجرة من هذا المثال. يسمح الاشتراك المجاني بمشروعي Custom Vision.
على موقع ويب Custom Vision، انتقل إلى Projects وحدِّد سلة المهملات ضمن My New Project.

الخطوات التالية
لقد رأيت الآن كيف يمكن إجراء كل خطوة من خطوات عملية تصنيف الصور في التعليمات البرمجية. ينفذ هذا النموذج تكراراً مفرداً للتدريب، ولكن غالباً ما ستحتاج إلى التدريب على نموذجك واختباره عدة مرات لزيادة دقته.
البدء باستخدامCustom Vision client library الخاصة بـ Java لإنشاء نموذج تصنيف الصور. اتبع هذه الخطوات لتثبيت الحزمة وتجربة نموذج تعليمات البرمجة للمهام الأساسية. استخدم هذا المثال كنموذج لإنشاء تطبيقك الخاص بالتعرف على الصور.
ملاحظة
إذا كنت ترغب في إنشاء نموذج التصنيف والتدرب عليه دون كتابة التعليمات البرمجية، يُرجى مراجعة الإرشادات المستندة إلى المتصفح بدلاً من ذلك.
استخدم مكتبة عميلCustom Vision client library الخاص بـ Java لـ:
- إنشاء مشروع Custom Vision جديد
- إضافة علامات للمشروع
- رفع الصور والإشارة إليها
- التدريب على المشروع
- انشر التكرار الحالي
- اختبار نقطة نهاية التنبؤ
الوثائق المرجعية | شفرة مصدر المكتبة (التدريب) (التنبؤ)| قطعة أثرية (مافن) (تدريب) (تنبؤ) | عينات
المتطلبات الأساسية
- اشتراك Azure - إنشاء اشتراك مجاناً
- الإصدار الحالي من Java Development Kit(JDK)
- أداة إنشاء Gradleأو مدير تبعية آخر.
- بمجرد حصولك على اشتراكك في Azure، قم بإنشاء مورد Custom Vision في مدخل Azure لإنشاء مورد تدريب وتنبؤ والحصول على المفاتيح ونقطة النهاية. انتظر حتى يتم نشرها وانقر فوق زرالانتقال إلى المورد.
- ستحتاج إلى المفتاح ونقطة النهاية من الموارد التي أنشأتها لتوصيل التطبيق الخاص بك بالرؤية المخصصة. ستلصق المفتاح ونقطة النهاية في التعليمات البرمجية أدناه لاحقًا في التشغيل السريع.
- يمكنك استخدام مستوى التسعير الحر (
F0) لتجربة الخدمة، والترقية لاحقًا إلى مستوى مدفوع للإنتاج.
الإعداد
بادر بإنشاء مشروع Gradle جديد
في نافذة وحدة التحكم (مثل cmd أو PowerShell أو Bash)، أنشئ دليلاً جديداً لتطبيقك وانتقل إليه.
mkdir myapp && cd myapp
بادر بتشغيل الأمر gradle init من دليل العمل خاصتك. سينشئ هذا الأمر ملفات بناء أساسية لـ Gradle، بما في ذلك build.gradle.kts، والذي يجري استخدامه في وقت التشغيل لإنشاء تطبيقك وتكوينه.
gradle init --type basic
عند مطالبتك باختيار DSL، حدِّد Kotlin.
تثبيت مكتبة العميل
حدد build.gradle.kts وافتحه باستخدام IDE أو محرر النص المفضل لديك. ثم النسخ في تكوين البنية المُحدد. يُعرّف هذا التكوين المشروع على أنه تطبيق Java التي تُعد نقطة دخوله هي الفئة CustomVisionQuickstart. إنه يستورد مكتبات الرؤية المُخصصة.
plugins {
java
application
}
application {
mainClassName = "CustomVisionQuickstart"
}
repositories {
mavenCentral()
}
dependencies {
compile(group = "com.azure", name = "azure-cognitiveservices-customvision-training", version = "1.1.0-preview.2")
compile(group = "com.azure", name = "azure-cognitiveservices-customvision-prediction", version = "1.1.0-preview.2")
}
إنشاء ملف Java
من دليل العمل لديك، شَغّل الأمر التالي لإنشاء مجلد مصدر المشروع:
mkdir -p src/main/java
الانتقال إلى المجلد الجديد وأنشِئ ملفاً باسم CustomVisionQuickstart.java. افتَحه في المحرر المفضل أو IDE وأضِف العبارات التالية import:
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.UUID;
import com.google.common.io.ByteStreams;
import com.microsoft.azure.cognitiveservices.vision.customvision.training.models.Classifier;
import com.microsoft.azure.cognitiveservices.vision.customvision.training.models.Domain;
import com.microsoft.azure.cognitiveservices.vision.customvision.training.models.DomainType;
import com.microsoft.azure.cognitiveservices.vision.customvision.training.models.ImageFileCreateBatch;
import com.microsoft.azure.cognitiveservices.vision.customvision.training.models.ImageFileCreateEntry;
import com.microsoft.azure.cognitiveservices.vision.customvision.training.models.Iteration;
import com.microsoft.azure.cognitiveservices.vision.customvision.training.models.Project;
import com.microsoft.azure.cognitiveservices.vision.customvision.training.models.Region;
import com.microsoft.azure.cognitiveservices.vision.customvision.training.models.TrainProjectOptionalParameter;
import com.microsoft.azure.cognitiveservices.vision.customvision.training.CustomVisionTrainingClient;
import com.microsoft.azure.cognitiveservices.vision.customvision.training.Trainings;
import com.microsoft.azure.cognitiveservices.vision.customvision.training.CustomVisionTrainingManager;
import com.microsoft.azure.cognitiveservices.vision.customvision.prediction.models.ImagePrediction;
import com.microsoft.azure.cognitiveservices.vision.customvision.prediction.models.Prediction;
import com.microsoft.azure.cognitiveservices.vision.customvision.prediction.CustomVisionPredictionClient;
import com.microsoft.azure.cognitiveservices.vision.customvision.prediction.CustomVisionPredictionManager;
import com.microsoft.azure.cognitiveservices.vision.customvision.training.models.Tag;
تلميح
هل تريد عرض ملف التعليمات البرمجية للتشغيل السريع بالكامل مرةً واحدة؟ يُمكن العثور على GitHub، والذي يحتوي على أمثلة التعليمات البرمجية في التشغيل السريع.
في فئة التطبيق CustomVisionQuickstart، أنشئ متغيرات لمفتاح المورد ونقطة النهاية.
final static String trainingApiKey = "PASTE_YOUR_CUSTOM_VISION_TRAINING_SUBSCRIPTION_KEY_HERE";
final static String trainingEndpoint = "PASTE_YOUR_CUSTOM_VISION_TRAINING_ENDPOINT_HERE";
final static String predictionApiKey = "PASTE_YOUR_CUSTOM_VISION_PREDICTION_SUBSCRIPTION_KEY_HERE";
final static String predictionEndpoint = "PASTE_YOUR_CUSTOM_VISION_PREDICTION_ENDPOINT_HERE";
final static String predictionResourceId = "PASTE_YOUR_CUSTOM_VISION_PREDICTION_RESOURCE_ID_HERE";
هام
انتقل إلى مدخل Azure. إذا تم نشر مورد الرؤية المخصصة الذي أنشأته في قسم "Prerequisites" بنجاح، فانقر فوق زر "Go to Resource" في إطار "Next Steps" . يُمكنك العثور على المفاتيح ونقاط النهاية في صفحات مفتاح ونقاط النهاية. للموارد. ستحتاج إلى الحصول على مفاتيح موارد التدريب والتنبؤ، بالإضافة إلى نقطة نهاية API لمورد التدريب.
يُمكن العثور على معرف مورد التنبؤ في علامة التبويب "Properties" الخاصة بالمورد في مدخل Microsoft Azure، المُدرجة باسم معرف المورد.
تذكر حذف المفتاح من التعليمات البرمجية عند الانتهاء، وعدم نشره على الملأ مطلقاً. للإنتاج، فكر في استخدام طريقة آمنة لتخزين بيانات الاعتماد الخاصة بك والوصول إليها. لمزيد من المعلومات، راجع مقالة الخدمات المعرفية الأمنية.
في أسلوب التطبيق الرئيسيأضف المكالمات للأساليب المستخدمة في التشغيل السريع. تقوم بتحديد هذا لاحقاً.
Project project = createProject(trainClient);
addTags(trainClient, project);
uploadImages(trainClient, project);
trainProject(trainClient, project);
publishIteration(trainClient, project);
testProject(predictor, project);
نموذج الكائن
تتعامل الفئات والواجهات التالية مع بعض الميزات الرئيسية لمكتبة عميل Java الخاصة بالرؤية المُخصصة.
| الاسم | الوصف |
|---|---|
| CustomVisionTrainingClient | يُعالج هذا الفصل إنشاء نماذجك وتدريبها ونشرها. |
| CustomVisionPredictionClient | تعالج هذه الفئة الاستعلام عن نماذجك للتنبؤات بتصنيف الصور. |
| ImagePrediction | تُحدد هذه الفئة تنبؤاً لكائن واحد على صورة واحدة. يتضمن خصائص معرف الكائن واسم ودرجة الثقة. |
أمثلة التعليمات البرمجية
توضح لك هذه المقتطفات البرمجية كيفية القيام بالمهام التالية باستخدام مكتبة عميل الرؤية المخصصة لـ Java:
- مصادقة العميل
- إنشاء مشروع الرؤية المُخصصة الجديد
- إضافة علامات للمشروع
- تحميل الصور ووضع علامات عليها
- التدريب على المشروع
- نشر التكرار الحالي
- اختبار نقطة نهاية التنبؤ
مصادقة العميل
وفقاً للأسلوب الرئيسي، أنشئ مثيل تدريب وتنبؤ العملاء باستخدام نقطة النهاية والمفاتيح.
// Authenticate
CustomVisionTrainingClient trainClient = CustomVisionTrainingManager
.authenticate(trainingEndpoint, trainingApiKey)
.withEndpoint(trainingEndpoint);
CustomVisionPredictionClient predictor = CustomVisionPredictionManager
.authenticate(predictionEndpoint, predictionApiKey)
.withEndpoint(predictionEndpoint);
إنشاء مشروع Custom Vision
T## إنشاء مشروع Custom Vision الجديد
يُنشئ الأسلوب التالي مشروع تصنيف الصور. سيظهر المشروع الذي تم إنشاؤه على موقع ويب الرؤية المُخصصة الذي زرته سابقاً. يُرجى الاطلاع على التحميلات الزائدة لأسلوب "CreateProject" لتحديد الخيارات الأخرى عند إنشاء مشروعك (الموضح في دليل بوابة الويبإنشاء مصنف).
public static Project createProject(CustomVisionTrainingClient trainClient) {
System.out.println("ImageClassification Sample");
Trainings trainer = trainClient.trainings();
System.out.println("Creating project...");
Project project = trainer.createProject().withName("Sample Java Project").execute();
return project;
}
إضافة العلامات للمشروع
تُحدد هذه الطريقة العلامات التي ستقوم بتدريب الطراز عليها.
public static void addTags(CustomVisionTrainingClient trainClient, Project project) {
Trainings trainer = trainClient.trainings();
// create hemlock tag
Tag hemlockTag = trainer.createTag().withProjectId(project.id()).withName("Hemlock").execute();
// create cherry tag
Tag cherryTag = trainer.createTag().withProjectId(project.id()).withName("Japanese Cherry").execute();
}
تحميل ووضع علامات على الصور
أولاً، تنزيل نموذج الصور لهذا المشروع. حفظ محتويات نموذج مجلد الصور على جهازك المحلي.
ملاحظة
هل تحتاج إلى مجموعة أوسع من الصور لإكمال تدريبك؟ يسمح لك Trove، وهو مشروعMicrosoft Garage، بجمع وشراء مجموعات من الصور لأغراض التدريب. بمجرد جمع الصور، يمكنك تنزيلها ثم استيرادها إلى مشروع الرؤية المُخصصة بالطريقة المعتادة. زيارة صفحة Trove لمعرفة المزيد.
public static void uploadImages(CustomVisionTrainingClient trainClient, Project project) {
Trainings trainer = trainClient.trainings();
System.out.println("Adding images...");
for (int i = 1; i <= 10; i++) {
String fileName = "hemlock_" + i + ".jpg";
byte[] contents = GetImage("/Hemlock", fileName);
AddImageToProject(trainer, project, fileName, contents, hemlockTag.id(), null);
}
for (int i = 1; i <= 10; i++) {
String fileName = "japanese_cherry_" + i + ".jpg";
byte[] contents = GetImage("/Japanese_Cherry", fileName);
AddImageToProject(trainer, project, fileName, contents, cherryTag.id(), null);
}
}
تستخدم القصاصة البرمجية السابقة وظيفتين مساعدتين لاسترداد الصور كتدفقات موارد وتحميلها إلى الخدمة (يُمكن تحميل ما يصل إلى 64 صورة في دفعة واحدة).
private static void AddImageToProject(Trainings trainer, Project project, String fileName, byte[] contents,
UUID tag, double[] regionValues) {
System.out.println("Adding image: " + fileName);
ImageFileCreateEntry file = new ImageFileCreateEntry().withName(fileName).withContents(contents);
ImageFileCreateBatch batch = new ImageFileCreateBatch().withImages(Collections.singletonList(file));
// If Optional region is specified, tack it on and place the tag there,
// otherwise
// add it to the batch.
if (regionValues != null) {
Region region = new Region().withTagId(tag).withLeft(regionValues[0]).withTop(regionValues[1])
.withWidth(regionValues[2]).withHeight(regionValues[3]);
file = file.withRegions(Collections.singletonList(region));
} else {
batch = batch.withTagIds(Collections.singletonList(tag));
}
trainer.createImagesFromFiles(project.id(), batch);
}
private static byte[] GetImage(String folder, String fileName) {
try {
return ByteStreams.toByteArray(CustomVisionSamples.class.getResourceAsStream(folder + "/" + fileName));
} catch (Exception e) {
System.out.println(e.getMessage());
e.printStackTrace();
}
return null;
}
التدريب على المشروع
يُنشئ هذا الأسلوب تكرار التدريب الأول في المشروع. إنه يوضح الخدمة حتى اكتمال التدريب.
public static void trainProject(CustomVisionTrainingClient trainClient, Project project) {
System.out.println("Training...");
Trainings trainer = trainClient.trainings();
Iteration iteration = trainer.trainProject(project.id(), new TrainProjectOptionalParameter());
while (iteration.status().equals("Training")) {
System.out.println("Training Status: " + iteration.status());
Thread.sleep(1000);
iteration = trainer.getIteration(project.id(), iteration.id());
}
System.out.println("Training Status: " + iteration.status());
}
نشر التكرار الحالي
يجعل هذا الأسلوب التكرار الحالي للنموذج متوفراً للاستعلام. يُمكن استخدام اسم الطراز كمرجع لإرسال طلبات التنبؤ. تحتاج إلى إدخال القيمة لـ predictionResourceId. يُمكن العثور على معرف مورد التنبؤ في علامة التبويب "Properties" الخاصة بالمورد في مدخل Microsoft Azure، المُدرجة باسم معرف المورد.
public static String publishIteration(CustomVisionTrainingClient trainClient, Project project) {
Trainings trainer = trainClient.trainings();
// The iteration is now trained. Publish it to the prediction endpoint.
String publishedModelName = "myModel";
trainer.publishIteration(project.id(), iteration.id(), publishedModelName, predictionResourceId);
}
اختبار نقطة نهاية التنبؤ
يقوم هذا الأسلوب بتحميل صورة الاختبار والاستعلام عن نقطة نهاية النموذج وإخراج بيانات التنبؤ إلى وحدة التحكم.
// load test image
public static void testProject(CustomVisionPredictionClient predictor, Project project) {
byte[] testImage = GetImage("/Test", "test_image.jpg");
// predict
ImagePrediction results = predictor.predictions().classifyImage().withProjectId(project.id())
.withPublishedName(publishedModelName).withImageData(testImage).execute();
for (Prediction prediction : results.predictions()) {
System.out.println(String.format("\t%s: %.2f%%", prediction.tagName(), prediction.probability() * 100.0f));
}
}
شغّل التطبيق
يمكنك إنشاء التطبيق باستخدام:
gradle build
تشغيل التطبيق بالأمر gradle run :
gradle run
تنظيف الموارد
إذا كنت تريد تنظيف وإلغاء اشتراك الخدمات المعرفية، يمكنك حذف المورد أو مجموعة الموارد. يؤدي حذف مجموعة الموارد إلى حذف أية موارد أخرى مقترنة بها أيضًا.
إذا كنت ترغب في تنفيذ مشروع تصنيف الصور الخاص بك (أو تجربة مشروع الكشف عن الكائنات بدلاً من ذلك)، فقد ترغب في حذف مشروع تعريف الشجرة من هذا المثال. يسمح الاشتراك المجاني بمشروعي Custom Vision.
على موقع ويب Custom Vision، انتقل إلى Projects وحدِّد سلة المهملات ضمن My New Project.

الخطوات التالية
وفي الوقت الحالي، التعرف على كيفية إجراء كل خطوة من خطوات عملية تصنيف الصور في التعليمات البرمجية. ينفذ هذا النموذج تكراراً مفرداً للتدريب، ولكن غالباً ما ستحتاج إلى التدريب على نموذجك واختباره عدة مرات لزيادة دقته.
- ما المقصود بالرؤية المُخصصة؟
- يمكن العثور على التعليمات البرمجية للمصدر لهذا النموذج على GitHub
يوفر هذا الدليل إرشادات ونماذج من التعليمات البرمجية لمساعدتك على البدء في استخدام مكتبة عميل Custom Vision الخاصة بـ Node.js لإنشاء نموذج تصنيف الصور. ستُنشئ مشروعاً وتضيف علامات وتتدرب عليه وتستخدم عنوان "URL" لنقطة نهاية التنبؤ بالمشروع لاختباره برمجياً. استخدم هذا المثال كنموذج لبناء تطبيق التعرف على صورك.
ملاحظة
إذا كنت ترغب في إنشاء نموذج التصنيف والتدرب عليه دون كتابة التعليمات البرمجية، يُرجى مراجعة الإرشادات المستندة إلى المتصفح بدلاً من ذلك.
استخدام مكتبة عميل الرؤية المُخصصة الخاصة بـ.NET بغرض:
- إنشاء مشروع Custom Vision جديد
- إضافة علامات للمشروع
- رفع الصور والإشارة إليها
- التدريب على المشروع
- انشر التكرار الحالي
- اختبار نقطة نهاية التنبؤ
الوثائق المرجعية (التدريب) (التنبؤ) | شفرة مصدر المكتبة (التدريب) (التنبؤ) | حزمة (npm) (تدريب) (تنبؤ) | عينات
المتطلبات الأساسية
- اشتراك Azure - إنشاء اشتراك مجاناً
- الإصدار الحالي من Node.js
- بمجرد حصولك على اشتراكك في Azure، قم بإنشاء مورد Custom Vision في مدخل Azure لإنشاء مورد تدريب وتنبؤ والحصول على المفاتيح ونقطة النهاية. انتظر حتى يتم نشرها وانقر فوق زرالانتقال إلى المورد.
- ستحتاج إلى المفتاح ونقطة النهاية من الموارد التي أنشأتها لتوصيل التطبيق الخاص بك بالرؤية المخصصة. ستلصق المفتاح ونقطة النهاية في التعليمات البرمجية أدناه لاحقًا في التشغيل السريع.
- يمكنك استخدام مستوى التسعير الحر (
F0) لتجربة الخدمة، والترقية لاحقًا إلى مستوى مدفوع للإنتاج.
الإعداد
إنشاء تطبيق Node.js جديد
في نافذة وحدة التحكم (مثل cmd، أو PowerShell، أو Bash)، أنشئ دليلاً جديدًا لتطبيقك، وانتقل إليه.
mkdir myapp && cd myapp
شغل npm initالأمر لإنشاء تطبيق node باستخدام ملف package.json.
npm init
تثبيت مكتبة العميل
لكتابة تطبيق تحليل الصور باستخدامCustom Vision لـ Node.js، ستحتاج إلى حزم NPM الخاصة بـ Custom Vision. لتثبيت ذلك، شَغّل الأمر التالي في PowerShell:
npm install @azure/cognitiveservices-customvision-training
npm install @azure/cognitiveservices-customvision-prediction
تحديث ملف تطبيقك package.json باستخدام التبعيات.
أنشئ ملفاً جديداً باسم index.js ومن ثم استورد المكتبات التالية:
const util = require('util');
const fs = require('fs');
const TrainingApi = require("@azure/cognitiveservices-customvision-training");
const PredictionApi = require("@azure/cognitiveservices-customvision-prediction");
const msRest = require("@azure/ms-rest-js");
تلميح
هل تريد عرض ملف التعليمات البرمجية للتشغيل السريع بالكامل مرةً واحدة؟ يُمكن العثور على GitHub، والذي يحتوي على أمثلة التعليمات البرمجية في التشغيل السريع.
إنشاء متغيرات لنقطة نهاية Azure الخاصة بالمورد والمفتاح.
const trainingKey = "PASTE_YOUR_CUSTOM_VISION_TRAINING_SUBSCRIPTION_KEY_HERE";
const trainingEndpoint = "PASTE_YOUR_CUSTOM_VISION_TRAINING_ENDPOINT_HERE";
const predictionKey = "PASTE_YOUR_CUSTOM_VISION_PREDICTION_SUBSCRIPTION_KEY_HERE";
const predictionResourceId = "PASTE_YOUR_CUSTOM_VISION_PREDICTION_RESOURCE_ID_HERE";
const predictionEndpoint = "PASTE_YOUR_CUSTOM_VISION_PREDICTION_ENDPOINT_HERE";
هام
انتقل إلى مدخل Azure. إذا تم نشر مورد التدريب الخاص بـCustom Vision الذي قمت بإنشائه في قسم "Prerequisites" بنجاح، انقر فوق زر "Go to Resource" ضمن "Next Steps" . يُمكنك العثور على المفاتيح ونقاط النهاية في صفحات مفتاح ونقاط النهاية للموارد.
يُمكن العثور على معرف مورد التنبؤ في علامة التبويب "Properties" الخاصة بالمورد في مدخل Microsoft Azure، المُدرجة باسم معرف المورد.
تذكر حذف المفتاح من التعليمات البرمجية عند الانتهاء، وعدم نشره على الملأ مطلقاً. للإنتاج، فكر في استخدام طريقة آمنة لتخزين بيانات الاعتماد الخاصة بك والوصول إليها. يُرجى الاطلاع على مقالCognitive Services "security" للحصول على المزيد من المعلومات.
علاوة على ذلك، أضف حقولاً لاسم مشروعك ومعلمة مهلة للمكالمات غير المتزامنة.
const publishIterationName = "classifyModel";
const setTimeoutPromise = util.promisify(setTimeout);
نموذج الكائن
| الاسم | الوصف |
|---|---|
| TrainingAPIClient | يُعالج هذا الفصل إنشاء نماذجك وتدريبها ونشرها. |
| PredictionAPIClient | تعالج هذه الفئة الاستعلام عن نماذجك للتنبؤات بتصنيف الصور. |
| التنبؤ | تُحدد هذه الفئة تنبؤاً لكائن واحد على صورة واحدة. يتضمن خصائص معرف الكائن واسم ودرجة الثقة. |
أمثلة التعليمات البرمجية
توضح لك المقتطفات البرمجية كيفية تنفيذ المهام التالية باستخدام مكتبة عميل Custom Vision لـ JavaScript:
- مصادقة العميل
- إنشاء مشروع الرؤية المُخصصة الجديد
- إضافة علامات للمشروع
- تحميل الصور ووضع علامات عليها
- التدريب على المشروع
- نشر التكرار الحالي
- اختبار نقطة نهاية التنبؤ
مصادقة العميل
إنشاء مثيل لكائنات العميل باستخدام نقطة النهاية والمفتاح. قم بإنشاء كائن ApiKeyCredentials باستخدام المفتاح، واستخدامه مع نقطة النهاية لإنشاء TrainingAPIClient وPredictionAPIClient.
const credentials = new msRest.ApiKeyCredentials({ inHeader: { "Training-key": trainingKey } });
const trainer = new TrainingApi.TrainingAPIClient(credentials, trainingEndpoint);
const predictor_credentials = new msRest.ApiKeyCredentials({ inHeader: { "Prediction-key": predictionKey } });
const predictor = new PredictionApi.PredictionAPIClient(predictor_credentials, predictionEndpoint);
إنشاء مشروع Custom Vision جديد
بدء تشغيل دالة جديدة لاحتواء جميع استدعاءات دالة Custom Vision. إضافة التعليمات البرمجية التالية لإنشاء مشروع خدمة Custom Vision الجديد.
(async () => {
console.log("Creating project...");
const sampleProject = await trainer.createProject("Sample Project");
إضافة علامات للمشروع
لإضافة علامات تصنيف إلى مشروعك، أضف التعليمات البرمجية التالية إلى الدالة:
const hemlockTag = await trainer.createTag(sampleProject.id, "Hemlock");
const cherryTag = await trainer.createTag(sampleProject.id, "Japanese Cherry");
تحميل ووضع علامات على الصور
أولاً، تنزيل نموذج الصور لهذا المشروع. حفظ محتويات نموذج مجلد الصور على جهازك المحلي.
ملاحظة
هل تحتاج إلى مجموعة أوسع من الصور لإكمال تدريبك؟ يسمح لك Trove، وهو مشروعMicrosoft Garage، بجمع وشراء مجموعات من الصور لأغراض التدريب. بمجرد جمع الصور، يمكنك تنزيلها ثم استيرادها إلى مشروع الرؤية المُخصصة بالطريقة المعتادة. زيارة صفحة Trove لمعرفة المزيد.
لإضافة نماذج الصور إلى المشروع، أدخل التعليمات البرمجية التالية بعد إنشاء العلامة. ترفع التعليمات البرمجية هذه كل صورة بعلامتها المقابلة لها.
const sampleDataRoot = "Images";
console.log("Adding images...");
let fileUploadPromises = [];
const hemlockDir = `${sampleDataRoot}/Hemlock`;
const hemlockFiles = fs.readdirSync(hemlockDir);
hemlockFiles.forEach(file => {
fileUploadPromises.push(trainer.createImagesFromData(sampleProject.id, fs.readFileSync(`${hemlockDir}/${file}`), { tagIds: [hemlockTag.id] }));
});
const cherryDir = `${sampleDataRoot}/Japanese_Cherry`;
const japaneseCherryFiles = fs.readdirSync(cherryDir);
japaneseCherryFiles.forEach(file => {
fileUploadPromises.push(trainer.createImagesFromData(sampleProject.id, fs.readFileSync(`${cherryDir}/${file}`), { tagIds: [cherryTag.id] }));
});
await Promise.all(fileUploadPromises);
هام
ستحتاج إلى تغيير المسار إلى الصور (sampleDataRoot) بناءً على مكان تنزيل تقرير عيناتCognitive Services Python SDK.
التدريب على المشروع
تُنشئ التعليمة البرمجية التكرار الأول لنموذج التنبؤ.
console.log("Training...");
let trainingIteration = await trainer.trainProject(sampleProject.id);
// Wait for training to complete
console.log("Training started...");
while (trainingIteration.status == "Training") {
console.log("Training status: " + trainingIteration.status);
await setTimeoutPromise(1000, null);
trainingIteration = await trainer.getIteration(sampleProject.id, trainingIteration.id)
}
console.log("Training status: " + trainingIteration.status);
نشر التكرار الحالي
ينشر هذا الرمز التكرار الذي تم التدريب عليه إلى نقطة نهاية التنبؤ. يمكن استخدام الاسم الذي تم إعطاؤه للتكرار المنشور لإرسال طلبات التنبؤ. لا يتوفر التكرار في نقطة نهاية التنبؤ حتى يتم نشره.
// Publish the iteration to the end point
await trainer.publishIteration(sampleProject.id, trainingIteration.id, publishIterationName, predictionResourceId);
اختبار نقطة نهاية التنبؤ
لإرسال صورة إلى نقطة نهاية التنبؤ واسترداد التنبؤ، أضف التعليمات البرمجية التالية إلى الدالة.
const testFile = fs.readFileSync(`${sampleDataRoot}/Test/test_image.jpg`);
const results = await predictor.classifyImage(sampleProject.id, publishIterationName, testFile);
// Show results
console.log("Results:");
results.predictions.forEach(predictedResult => {
console.log(`\t ${predictedResult.tagName}: ${(predictedResult.probability * 100.0).toFixed(2)}%`);
});
وبالتالي، أغلق دالة Custom Vision ثم استدعها.
})()
شغّل التطبيق
شغّل التطبيق باستخدام الأمر node المُتاح على ملف التشغيل السريع.
node index.js
يجب أن تكون مخرجات التطبيق مشابهة للنص التالي:
Creating project...
Adding images...
Training...
Training started...
Training status: Training
Training status: Training
Training status: Training
Training status: Completed
Results:
Hemlock: 94.97%
Japanese Cherry: 0.01%
يمكنك بعد ذلك التحقق من أن صورة الاختبار (الموجودة في <sampleDataRoot>/Test/) قد تم وضع علامة عليها بشكل مناسب. يمكنك أيضاً العودة إلى الموقع الإلكتروني لـ Custom Vision ورؤية الحالة الحالية لمشروعك الذي تم إنشاؤه حديثاً.
إذا كنت ترغب في تنفيذ مشروع تصنيف الصور الخاص بك (أو تجربة مشروع الكشف عن الكائنات بدلاً من ذلك)، فقد ترغب في حذف مشروع تعريف الشجرة من هذا المثال. يسمح الاشتراك المجاني بمشروعي Custom Vision.
على موقع ويب Custom Vision، انتقل إلى Projects وحدِّد سلة المهملات ضمن My New Project.

الخطوات التالية
لقد رأيت الآن كيف يمكن إجراء كل خطوة من خطوات عملية تصنيف الصور في التعليمات البرمجية. ينفذ هذا النموذج تكراراً مفرداً للتدريب، ولكن غالباً ما ستحتاج إلى التدريب على نموذجك واختباره عدة مرات لزيادة دقته.
- ما المقصود بالرؤية المُخصصة؟
- يمكن العثور على كود المصدر للنموذج على GitHub
- التوثيق المرجعي لـ SDK (التدريب)
- (التنبؤ) بالتوثيق المرجعي للـ SDK
ابدأ مع مكتبة عميل Custom Vision لـ Python. اتبع هذه الخطوات لتثبيت الحزمة وتجربة التعليمات البرمجية المثال لإنشاء نموذج تصنيف صورة. ستقوم بإنشاء مشروع وإضافة علامات وتدريب المشروع واستخدام عنوان URL لنقطة نهاية التنبؤ للمشروع لاختباره برمجيًا. استخدم هذا المثال كنموذج لبناء تطبيق التعرف على صورك.
ملاحظة
إذا كنت ترغب في إنشاء نموذج تصنيف وتدريبه دون كتابة التعليمات البرمجية، فراجع التوجيه المستند إلى المستعرض بدلاً من ذلك.
استخدم مكتبة عميل Custom Vision لـ Python:
- إنشاء مشروع Custom Vision جديد
- إضافة علامات للمشروع
- رفع الصور والإشارة إليها
- التدريب على المشروع
- انشر التكرار الحالي
- اختبار نقطة نهاية التنبؤ
نماذج التوثيق المرجعي | التعليمة البرمجية لمصدر المكتبة | حزمة (PyPi) | عينات
المتطلبات الأساسية
- اشتراك Azure - إنشاء اشتراك مجانًا
- Python 3.x
- يجب أن يتضمن تثبيت Python خاصتك pip. يمكنك التحقق مما إذا كانت لديك نقطة مثبتة عن طريق تشغيل
pip --versionعلى سطر الأوامر. الحصول على نقطة عن طريق تثبيت أحدث إصدار من Python.
- يجب أن يتضمن تثبيت Python خاصتك pip. يمكنك التحقق مما إذا كانت لديك نقطة مثبتة عن طريق تشغيل
- بمجرد حصولك على اشتراكك في Azure، قم بإنشاء مورد Custom Vision في مدخل Azure لإنشاء مورد تدريب وتنبؤ والحصول على المفاتيح ونقطة النهاية. انتظر حتى يتم نشرها وانقر فوق زرالانتقال إلى المورد.
- ستحتاج إلى المفتاح ونقطة النهاية من المصادر التي أنشأتها لتوصيل تطبيقك بالرؤية المُخصصة. ستقوم بلصق مفاتيحك ونقطة النهاية لديك في التعليمات البرمجية الواردة أدناه لاحقاً في التشغيل السريع.
- يُمكن استخدام درجة التسعير المجاني (
F0) لتجربة الخدمة، والترقية لاحقاً إلى للمستوى المدفوع للإنتاج.
الإعداد
تثبيت مكتبة العميل
لكتابة تطبيق تحليل الصور باستخدامCustom Vision الخاصة بلغة Python، ستحتاج إلى مكتبة عميل Custom Vision. بعد تثبيت Python، شَغّل الأمر التالي في PowerShell أو نافذة وحدة التحكم:
pip install azure-cognitiveservices-vision-customvision
إنشاء تطبيق Python جديد
إنشاء ملف Python الجديد واستيراد المكتبات التالية.
from azure.cognitiveservices.vision.customvision.training import CustomVisionTrainingClient
from azure.cognitiveservices.vision.customvision.prediction import CustomVisionPredictionClient
from azure.cognitiveservices.vision.customvision.training.models import ImageFileCreateBatch, ImageFileCreateEntry, Region
from msrest.authentication import ApiKeyCredentials
import os, time, uuid
تلميح
هل تريد عرض ملف التعليمات البرمجية للتشغيل السريع بالكامل مرةً واحدة؟ يُمكن العثور على GitHub، والذي يحتوي على أمثلة التعليمات البرمجية في التشغيل السريع.
إنشاء متغيرات لنقطة نهاية Azure ومفاتيح الاشتراك الخاصة بالمورد.
# Replace with valid values
ENDPOINT = "PASTE_YOUR_CUSTOM_VISION_TRAINING_ENDPOINT_HERE"
training_key = "PASTE_YOUR_CUSTOM_VISION_TRAINING_SUBSCRIPTION_KEY_HERE"
prediction_key = "PASTE_YOUR_CUSTOM_VISION_PREDICTION_SUBSCRIPTION_KEY_HERE"
prediction_resource_id = "PASTE_YOUR_CUSTOM_VISION_PREDICTION_RESOURCE_ID_HERE"
هام
انتقل إلى مدخل Azure. إذا تم نشر مورد الرؤية المخصصة الذي أنشأته في قسم "Prerequisites" بنجاح، فانقر فوق زر "Go to Resource" في إطار "Next Steps" . يُمكنك العثور على المفاتيح ونقاط النهاية في صفحات مفتاح ونقاط النهاية. للموارد. ستحتاج إلى الحصول على مفاتيح موارد التدريب والتنبؤ، بالإضافة إلى نقطة نهاية API لمورد التدريب.
يُمكن العثور على معرف مورد التنبؤ في علامة التبويب "Properties" الخاصة بالمورد في مدخل Microsoft Azure، المُدرجة باسم معرف المورد.
يمكنك أيضا الذهاب إلى https://www.customvision.ai/. بعد تسجيل الدخول، حدد أيقونة الإعدادات في أعلى يسار الصفحة. في صفحات الإعداد ، يمكنك الحصول على جميع المفاتيح ومعرف المورد ونقاط النهاية.
تذكر إزالة المفاتيح من التعليمات البرمجية عند الانتهاء، وعدم نشرها على الملأ مطلقاً. للإنتاج، فكر في استخدام طريقة آمنة لتخزين بيانات الاعتماد الخاصة بك والوصول إليها. يُرجى الاطلاع على مقالCognitive Services "security" للحصول على المزيد من المعلومات.
طراز الكائن
| الاسم | الوصف |
|---|---|
| CustomVisionTrainingClient | يُعالج هذا الفصل إنشاء نماذجك وتدريبها ونشرها. |
| CustomVisionPredictionClient | تعالج هذه الفئة الاستعلام عن نماذجك للتنبؤات بتصنيف الصور. |
| ImagePrediction | تُحدد هذه الفئة تنبؤاً لكائن واحد على صورة واحدة. يتضمن خصائص معرف الكائن واسمه وموقع المربع المحيط للكائن ودرجة الثقة. |
أمثلة التعليمات البرمجية
توضح لك المقتطفات البرمجية كيفية القيام بالمهام التالية باستخدام مكتبة عميل Custom Vision الخاصة بـ Python:
- مصادقة العميل
- إنشاء مشروع الرؤية المُخصصة الجديد
- إضافة علامات للمشروع
- تحميل الصور ووضع علامات عليها
- التدريب على المشروع
- نشر التكرار الحالي
- اختبار نقطة نهاية التنبؤ
مصادقة العميل
إنشاء عميل تدريب وتوقع باستخدام نقطة النهاية والمفاتيح لديك. أنشئ كائنات ApiKeyServiceClientCredentials باستخدام مفاتيحك، واستخدمها مع نقطة النهاية لإنشاء كائن CustomVisionTrainingClient وCustomVisionPredictionClient.
credentials = ApiKeyCredentials(in_headers={"Training-key": training_key})
trainer = CustomVisionTrainingClient(ENDPOINT, credentials)
prediction_credentials = ApiKeyCredentials(in_headers={"Prediction-key": prediction_key})
predictor = CustomVisionPredictionClient(ENDPOINT, prediction_credentials)
إنشاء مشروع Custom Vision جديد
أضف التعليمات البرمجية التالية إلى البرنامج النصي لديك لإنشاء مشروع خدمة Custom Vision جديد.
راجع أسلوب create_project لتحديد خيارات أخرى عند إنشاء المشروع الخاص بك (موضح في دليل مدخل ويب إنشاء مصنف).
publish_iteration_name = "classifyModel"
credentials = ApiKeyCredentials(in_headers={"Training-key": training_key})
trainer = CustomVisionTrainingClient(ENDPOINT, credentials)
# Create a new project
print ("Creating project...")
project_name = uuid.uuid4()
project = trainer.create_project(project_name)
إضافة علامات للمشروع
لإضافة علامات تصنيف إلى مشروعك، أضف التعليمات البرمجية التالية:
# Make two tags in the new project
hemlock_tag = trainer.create_tag(project.id, "Hemlock")
cherry_tag = trainer.create_tag(project.id, "Japanese Cherry")
تحميل تمييز الصور
أولاً، تنزيل نموذج الصور لهذا المشروع. حفظ محتويات نموذج مجلد الصور على جهازك المحلي.
ملاحظة
هل تحتاج إلى مجموعة أوسع من الصور لإكمال تدريبك؟ يسمح لك Trove، وهو مشروعMicrosoft Garage، بجمع وشراء مجموعات من الصور لأغراض التدريب. بمجرد جمع الصور، يمكنك تنزيلها ثم استيرادها إلى مشروع الرؤية المُخصصة بالطريقة المعتادة. زيارة صفحة Trove لمعرفة المزيد.
لإضافة نماذج الصور إلى المشروع، أدخل التعليمات البرمجية التالية بعد إنشاء العلامة. ترفع التعليمات البرمجية هذه كل صورة بعلامتها المقابلة لها. يمكنك رفع ما يصل إلى 64 صورة دفعةً واحدة.
base_image_location = os.path.join (os.path.dirname(__file__), "Images")
print("Adding images...")
image_list = []
for image_num in range(1, 11):
file_name = "hemlock_{}.jpg".format(image_num)
with open(os.path.join (base_image_location, "Hemlock", file_name), "rb") as image_contents:
image_list.append(ImageFileCreateEntry(name=file_name, contents=image_contents.read(), tag_ids=[hemlock_tag.id]))
for image_num in range(1, 11):
file_name = "japanese_cherry_{}.jpg".format(image_num)
with open(os.path.join (base_image_location, "Japanese_Cherry", file_name), "rb") as image_contents:
image_list.append(ImageFileCreateEntry(name=file_name, contents=image_contents.read(), tag_ids=[cherry_tag.id]))
upload_result = trainer.create_images_from_files(project.id, ImageFileCreateBatch(images=image_list))
if not upload_result.is_batch_successful:
print("Image batch upload failed.")
for image in upload_result.images:
print("Image status: ", image.status)
exit(-1)
ملاحظة
ستحتاج إلى تغيير المسار إلى الصور بناءً على مكان تنزيل تقرير عينات Cognitive Services Python SDK.
تدريب المشروع
تُنشئ التعليمة البرمجية التكرار الأول لنموذج التنبؤ.
print ("Training...")
iteration = trainer.train_project(project.id)
while (iteration.status != "Completed"):
iteration = trainer.get_iteration(project.id, iteration.id)
print ("Training status: " + iteration.status)
print ("Waiting 10 seconds...")
time.sleep(10)
تلميح
التدريب باستخدام علامات محددة
اختيارياً، يمكنك التدريب على مجموعة فرعية فقط من العلامات المطبقة. قد ترغب في القيام بذلك إذا لم تكن قد طبقت ما يكفي من العلامات المُحددة حتى الآن، ولكن لديك ما يكفي من العلامات الأخرى. في الاستدعاء "train_project" ، حدد المعلمة الاختيارية "selected_tags" إلى قائمة سلاسل المعرفات الخاصة بالعلامات التي تريد استخدامها. سيدربك النموذج على التعرف فقط على العلامات المُدرجة في تلك القائمة.
نشر التكرار الحالي
لا يتوفر التكرار في نقطة نهاية التنبؤ حتى يتم نشره. تتيح التعليمات البرمجية التالية الاستعلام عن التكرار الحالي للنموذج.
# The iteration is now trained. Publish it to the project endpoint
trainer.publish_iteration(project.id, iteration.id, publish_iteration_name, prediction_resource_id)
print ("Done!")
اختبار نقطة نهاية التنبؤ
لإرسال صورة إلى نقطة نهاية التنبؤ واسترداد التنبؤ، أضف التعليمات البرمجية التالية إلى نهاية الملف:
# Now there is a trained endpoint that can be used to make a prediction
prediction_credentials = ApiKeyCredentials(in_headers={"Prediction-key": prediction_key})
predictor = CustomVisionPredictionClient(ENDPOINT, prediction_credentials)
with open(os.path.join (base_image_location, "Test/test_image.jpg"), "rb") as image_contents:
results = predictor.classify_image(
project.id, publish_iteration_name, image_contents.read())
# Display the results.
for prediction in results.predictions:
print("\t" + prediction.tag_name +
": {0:.2f}%".format(prediction.probability * 100))
شغّل التطبيق
قم بتشغيل CustomVisionQuickstart.py.
python CustomVisionQuickstart.py
يجب أن يكون إخراج التطبيق مشابهًا للنص التالي:
Creating project...
Adding images...
Training...
Training status: Training
Training status: Completed
Done!
Hemlock: 93.53%
Japanese Cherry: 0.01%
يمكنك بعد ذلك التحقق من أن صورة الاختبار (الموجودة في <base_image_location>/images/Test/) موسومة بشكل مناسب. يمكنك أيضاً العودة إلى الموقع الإلكتروني لـ Custom Vision ورؤية الحالة الحالية لمشروعك الذي تم إنشاؤه حديثاً.
تنظيف الموارد
إذا كنت ترغب في تنفيذ مشروع تصنيف الصور الخاص بك (أو تجربة مشروع الكشف عن الكائنات بدلاً من ذلك)، فقد ترغب في حذف مشروع تعريف الشجرة من هذا المثال. يسمح الاشتراك المجاني بمشروعي Custom Vision.
على موقع ويب Custom Vision، انتقل إلى Projects وحدِّد سلة المهملات ضمن My New Project.

الخطوات التالية
وفي الوقت الحالي، التعرف على كيفية إجراء كل خطوة من خطوات عملية تصنيف الصور في التعليمات البرمجية. ينفذ هذا النموذج تكراراً مفرداً للتدريب، ولكن غالباً ما ستحتاج إلى التدريب على نموذجك واختباره عدة مرات لزيادة دقته.
- ما المقصود بالرؤية المُخصصة؟
- يمكن العثور على التعليمات البرمجية للمصدر لهذا النموذج على GitHub
- الوثائق المرجعية لـ SDK
ابدأ باستخدام واجهة برمجة تطبيقاتCustom Vision REST. اتبع هذه الخطوات لاستدعاء واجهة برمجة تطبيقات وإنشاء نموذج تصنيف صورة. ستقوم بإنشاء مشروع وإضافة علامات وتدريب المشروع واستخدام عنوان URL لنقطة نهاية التنبؤ للمشروع لاختباره برمجيًا. استخدم هذا المثال كنموذج لبناء تطبيق التعرف على صورك.
ملاحظة
يتم استخدام Custom Vision بسهولة أكبر من خلال SDK مكتبة العميل أو من خلال الإرشادات المستندة إلى المستعرض.
قم باستخدام مكتبة عميل Custom Vision لـ.NET لـ:
- إنشاء مشروع Custom Vision جديد
- إضافة علامات للمشروع
- رفع الصور والإشارة إليها
- التدريب على المشروع
- انشر التكرار الحالي
- اختبار نقطة نهاية التنبؤ
المتطلبات الأساسية
- اشتراك Azure - إنشاء اشتراك مجانًا
- بمجرد حصولك على اشتراكك في Azure، قم بإنشاء مورد Custom Vision في مدخل Azure لإنشاء مورد تدريب وتنبؤ والحصول على المفاتيح ونقطة النهاية. انتظر حتى يتم نشرها وانقر فوق زرالانتقال إلى المورد.
- ستحتاج إلى المفتاح ونقطة النهاية من الموارد التي أنشأتها لتوصيل التطبيق الخاص بك بالرؤية المخصصة. ستلصق المفتاح ونقطة النهاية في التعليمات البرمجية أدناه لاحقًا في التشغيل السريع.
- يمكنك استخدام مستوى التسعير الحر (
F0) لتجربة الخدمة، والترقية لاحقًا إلى مستوى مدفوع للإنتاج.
- PowerShell الإصدار 6.0 +، أو تطبيق سطر أوامر مشابهة.
إنشاء مشروع Custom Vision جديد
ستستخدم أمرًا مشابهًا لما يلي لإنشاء مشروع تصنيف الصور. سيظهر المشروع الذي تم إنشاؤه على موقع Custom Vision.
curl -v -X POST -H "Training-key: {subscription key}" "https://{endpoint}/customvision/v3.3/Training/projects?name={name}"
نسخ الأمر إلى محرر نصوص وإجراء التغييرات التالية:
- استبدل
{subscription key} بمفتاح اشتراك Face الصالح. - استبدل
{endpoint} بنقطة النهاية التي تتوافق مع مفتاح الاشتراك.ملاحظة
الموارد الجديدة التي تم إنشاؤها بعد 1 يوليو 2019 ستستخدم أسماء النطاقات الفرعية المخصصة. لمزيد من المعلومات وقائمة كاملة بنقاط الانتهاء الإقليمية، راجع أسماء النطاقات الفرعية المخصصة للخدمات المعرفية.
- استبدل
{name} باسم المشروع الخاص بك. - تعيين معلمات URL أخرى بشكل اختياري لتكوين نوع النموذج الذي سيستخدمه مشروعك. راجع واجهة برمجة تطبيقات CreatProject للحصول على خيارات.
ستتلقى استجابة JSON كما يلي. حفظ قيمة "id" الخاصة بمشروعك إلى موقع مؤقت.
{
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"description": "string",
"settings": {
"domainId": "00000000-0000-0000-0000-000000000000",
"classificationType": "Multiclass",
"targetExportPlatforms": [
"CoreML"
],
"useNegativeSet": true,
"detectionParameters": "string",
"imageProcessingSettings": {
"augmentationMethods": {}
}
},
"created": "string",
"lastModified": "string",
"thumbnailUri": "string",
"drModeEnabled": true,
"status": "Succeeded"
}
قم بإضافة علامات للمشروع
استخدم الأمر التالي لتعريف العلامات التي ستقوم بتدريب النموذج عليها.
curl -v -X POST -H "Training-key: {subscription key}" "https://{endpoint}/customvision/v3.3/Training/projects/{projectId}/tags?name={name}"
- قم مرة أخرى بإدراج مفتاح وعنوان URL نقطة النهاية الخاصين بك.
- استبدل
{projectId} بمعرف مشروعك الخاص. - استبدل
{name} باسم العلامة التي تريد استخدامها.
كرر هذه العملية لجميع العلامات التي ترغب في استخدامها في مشروعك. إذا كنت تستخدم الصور المثال المقدمة، أضف العلامات "Hemlock" و"Japanese Cherry".
ستتلقى استجابة JSON كما يلي. حفظ قيمة "id" لكل علامة إلى موقع مؤقت.
{
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"description": "string",
"type": "Regular",
"imageCount": 0
}
رفع الصور والإشارة إليها
بعد ذلك، قم بتنزيل نموذج الصور لهذا المشروع. قم بحفظ محتويات مجلد الصور بالعينة إلى الجهاز المحلي.
ملاحظة
هل تحتاج إلى مجموعة أوسع من الصور لإكمال تدريبك؟ يسمح لك Trove، وهو مشروعMicrosoft Garage، بجمع وشراء مجموعات من الصور لأغراض التدريب. بمجرد جمع الصور، يمكنك تنزيلها ثم استيرادها إلى مشروع الرؤية المُخصصة بالطريقة المعتادة. قم بزيارة صفحة Trove لمعرفة المزيد.
استخدم الأمر التالي لتحميل الصور وتطبيق العلامات؛ مرة لصور "نَبات الشَّوْكَران "، ومرة أخرى بشكل منفصل لصور "الكرز الياباني". راجع واجهة برمجة تطبيقات إنشاء صور من البيانات لمزيد من الخيارات.
curl -v -X POST -H "Content-Type: multipart/form-data" -H "Training-key: {subscription key}" "https://{endpoint}/customvision/v3.3/Training/projects/{projectId}/images?tagIds={tagArray}"
--data-ascii "{binary data}"
- قم مرة أخرى بإدراج مفتاح وعنوان URL نقطة النهاية الخاصين بك.
- استبدل
{projectId} بمعرف مشروعك الخاص. - استبدال
{tagArray} بمعرف علامة. - ثم، قم بملء نص الطلب الأساسي بالبيانات الثنائية للصور التي تريد وضع علامة عليها.
تدريب المشروع
تقوم هذه الطريقة بتدريب النموذج على الصور ذات العلامات التي قمت بتحميلها وتعيد معرفا لتكرار المشروع الحالي.
curl -v -X POST -H "Content-Type: application/json" -H "Training-key: {subscription key}" "https://{endpoint}/customvision/v3.3/Training/projects/{projectId}/train"
- قم مرة أخرى بإدراج مفتاح وعنوان URL نقطة النهاية الخاصين بك.
- استبدل
{projectId} بمعرف مشروعك الخاص. - استبدال
{tagArray} بمعرف علامة. - ثم، قم بملء نص الطلب الأساسي بالبيانات الثنائية للصور التي تريد وضع علامة عليها.
- إذا رغبت يمكنك استخدم معلمات URL الأخرى. راجع واجهة برمجة تطبيقات مشروع التدريب Train Project للحصول على خيارات.
تلميح
التدريب باستخدام علامات محددة
اختيارياً، يمكنك التدريب على مجموعة فرعية فقط من العلامات المطبقة. قد ترغب في القيام بذلك إذا لم تكن قد طبقت ما يكفي من علامات معينة حتى الآن، ولكن لديك ما يكفي من العلامات الأخرى. أضف محتوى JSON الاختياري إلى النص الأساسي لطلبك. تعبئة صفيف "selectedTags" مع معرفات العلامات التي تريد استخدامها.
{
"selectedTags": [
"00000000-0000-0000-0000-000000000000"
]
}
تحتوي استجابة JSON على معلومات حول المشروع الذي تم تدريبه، بما في ذلك معرف التكرار ( "id" ). حفظ هذه القيمة للخطوة التالية.
{
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"status": "string",
"created": "string",
"lastModified": "string",
"trainedAt": "string",
"projectId": "00000000-0000-0000-0000-000000000000",
"exportable": true,
"exportableTo": [
"CoreML"
],
"domainId": "00000000-0000-0000-0000-000000000000",
"classificationType": "Multiclass",
"trainingType": "Regular",
"reservedBudgetInHours": 0,
"trainingTimeInMinutes": 0,
"publishName": "string",
"originalPublishResourceId": "string"
}
نشر التكرار الحالي
يتيح هذا الأسلوب الاستعلام عن التكرار الحالي للنموذج. يمكنك استخدام اسم النموذج الذي تم إرجاعه كمرجع لإرسال طلبات التنبؤ.
curl -v -X POST -H "Training-key: {subscription key}" "https://{endpoint}/customvision/v3.3/Training/projects/{projectId}/iterations/{iterationId}/publish?publishName={publishName}&predictionId={predictionId}"
- قم مرة أخرى بإدراج مفتاح وعنوان URL نقطة النهاية الخاصين بك.
- استبدل
{projectId} بمعرف مشروعك الخاص. - استبدال
{iterationId} بالمعرف الذي تم إرجاعه في الخطوة السابقة. - استبدل
{publishedName} بالاسم الذي تريد تعيينه لنموذج التنبؤ الخاص بك. - استبدل
{predictionId} معرف مورد التنبؤ الخاص بك. يمكنك العثور على معرف مورد التنبؤ في علامة التبويب Properties للمورد في مدخل Azure، المدرجة باسم Resource ID. - إذا رغبت يمكنك استخدم معلمات URL الأخرى. راجع واجهة برمجة تطبيقاتنشر التكرار.
اختبار نقطة نهاية التنبؤ
وأخيرًا، استخدم هذا الأمر لاختبار النموذج المدرب الخاص بك عن طريق تحميل صورة جديدة عليه لتصنيفها مع العلامات. يمكنك استخدام الصورة في مجلد "الاختبار" من الملفات الخاصة بالعينة التي قمت بتحميلها في وقت سابق.
curl -v -X POST -H "Training-key: {subscription key}" "https://{endpoint}/customvision/v3.3/Training/projects/{projectId}/iterations/{iterationId}/publish?publishName={publishName}&predictionId={predictionId}"
- قم مرة أخرى بإدراج مفتاح وعنوان URL نقطة النهاية الخاصين بك.
- استبدل
{projectId} بمعرف مشروعك الخاص. - استبدل
{publishedName} بالاسم الذي استخدمته في الخطوة السابقة. - قم بإضافة البيانات الثنائية للصورة المحلية إلى نص الطلب الأساسي.
- إذا رغبت يمكنك استخدم معلمات URL الأخرى. راجع واجهة برمجة تطبيقاتتصنيف الصور.
استجابة JSON التي تم إرجاعها سوف تقلل كل من العلامات التي طبقها النموذج على صورتك، جنبا إلى جنب مع حساب الاحتمالات لكل علامة.
{
"id": "00000000-0000-0000-0000-000000000000",
"project": "00000000-0000-0000-0000-000000000000",
"iteration": "00000000-0000-0000-0000-000000000000",
"created": "string",
"predictions": [
{
"probability": 0.0,
"tagId": "00000000-0000-0000-0000-000000000000",
"tagName": "string",
"boundingBox": {
"left": 0.0,
"top": 0.0,
"width": 0.0,
"height": 0.0
},
"tagType": "Regular"
}
]
}
إذا كنت ترغب في تنفيذ مشروع تصنيف الصور الخاص بك (أو تجربة مشروع الكشف عن الكائنات بدلاً من ذلك)، فقد ترغب في حذف مشروع تعريف الشجرة من هذا المثال. يسمح الاشتراك المجاني بمشروعي Custom Vision.
على موقع ويب Custom Vision، انتقل إلى Projects وحدِّد سلة المهملات ضمن My New Project.

الخطوات التالية
أنت الآن قد قمت بكل خطوة من خطوات عملية تصنيف الصور باستخدام واجهة برمجة تطبيقات REST. تقوم هذه العينة بتنفيذ تكرار تدريب واحد، ولكن غالبًا ما ستحتاج إلى تدريب واختبار النموذج الخاص بك عدة مرات من أجل جعله أكثر دقة.