Freigeben über


Lernprogramm: Azure Vision in Foundry Tools

Azure Vision in Foundry Tools ist ein Microsoft Foundry-Tool , mit dem Sie Bilder verarbeiten und Informationen basierend auf den visuellen Features zurückgeben können. In diesem Lernprogramm erfahren Sie, wie Sie Vision verwenden, um Bilder in Azure Synapse Analytics zu analysieren.

Dieses Tutorial veranschaulicht die Verwendung der Textanalyse mit SynapseML für Folgendes:

  • Extrahieren visueller Merkmale aus dem Bildinhalt
  • Erkennen von Zeichen in Bildern (optische Zeichenerkennung)
  • Analysieren von Bildinhalten und Generieren von Miniaturansichten
  • Erkennen und Identifizieren domänenspezifischer Inhalte in einem Bild
  • Generieren von Tags im Zusammenhang mit einem Bild
  • Generieren einer Beschreibung eines ganzen Bilds in von Menschen lesbarer Sprache

Bild analysieren

Extrahiert eine große Menge visueller Merkmale basierend auf dem Bildinhalt, wie Objekte, Gesichter, explizite Inhalte und automatisch generierte Textbeschreibungen.

Beispieleingabe

Foto eines Hunds.

# 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"))

Erwartete Ergebnisse

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

Optische Zeichenerkennung (Optical Character Recognition, OCR)

Dieser Vorgang extrahiert gedruckten und handschriftlichen Text, Ziffern und Währungssymbole aus Bildern, z. B. Fotos von Straßenschildern und Produkten, sowie aus Dokumenten wie u. a. Rechnungen, Finanzberichten und Artikeln. Die API ist für das Extrahieren von Text aus textlastigen Bildern und mehrseitigen PDF-Dokumenten mit gemischten Sprachen optimiert. Sie unterstützt sowohl die Erkennung von gedrucktem als auch von handschriftlichem Text im selben Bild oder Dokument.

Beispieleingabe

Foto eines Schilds mit Text.

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))

Erwartete Ergebnisse

Screenshot der erwarteten Ergebnisse der OCR-Beispielanalyse.

Miniaturansichten generieren

Analysieren Sie den Inhalt eines Bilds, um eine geeignete Miniaturansicht für das Bild zu generieren. Der Vision-Dienst generiert zunächst eine hochwertige Miniaturansicht und analysiert dann die Objekte im Bild, um den relevanten Bereich zu bestimmen. Anschließend schneidet Vision das Bild auf den relevanten Bereich zu. Das Seitenverhältnis der generierten Miniaturansicht kann sich bei Bedarf vom Seitenverhältnis des ursprünglichen Bilds unterscheiden.

Beispieleingabe

Foto des Gesichts von 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 + "'>")

Erwartete Ergebnisse

Miniaturbild von Satya Nadella.

Bild markieren

Dieser Vorgang generiert eine Liste von Wörtern bzw. Tags, die für den Inhalt des angegebenen Bilds relevant sind. Tags werden auf Grundlage von Tausenden erkennbarer Objekte, Lebewesen, Landschaften oder Handlungen in Bildern zurückgegeben. Tags können Hinweise enthalten, um Mehrdeutigkeiten zu vermeiden oder Kontext bereitzustellen. Das Tag „Ascomycet“ kann beispielsweise vom Hinweis „Pilz“ begleitet werden.

Lassen Sie uns weiterhin das Bild von Satya als Beispiel verwenden.

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))

Erwartetes Ergebnis

Screenshot der erwarteten Ausgabe der Tags, die anhand des Bilds von Satya Nadella generiert wurden

Bild beschreiben

Generieren Sie eine Beschreibung eines gesamten Bilds mit vollständigen Sätzen in lesbarer Sprache. Die Algorithmen des Vision-Diensts generieren verschiedene Beschreibungen auf Grundlage der im Bild erkannten Objekte. Die Beschreibungen werden jeweils ausgewertet, und eine Zuverlässigkeitsbewertung wird generiert. Dann wird eine Liste in der Reihenfolge von höchster Zuverlässigkeitsbewertung zu niedrigster zurückgegeben.

Lassen Sie uns weiterhin das Bild von Satya als Beispiel verwenden.

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))

Erwartetes Ergebnis

Screenshot der erwarteten Ausgabe der Beschreibung des Bilds von Satya Nadella

Domänenspezifische Inhalte erkennen

Verwenden Sie Domänenmodelle, um domänenspezifische Inhalte (etwa berühmte Personen und Orientierungspunkte) in einem Bild zu erkennen. Wenn ein Bild also beispielsweise Personen enthält, kann Vision auf ein Domänenmodell für berühmte Personen zurückgreifen und so ermitteln, ob es sich bei den Personen auf dem Bild um berühmte Personen handelt.

Lassen Sie uns weiterhin das Bild von Satya als Beispiel verwenden.


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))

Erwartetes Ergebnis

Screenshot der erwarteten Ausgabe der Domäneninhaltsanalyse des Bilds von Leonardo DiCaprio.

Bereinigen von Ressourcen

Beenden Sie alle verbundenen Sitzungen (Notebooks), um sicherzustellen, dass die Spark-Instanz heruntergefahren wird. Der Pool wird heruntergefahren, wenn die im Apache Spark-Pool angegebene Leerlaufzeit erreicht wird. Sie können auch auf der Statusleiste am oberen Rand des Notebooks die Option Sitzung beenden auswählen.

Screenshot der Schaltfläche „Sitzung beenden“ auf der Statusleiste

Nächste Schritte