Aspose.Imaging Cloud 20.5-ის გამოშვებით, მოხარულნი ვართ გამოვაცხადოთ სურათებში ობიექტების ამოცნობის ფუნქციის შესახებ. ეს საშუალებას აძლევს მომხმარებლებს აღმოაჩინონ ობიექტების საზღვრები შეყვანილ სურათზე მათი ეტიკეტებისა და ალბათობების საფუძველზე. მიმდინარე იმპლემენტაცია მხარს უჭერს ერთი გასროლის დეტექტორის მეთოდს ობიექტების ამოცნობის მიზნით, სადაც მოდელი გაწვრთნილია COCO 2017 მონაცემთა ნაკრების გამოყენებით. SSD მიდგომა ანაწილებს შემოსაზღვრული ყუთების გამომავალ სივრცეს ნაგულისხმევი ყუთების კომპლექტში სხვადასხვა ასპექტის თანაფარდობით და მასშტაბებით ფუნქციების რუქის მდებარეობის მიხედვით.

Aspose.Imaging Cloud ასრულებს ობიექტების ამოცნობას შემდეგი 4 მეთოდის საფუძველზე:

  1. აღმოაჩინე ობიექტები არსებულ სურათზე და დააბრუნე შედეგები JSON ობიექტის სახით
  2. აღმოაჩინე ობიექტები არსებულ სურათზე და დააბრუნე შედეგები გამოსახულების სახით
  3. ატვირთეთ სურათი, აღმოაჩინეთ მასზე არსებული ობიექტები და დააბრუნეთ შედეგები JSON ობიექტის სახით
  4. ატვირთეთ სურათი, აღმოაჩინეთ მასზე არსებული ობიექტები და დააბრუნეთ შედეგები გამოსახულების სახით

ამ განყოფილებაში ჩვენ ვაპირებთ უფრო დეტალურად განვიხილოთ შემდეგი სექციები

აღმოაჩინე ობიექტის საზღვრები

ეს მიდგომა აღმოაჩენს ობიექტებს არსებულ სურათზე და აბრუნებს შედეგს JSON ობიექტის სახით.

მოითხოვეთ შეკითხვის პარამეტრები:

  • სახელი (სტრიქონი, საჭირო): სურათის სახელი. ამჟამად ჩვენ მხარს ვუჭერთ გამოსახულების 3 ფორმატს: BMP, JPEG და JPEG 2000.
  • მეთოდი (სტრიქონი, სურვილისამებრ, ნაგულისხმევი “ssd”): ობიექტის გამოვლენის მეთოდი.
  • ბარიერი (რიცხვი, სურვილისამებრ, [0 - 100], ნაგულისხმევი 50): აღმოჩენილი ობიექტების მინიმალური ალბათობა პროცენტებში, რომელიც ჩაირთვება შედეგში.
  • includeLabel (ლოგიკური, არასავალდებულო, ნაგულისხმევი false): უნდა ჩაერთოს თუ არა აღმოჩენილი ობიექტის ეტიკეტები პასუხში.
  • includeScore (ლოგიკური, არასავალდებულო, ნაგულისხმევი false): ჩაერთოს თუ არა გამოვლენილი ობიექტის ალბათობა პასუხში.
  • საქაღალდე (სტრიქონი, სურვილისამებრ): საქაღალდე.
  • შენახვის (სტრიქონი, სურვილისამებრ): შენახვა.

ობიექტის ამოცნობა cURL ბრძანების გამოყენებით

Aspose.Imaging Cloud-ზე წვდომა ასევე შესაძლებელია cURL ბრძანებების გამოყენებით. შემდეგი ბრძანება გვიჩვენებს, თუ როგორ შეიძლება cURL ბრძანების გამოყენება ობიექტის გამოსავლენად და JSON ობიექტის სახით პასუხის მისაღებად.

ჩვენ ვიყენებთ შემდეგ სურათს ობიექტის აღმოსაჩენად.

კატის სურათის ნიმუში

სურათი 1: - წყაროს სურათი

curl "https://api.aspose.cloud/v3.0/imaging/ai/objectdetection/cat-pet-animal-domestic-104827.jpeg/bounds?method=ssd&threshold=50&includeLabel=true&includeScore=true" \
-X GET \
-H "accept: application/json" \
-H "authorization: Bearer <jwt token>"

მოითხოვეთ URL

https://api.aspose.cloud/v3.0/imaging/ai/objectdetection/cat-pet-animal-domestic-104827.jpeg/bounds?method=ssd&threshold=50&includeLabel=true&includeScore=true

საპასუხო ორგანო

{
  "detectedObjects": [
    {
      "label": "cat",
      "score": 0.9450986,
      "bounds": {
        "x": 43,
        "y": 4,
        "width": 401,
        "height": 323
      }
    }
  ]
}

რეაგირების სქემა

{
    "type": "object",
    "properties": {
        "detectedObjects": {
            "type": "array",
            "items": [
                {
                    "type": "object",
                    "properties": {
                        "score": {
                            "type": "number"
                        },
                        "label": {
                            "type": "string"
                        },
                        "bounds": {
                            "type": "object",
                            "properties": {
                                "x": {
                                    "type": "number"
                                },
                                "y": {
                                    "type": "number"
                                },
                                "width": {
                                    "type": "number"
                                },
                                "height": {
                                    "type": "number"
                                }
                            },
                            "required": [
                                "x",
                                "y",
                                "width",
                                "height"
                            ]
                        }
                    },
                    "required": [
                        "score",
                        "label",
                        "bounds"
                    ]
                }
            ]
        }
    },
    "required": [
        "detectedObjects"
    ]
}

ობიექტების ამოცნობა სურათებში C#-ის გამოყენებით

გთხოვთ, გამოიყენოთ შემდეგი კოდის ფრაგმენტი სურათებში ობიექტების ამოცნობისთვის C# კოდის ფრაგმენტის გამოყენებით.

C# .NET კოდის ნაწყვეტი

///<summary>
/// ამოიცანი ობიექტები სურათზე ღრუბლის საცავიდან.
///</summary>
public static void DetectObjectsImageFromStorage()
{
    string MyAppKey = "xxxxx";   // Get AppKey and AppSID from https://dashboard.aspose.cloud/
    string MyAppSid = "xxxxx";   // Get AppKey and AppSID from https://dashboard.aspose.cloud/

    string method = "ssd";
    int threshold = 50;
    bool includeLabel = true;
    bool includeScore = true;
    string folder = "";    // Input file is saved at default folder in the storage
    string storage = null; // We are using default Cloud Storage

    // Initialize Aspose.Imaging Cloud ობიექტი
    ImagingApi imagingApi = new ImagingApi(appKey: MyAppKey, appSid: MyAppSid, debug: false);
    imagingApi.UploadFile(new Aspose.Imaging.Cloud.Sdk.Model.Requests.UploadFileRequest("dog-and-cat-cover.jpg", File.Open("dog-and-cat-cover.jpg", FileMode.Open), null));

    var request = new Aspose.Imaging.Cloud.Sdk.Model.Requests.GetObjectBoundsRequest("dog-and-cat-cover.jpg", method, threshold, includeLabel, includeScore, folder, storage);
    Console.WriteLine($"Call ObjectBoundsRequest with params: method:{method}, threshold:{threshold}, include label: {includeLabel}, includeScore: {includeScore}");
    Aspose.Imaging.Cloud.Sdk.Model.DetectedObjectList detectedObjectList = imagingApi.GetObjectBounds(request);
    // მიიღეთ ობიექტების რაოდენობა გამოსახულების ფაილში
    Console.WriteLine("Objects detected: " + detectedObjectList.DetectedObjects.Count);
}

აღმოაჩინე ობიექტის საზღვრები და დააბრუნე როგორც გამოსახულება

ატვირთეთ სურათი, აღმოაჩინეთ ობიექტები, დახაზეთ საზღვრები მათ გარშემო და აბრუნებს შედეგს გამოსახულების სახით.

მოითხოვეთ შეკითხვის პარამეტრები:

  • სახელი (სტრიქონი, საჭირო): სურათის სახელი. ამჟამად მხარდაჭერილია გამოსახულების 3 ფორმატი: bmp, jpg, jpeg და jpeg2000.
  • მეთოდი (სტრიქონი, სურვილისამებრ, [“ssd”], ნაგულისხმევი “ssd”): ობიექტის გამოვლენის მეთოდი.
  • ბარიერი (რიცხვი, სურვილისამებრ, [0 - 100], ნაგულისხმევი 50): მინიმალური ობიექტების ალბათობა პროცენტებში, რომლებიც ჩაირთვება შედეგში.
  • includeLabel (ლოგიკური, არასავალდებულო, ნაგულისხმევი false): უნდა ჩაერთოს თუ არა აღმოჩენილი ობიექტის ეტიკეტები პასუხში.
  • includeScore (ლოგიკური, არასავალდებულო, ნაგულისხმევი false): ჩაერთოს თუ არა გამოვლენილი ობიექტის ალბათობა პასუხში.
  • ფერი (სტრიქონი, სურვილისამებრ): აღმოჩენილი ობიექტის საზღვრებისა და ინფორმაციის მორგებული ფერი. თუ უდრის null-ს, სხვადასხვა ეტიკეტის ობიექტებს აქვთ სხვადასხვა ფერის საზღვრები.
  • საქაღალდე (სტრიქონი, სურვილისამებრ): საქაღალდე.
  • შენახვის (სტრიქონი, სურვილისამებრ): შენახვა.

cURL ბრძანების გამოყენება ობიექტების დასადგენად

Aspose.Imaging Cloud-ზე წვდომა ასევე შესაძლებელია cURL ბრძანებების საშუალებით. თუმცა, როგორც წინაპირობა, თქვენ ჯერ უნდა შექმნათ JWT წვდომის ნიშანი თქვენი კლიენტის სერთიფიკატების საფუძველზე. გთხოვთ შეასრულოთ შემდეგი ბრძანება JWT ტოკენის გენერირებისთვის.

curl -v "https://api.aspose.cloud/connect/token" \
-X POST \
-d "grant_type=client_credentials&client_id=4ccf1790-accc-41e9-8d18-a78dbb2ed1aa&client_secret=caac6e3d4a4724b2feb53f4e460eade3" \
-H "Content-Type: application/x-www-form-urlencoded" \
-H "Accept: application/json"

ახლა შეასრულეთ შემდეგი ბრძანება ობიექტების საზღვრების აღმოსაჩენად და გამოსახულების სახით დასაბრუნებლად.

curl -v "https://api.aspose.cloud/v3.0/imaging/ai/objectdetection/dog-and-cat-cover.jpg/visualbounds?method=ssd&threshold=50&includeLabel=false&includeScore=false&color=Red" \
-X GET \
-H "accept: application/json" \
-H "authorization: Bearer <JWT Token>"

მოითხოვეთ URL

https://api.aspose.cloud/v3.0/imaging/ai/objectdetection/dog-and-cat-cover.jpg/visualbounds?method=ssd&threshold=50&includeLabel=false&includeScore=false&color=Red

ზემოხსენებულ მოთხოვნაში, შენიშვნა წითელი მითითებულია, როგორც ხაზგასმული ფერი.

C#.NET კოდის ნაწყვეტი

კოდის შემდეგი ფრაგმენტი აჩვენებს ნაბიჯებს სურათის ფაილის ჩატვირთვისთვის, რომელიც შეიცავს ორ ობიექტს (ძაღლი და კატა).ორივე ობიექტი იდენტიფიცირებულია Aspose.Imaging Cloud API-ს გამოყენებით. შედეგად მიღებული სურათები მონიშნული ობიექტებით ინახება სისტემის დისკზე.

///<summary>
/// აღმოჩენილი ობიექტის ვიზუალიზაცია სურათზე, რომელიც გადაცემულია მოთხოვნის ნაკადში.
///</summary>
public static void VisualizeObjectsImageFromRequestBody()
{
    Console.WriteLine("Detect objects on an image. Image data is passed in a request stream");

    string MyAppKey = "xxxxx";   // Get AppKey and AppSID from https://dashboard.aspose.cloud/
    string MyAppSid = "xxxxx";   // Get AppKey and AppSID from https://dashboard.aspose.cloud/
    // Initialize Aspose.Imaging Cloud ობიექტი
    ImagingApi imagingApi = new ImagingApi(appKey: MyAppKey, appSid: MyAppSid, debug: false);
    using (FileStream inputImageStream = File.OpenRead("dog-and-cat-cover.jpg"))
    {
        string method = "ssd";
        int threshold = 50;
        bool includeLabel = true;
        bool includeScore = true;
        string color = null;
        string outPath = null;
        string storage = null; // We are using default Cloud Storage

        var request = new Aspose.Imaging.Cloud.Sdk.Model.Requests.CreateVisualObjectBoundsRequest(inputImageStream, method, threshold, includeLabel, includeScore, color, outPath, storage);

        Console.WriteLine($"Call CreateVisualObjectBoundsRequest with params: method:{method}, threshold:{threshold}, include label: {includeLabel}, include score: {includeScore}");

        using (Stream updatedImage = imagingApi.CreateVisualObjectBounds(request))
        {
            // შეინახეთ განახლებული სურათის ნაკადი სისტემის მდებარეობაზე
            System.Drawing.Image img = System.Drawing.Image.FromStream(updatedImage);
            img.Save("/Users/Aspose/Desktop/myImage.Jpeg", System.Drawing.Imaging.ImageFormat.Jpeg);
        }
    }
    Console.WriteLine();
}
კატის და ძაღლის ყდის სურათი

სურათი 2: - შეიყვანეთ სურათი კატასთან და ძაღლთან ერთად

დამუშავებული სურათი, რომელიც ხაზს უსვამს იდენტიფიცირებულ ობიექტებს

სურათი 3: - დამუშავებული სურათი, რომელიც ხაზს უსვამს იდენტიფიცირებულ ობიექტებს

სურათების ძიების შესახებ დამატებითი ინფორმაციისთვის ეწვიეთ Reverse Image Search.

დასკვნა

ამ სტატიაში ჩვენ ვისწავლეთ Aspose.Imaging Cloud-ის შესაძლებლობები სურათებში ობიექტების ამოცნობისთვის. სურათებში ობიექტების იდენტიფიცირებისთვის, შეგიძლიათ გამოიყენოთ კოდის ნაწყვეტი ან გამოიყენოთ cURL ბრძანებები. გარდა ამისა, ჩვენი მომხმარებლების გასაადვილებლად, ჩვენ შევქმენით პროგრამირების ენის სპეციფიკური SDK-ები და ზემოხსენებულ სტატიაში შევისწავლეთ Aspose.Imaging Cloud SDK-ის ფუნქციები .NET-ისთვის ობიექტების ამოცნობისთვის. SDK-ის სრული წყაროს კოდი ხელმისაწვდომია ჩამოსატვირთად GitHub-დან.

დაკავშირებული სტატიები

ჩვენ გირჩევთ ეწვიოთ შემდეგ ბმულებს მეტი ინფორმაციისთვის: