Esercitazione: Visione di Azure in Strumenti Foundry

Azure Vision nei Foundry Tools è uno strumento Microsoft Foundry che consente di elaborare immagini e restituire informazioni in base alle caratteristiche visive. Questa esercitazione descrive come usare Visione per analizzare le immagini in Azure Synapse Analytics.

Questa esercitazione illustra l'uso dell'analisi del testo con SynapseML per:

  • Estrarre le funzionalità visive dal contenuto dell'immagine
  • Riconoscere i caratteri dalle immagini (OCR)
  • Analizzare il contenuto delle immagini e generare un'anteprima
  • Rilevare e identificare contenuti specifici del dominio in un'immagine
  • Generare tag correlati a un'immagine
  • È possibile generare una descrizione di un'intera immagine in un linguaggio leggibile dall'utente

Analizza immagine

Estrae un set completo di funzionalità visive basate sul contenuto dell'immagine, ad esempio oggetti, visi, contenuto per adulti e descrizioni di testo generate automaticamente.

Input di esempio

Foto di un cane.

# Create a dataframe with the image URLs
df = spark.createDataFrame([
        ("<replace with your file path>/dog.jpg", )
    ], ["image", ])

# Run the Vision service. Analyze Image extracts information from/about the images.
analysis = (AnalyzeImage()
    .setLinkedService(ai_service_name)
    .setVisualFeatures(["Categories","Color","Description","Faces","Objects","Tags"])
    .setOutputCol("analysis_results")
    .setImageUrlCol("image")
    .setErrorCol("error"))

# Show the results of what you wanted to pull out of the images.
display(analysis.transform(df).select("image", "analysis_results.description.tags"))

Risultati previsti

["dog","outdoor","fence","wooden","small","brown","building","sitting","front","bench","standing","table","walking","board","beach","holding","bridge"]

Riconoscimento ottico dei caratteri (OCR)

Estrarre testo stampato, testo scritto a mano, cifre e simboli di valuta da immagini, ad esempio foto di segni stradali e prodotti, nonché da documenti come fatture, bollette, rapporti finanziari, articoli e altro ancora. È ottimizzato per estrarre testo da immagini complesse e documenti PDF a più pagine con lingue miste. Supporta il rilevamento di testo stampato e scritto a mano nella stessa immagine o documento.

Input di esempio

Fotografia di un segno con testo su di esso.

df = spark.createDataFrame([
        ("<replace with your file path>/ocr.jpg", )
    ], ["url", ])

ri = (ReadImage()
    .setLinkedService(ai_service_name)
    .setImageUrlCol("url")
    .setOutputCol("ocr"))

display(ri.transform(df))

Risultati previsti

Screenshot dei risultati previsti dall'analisi OCR di esempio.

Generare anteprime

È possibile analizzare i contenuti di un'immagine per generare un'anteprima appropriata per tale immagine. Il servizio Visione genera prima di tutto un'anteprima di qualità elevata e quindi analizza gli oggetti inclusi nell'immagine per determinare l'area di interesse. Visione ritaglia l’immagine per soddisfare i requisiti dell'area di interesse. L'anteprima generata può essere visualizzata con proporzioni diverse da quelle dell'immagine originale, in base alle esigenze specifiche.

Input di esempio

Fotografia del volto di Satya Nadella.

df = spark.createDataFrame([
        ("<replace with your file path>/satya.jpeg", )
    ], ["url", ])

gt =  (GenerateThumbnails()
    .setLinkedService(ai_service_name)
    .setHeight(50)
    .setWidth(50)
    .setSmartCropping(True)
    .setImageUrlCol("url")
    .setOutputCol("thumbnails"))

thumbnails = gt.transform(df).select("thumbnails").toJSON().first()

import json
img = json.loads(thumbnails)["thumbnails"]

displayHTML("<img src='data:image/jpeg;base64," + img + "'>")

Risultati previsti

Immagine di anteprima di Satya Nadella.

Aggiungi tag a immagine

Genera un elenco di parole o tag rilevanti per il contenuto dell'immagine fornita. I tag vengono restituiti in base a migliaia di oggetti riconoscibili, esseri viventi, paesaggi o azioni presenti nelle immagini. I tag possono contenere hint per evitare ambiguità o fornire contesto, ad esempio il tag "ascomycete" può essere accompagnato dall'hint "fungo".

Continuare a usare l'immagine di Satya come esempio.

df = spark.createDataFrame([
        ("<replace with your file path>/satya.jpeg", )
    ], ["url", ])

ti = (TagImage()
    .setLinkedService(ai_service_name)
    .setImageUrlCol("url")
    .setOutputCol("tags"))

display(ti.transform(df))

Risultato previsto

Screenshot dell'output previsto dei tag generati dall'immagine di Satya Nadella.

Descrivi immagine

È possibile generare una descrizione di un'intera immagine in un linguaggio leggibile dall'utente, con frasi complete. Gli algoritmi del servizio di Visione generano descrizioni diverse in base agli oggetti identificati nell'immagine. Tutte le descrizioni vengono valutate e per ognuna viene generato un punteggio di attendibilità. Viene quindi restituito un elenco dei punteggi di attendibilità in ordine decrescente.

Continuare a usare l'immagine di Satya come esempio.

df = spark.createDataFrame([
        ("<replace with your file path>/satya.jpeg", )
    ], ["url", ])

di = (DescribeImage()
    .setLinkedService(ai_service_name)
    .setMaxCandidates(3)
    .setImageUrlCol("url")
    .setOutputCol("descriptions"))

display(di.transform(df))

Risultato previsto

Screenshot del risultato atteso della descrizione dell'immagine di Satya Nadella.

Riconoscere contenuto specifico di dominio

È possibile usare modelli di dominio per rilevare e identificare contenuti specifici del dominio in un'immagine, ad esempio celebrità e luoghi di interesse. Se ad esempio un'immagine contiene persone, Visione può usare un modello di dominio per le celebrità per determinare se le persone rilevate nell'immagine corrispondono a celebrità note.

Continuare a usare l'immagine di Satya come esempio.


df = spark.createDataFrame([
        ("<replace with your file path>/satya.jpeg", )
    ], ["url", ])

celeb =  (RecognizeDomainSpecificContent()
    .setLinkedService(ai_service_name)
    .setModel("celebrities")
    .setImageUrlCol("url")
    .setOutputCol("celebs"))

display(celeb.transform(df))

Risultato previsto

Screenshot dell'output previsto dall'analisi del contenuto del dominio dell'immagine di Leonardo DiCaprio.

Pulire le risorse

Per assicurarsi che l'istanza di Spark venga arrestata, terminare tutte le sessioni connesse (notebook). Il pool si arresta quando viene raggiunto il tempo di inattività specificato nel pool di Apache Spark. Si può anche selezionare Termina sessione sulla barra di stato nella parte destra superiore del notebook.

Screenshot che mostra il pulsante Arresta sessione sulla barra di stato.

Passaggi successivi