मैं इसे प्रशिक्षित करने के बाद अपने कस्टम विज़न इटरेशन को प्रकाशित करने का प्रयास कर रहा हूं। लेकिन मुझे हमेशा "खराब अनुरोध" त्रुटि मिलती है।

मैं कोड की निम्न पंक्ति के साथ कोशिश कर रहा हूँ:

trainingApi.PublishIteration(ProjectID, iteration.Id, "Model", predictionResourceId);

इसे मेरा इटरेशन प्रकाशित करना चाहिए लेकिन मुझे बस एक त्रुटि मिलती है।

मैंने अपनी सभी आईडी की दोबारा जांच की लेकिन सब कुछ ठीक लग रहा है। क्या मॉडल का नाम कुछ विशिष्ट है (निचले अक्षर या कुछ और से शुरू करें)?

संपादित करें:

मैंने इसे अब पोस्टमैन में एक पोस्ट अनुरोध के साथ करने की कोशिश की, लेकिन अब मुझे यह प्राप्त होता है:

{
    "code": "BadRequestInvalidPublishTarget",
    "message": "Invalid prediction resource id"
}

लेकिन मैंने अपनी भविष्यवाणी संसाधन आईडी की दोबारा जांच की और यह सही है।

2 संपादित करें:

मैं पतला हूं मैंने गलत चीज को POST अनुरोध में भविष्यवाणी में डाल दिया है, मैंने अभी एक आईडी डाली है लेकिन मुझे लगता है कि यह माइक्रोसॉफ्ट द्वारा वर्णित/सदस्यता/... भाग होना चाहिए था। समस्या अब है:

{
    "code": "BadRequestInvalidPublishTarget",
    "message": "Invalid prediction id, please pass a prediction resource id."
}

मेरे लिए इसका मतलब है कि यह एक भविष्यवाणी संसाधन आईडी प्राप्त नहीं करता है, लेकिन मैं खो गया हूं इसलिए मैं विचारों से बाहर हूं कि समस्या क्या हो सकती है।

3 संपादित करें:

मैं अपना पोस्ट अनुरोध जोड़ना भूल गया:

https://xxx.cognitiveservices.azure.com/customvision/v3.0/training/projects/xxx/
iterations/xxx/publish?publishName=Model&predictionId=/subscriptions/xxx/
resourceGroups/CustomVision/providers/Microsoft.CognitiveServices/accounts/xxx
2
Felix Niedermann 14 जिंदा 2021, 10:31

1 उत्तर

सबसे बढ़िया उत्तर

POST अनुरोध का उपयोग करके प्रकाशित करें

यदि आप यह सुनिश्चित करना चाहते हैं कि आपके पास सही सिंटैक्स है, तो आप उन्हीं चरणों को करके कस्टम विज़न पोर्टल का उपयोग करके जाँच कर सकते हैं।

उदाहरण के लिए जब मैं किसी प्रोजेक्ट की पुनरावृत्ति प्रकाशित करने का प्रयास करता हूं, तो मैं कंसोल में निम्न कॉल देख सकता हूं:

https://westeurope.api.cognitive.microsoft.com/customvision/v3.3/Training/projects/ID_OF_MY_PROJECT/iterations/ID_OF_MY_ITERATION/publish?predictionId=%2Fsubscriptions%2FID_OF_MY_MY_MY_MY_ITERATION%2FID_OF_MY_MY_MY_Fsubscriptions%2FID_OF_MY_MYURE_SUBSCRIPTION%2F %2FNAME_OF_MY_CUSTOM_VISION_PREDICTION_RESOURCE&publishName=NAME_OF_MY_ITERATION

डेमो: कस्टम विज़न पेज से नमूना

तो हाँ, "प्रकाशन आईडी" मान आपके द्वारा बताए गए जैसा दिख रहा है लेकिन आपको इस स्ट्रिंग के मान को एन्कोड करना होगा।

तो इसे बदलें:

predictionId=/subscriptions/xxx/
resourceGroups/CustomVision/providers/Microsoft.CognitiveServices/accounts/xxx

प्रति

predictionId=%2Fsubscriptions%2Fxxx%2F
resourceGroups%2FCustomVision%2Fproviders%2FMicrosoft.CognitiveServices%2Faccounts%2Fxxx

आपके कॉल में।

और भविष्यवाणी संसाधन का उपयोग करने के लिए सावधान रहें, प्रशिक्षण संसाधन का नहीं।


सी # का उपयोग करके प्रकाशित करें

यहां C# और Nuget पर होस्ट किए गए आधिकारिक कस्टम विज़न पैकेज का उपयोग करते हुए एक डेमो दिया गया है (यहां)

using System;
using Microsoft.Azure.CognitiveServices.Vision.CustomVision.Training;

namespace so65714960
{
    class Program
    {
        private static CustomVisionTrainingClient _trainingClient;

        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");

            _trainingClient = new CustomVisionTrainingClient(new ApiKeyServiceClientCredentials("PUT_YOUR_TRAINING_KEY_HERE"));
            // I'm specifying my endpoint here as I'm working on West Europe region
            _trainingClient.Endpoint = "https://westeurope.api.cognitive.microsoft.com/";

            var projectId = new Guid("4b...a5"); // Put your Project Id here
            var iterationId = new Guid("9d...e"); // Put your iteration Id here

            // Get iteration information
            var targetIteration = _trainingClient.GetIteration(projectId, iterationId);
            Console.WriteLine($"Iteration publish resource Id: '{targetIteration.OriginalPublishResourceId}'");

            // If originalPublishResourceId is not null, it is already published
            // For this demo purpose, we unpublish first to publish again after if it is already published
            if (!string.IsNullOrWhiteSpace(targetIteration.OriginalPublishResourceId))
            {
                _trainingClient.UnpublishIteration(projectId, iterationId);

                // Force status refresh
                targetIteration = _trainingClient.GetIteration(projectId, iterationId);
                Console.WriteLine($"Iteration publish resource Id after unpublish: '{targetIteration.OriginalPublishResourceId}'");
            }

            // Publish
            var publicationResourceId = "/subscriptions/7c...e8/resourceGroups/Cognitive_Demo/providers/Microsoft.CognitiveServices/accounts/NRO-Cognitive-CustomVision-WestEurope-Prediction-S0";
            var publication = _trainingClient.PublishIteration(projectId, iterationId, "Publication1", publicationResourceId);
            
            // Force status refresh
            targetIteration = _trainingClient.GetIteration(projectId, iterationId);
            Console.WriteLine($"Iteration publish resource Id after publish: '{targetIteration.OriginalPublishResourceId}'");
        }
    }
}

मेरे उपयोग किए गए Azure संसाधन देखें:

Azure Prediction resource

1
Nicolas R 18 जिंदा 2021, 13:27
मैंने इसे "/" को "% 2F" से बदलने की कोशिश की, लेकिन यह काम नहीं किया, साइट को वही त्रुटि मिलेगी। क्या आपका मतलब है "कंसोल में कॉल करें" के साथ एक कस्टम विजन कंसोल है जहां आप पेज पर निष्पादित कमांड देखते हैं या आप कंसोल के अंदर सिर्फ कमांड निष्पादित कर रहे हैं?
 – 
Felix Niedermann
18 जिंदा 2021, 10:44
मैं आपके नेविगेटर डेवलपर टूल के बारे में बात कर रहा था, जहां आप नेटवर्क कॉल देख सकते हैं। मेरे उत्तर में टाइपो के लिए खेद है: भविष्यवाणी आईडी फ़ील्ड को भविष्यवाणी संसाधन के नाम पर इंगित करना चाहिए, प्रशिक्षण नहीं!
 – 
Nicolas R
18 जिंदा 2021, 12:29
माफ़ करें, मुझे इस सब के बारे में ज़्यादा जानकारी नहीं है। नेविगेटर डेवलपर टूल्स के साथ आपका क्या मतलब है, मैं इसे कहां ढूंढ सकता हूं? मेरा भविष्यवाणी संसाधन समापन बिंदु एक भविष्यवाणी संसाधन है -> xxx-prediciton।
 – 
Felix Niedermann
18 जिंदा 2021, 12:55
मैंने नेविगेटर डेवलपर टूल दिखाने के लिए अपना जवाब संपादित कर लिया है। यह Azure या Cognitive Services से लिंक नहीं है, यह वास्तव में आपका वेब ब्राउज़र डेवलपर टूल है (मैंने जो कैप्चर जोड़ा है उसे देखें)। इसके अतिरिक्त, आपके सटीक अनुरोध और Azure संसाधनों के नामों की जाँच किए बिना अधिक सहायता जोड़ना कठिन होगा...
 – 
Nicolas R
18 जिंदा 2021, 12:58
1
मैंने एक सी # डेमो जोड़ा है जिसे मैंने अपनी तरफ से परीक्षण किया है, यह काम कर रहा है
 – 
Nicolas R
18 जिंदा 2021, 13:28