You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
IoT-For-Beginners/translations/no/4-manufacturing/lessons/2-check-fruit-from-device/single-board-computer-class...

5.1 KiB

Klassifiser et bilde - Virtuell IoT-maskinvare og Raspberry Pi

I denne delen av leksjonen skal du sende bildet som kameraet har tatt til Custom Vision-tjenesten for å klassifisere det.

Send bilder til Custom Vision

Custom Vision-tjenesten har et Python SDK som du kan bruke til å klassifisere bilder.

Oppgave - send bilder til Custom Vision

  1. Åpne mappen fruit-quality-detector i VS Code. Hvis du bruker en virtuell IoT-enhet, sørg for at det virtuelle miljøet kjører i terminalen.

  2. Python SDK-en for å sende bilder til Custom Vision er tilgjengelig som en Pip-pakke. Installer den med følgende kommando:

    pip3 install azure-cognitiveservices-vision-customvision
    
  3. Legg til følgende import-setninger øverst i filen app.py:

    from msrest.authentication import ApiKeyCredentials
    from azure.cognitiveservices.vision.customvision.prediction import CustomVisionPredictionClient
    

    Dette importerer noen moduler fra Custom Vision-bibliotekene, én for å autentisere med prediksjonsnøkkelen, og én for å tilby en prediksjonsklientklasse som kan kalle Custom Vision.

  4. Legg til følgende kode på slutten av filen:

    prediction_url = '<prediction_url>'
    prediction_key = '<prediction key>'
    

    Erstatt <prediction_url> med URL-en du kopierte fra Prediction URL-dialogen tidligere i denne leksjonen. Erstatt <prediction key> med prediksjonsnøkkelen du kopierte fra samme dialog.

  5. Prediksjons-URL-en som ble gitt av Prediction URL-dialogen er designet for å brukes når du kaller REST-endepunktet direkte. Python SDK-en bruker deler av URL-en på forskjellige steder. Legg til følgende kode for å dele opp denne URL-en i de nødvendige delene:

    parts = prediction_url.split('/')
    endpoint = 'https://' + parts[2]
    project_id = parts[6]
    iteration_name = parts[9]
    

    Dette deler opp URL-en og trekker ut endepunktet https://<location>.api.cognitive.microsoft.com, prosjekt-ID-en og navnet på den publiserte iterasjonen.

  6. Opprett et prediktorobjekt for å utføre prediksjonen med følgende kode:

    prediction_credentials = ApiKeyCredentials(in_headers={"Prediction-key": prediction_key})
    predictor = CustomVisionPredictionClient(endpoint, prediction_credentials)
    

    prediction_credentials pakker inn prediksjonsnøkkelen. Disse brukes deretter til å opprette et prediksjonsklientobjekt som peker på endepunktet.

  7. Send bildet til Custom Vision ved hjelp av følgende kode:

    image.seek(0)
    results = predictor.classify_image(project_id, iteration_name, image)
    

    Dette spoler bildet tilbake til starten, og sender det deretter til prediksjonsklienten.

  8. Til slutt, vis resultatene med følgende kode:

    for prediction in results.predictions:
        print(f'{prediction.tag_name}:\t{prediction.probability * 100:.2f}%')
    

    Dette vil gå gjennom alle prediksjonene som er returnert og vise dem i terminalen. Sannsynlighetene som returneres er flyttall fra 0-1, der 0 er 0 % sjanse for å matche taggen, og 1 er 100 % sjanse.

    💁 Bildeklassifiserere vil returnere prosentene for alle tagger som har blitt brukt. Hver tag vil ha en sannsynlighet for at bildet matcher den taggen.

  9. Kjør koden din, med kameraet rettet mot noe frukt, et passende bildesett, eller frukt synlig på webkameraet ditt hvis du bruker virtuell IoT-maskinvare. Du vil se utdataene i konsollen:

    (.venv) ➜  fruit-quality-detector python app.py
    ripe:   56.84%
    unripe: 43.16%
    

    Du vil kunne se bildet som ble tatt, og disse verdiene i Predictions-fanen i Custom Vision.

    En banan i Custom Vision forutsagt som moden med 56,8 % og umoden med 43,1 %

💁 Du finner denne koden i mappen code-classify/pi eller code-classify/virtual-iot-device.

😀 Programmet ditt for å klassifisere fruktkvalitet var en suksess!


Ansvarsfraskrivelse:
Dette dokumentet er oversatt ved hjelp av AI-oversettelsestjenesten Co-op Translator. Selv om vi streber etter nøyaktighet, vær oppmerksom på at automatiserte oversettelser kan inneholde feil eller unøyaktigheter. Det originale dokumentet på sitt opprinnelige språk bør anses som den autoritative kilden. For kritisk informasjon anbefales profesjonell menneskelig oversettelse. Vi er ikke ansvarlige for misforståelser eller feiltolkninger som oppstår ved bruk av denne oversettelsen.