Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Von Bedeutung
Bildbeschreibung ist derzeit in China nicht verfügbar.
Sie können die Bildbeschreibungs-APIs verwenden, um verschiedene Arten von Textbeschreibungen für ein Bild zu generieren.
Api-Details finden Sie in der API-Referenz für KI-Imageerstellungsfeatures.
Details zur Inhaltsmoderation finden Sie unter Inhaltssicherheit mit generativen AI-APIs.
Von Bedeutung
Paketmanifestanforderungen: Um Windows AI-Imageerstellungs-APIs zu verwenden, muss Ihre App als MSIX-Paket mit der systemAIModels in Ihrer Package.appxmanifestApp deklarierten Funktion verpackt werden. Stellen Sie außerdem sicher, dass das Attribut Ihres Manifests MaxVersionTested auf eine aktuelle Windows-Version festgelegt ist (z. B. 10.0.26226.0 oder höher), um die Windows AI-Features richtig zu unterstützen. Die Verwendung älterer Werte kann beim Laden des Modells zu Fehlern "Nicht durch App deklariert" führen.
<Dependencies>
<TargetDeviceFamily Name="Windows.Universal" MinVersion="10.0.17763.0" MaxVersionTested="10.0.26226.0" />
<TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.17763.0" MaxVersionTested="10.0.26226.0" />
</Dependencies>
Beschreibungstypen
Die folgenden Arten von Textbeschreibungen werden unterstützt:
- Kurz – Liefert eine Beschreibung, die für Tabellen und Diagramme geeignet ist.
- Detailliert – Enthält eine lange Beschreibung.
- Diagramm – Stellt eine kurze Beschreibung bereit, die für eine Bildbeschriftung geeignet ist. Der Standardwert, wenn kein Wert angegeben wird.
- Barrierefrei – Bietet eine lange Beschreibung mit Details, die für Benutzer mit Barrierefreiheitsanforderungen vorgesehen sind.
Einschränkungen
Da diese APIs Machine Learning (ML)-Modelle verwenden, können gelegentlich Fehler auftreten, bei denen der Text das Bild nicht richtig beschreibt. Daher wird die Verwendung dieser APIs für Bilder in den folgenden Szenarien nicht empfohlen:
- Wenn Bilder potenziell sensible Inhalte zeigen und durch ungenaue Beschreibungen umstritten sein könnten, wie z. B. Flaggen, Karten, Globen, kulturelle Symbole oder religiöse Symbole.
- Wenn genaue Beschreibungen wichtig sind, z. B. für medizinische Beratung oder Diagnose, rechtliche Inhalte oder Finanzdokumente.
Beispiel für eine Bildbeschreibung
Das folgende Beispiel zeigt, wie Eine Textbeschreibung für ein Bild basierend auf dem angegebenen Beschreibungstyp (optional) und der Ebene der Inhaltsmoderation (optional) abgerufen wird.
Hinweis
Das Bild muss ein ImageBuffer-Objekt sein, da SoftwareBitmap derzeit nicht unterstützt wird (in diesem Beispiel wird veranschaulicht, wie SoftwareBitmap in ImageBuffer konvertiert wird).
Stellen Sie sicher, dass das Image Description-Modell verfügbar ist, indem Sie die GetReadyState-Methode aufrufen und dann darauf warten, dass die EnsureReadyAsync-Methode erfolgreich zurückgegeben wird.
Nachdem das Image Description-Modell verfügbar ist, erstellen Sie ein ImageDescriptionGenerator -Objekt, um darauf zu verweisen.
(Optional) Erstellen Sie ein ContentFilterOptions-Objekt , und geben Sie Ihre bevorzugten Werte an. Wenn Sie sich für die Verwendung von Standardwerten entscheiden, können Sie ein NULL-Objekt übergeben.
Rufen Sie die Bildbeschreibung (LanguageModelResponse.Response) ab, indem Sie die DescribeAsync-Methode aufrufen, die das ursprüngliche Bild angibt, das ImageDescriptionKind (ein optionaler Wert für den bevorzugten Beschreibungstyp) und das ContentFilterOptions-Objekt (optional).
using Microsoft.Graphics.Imaging;
using Microsoft.Windows.Management.Deployment;
using Microsoft.Windows.AI;
using Microsoft.Windows.AI.ContentModeration;
using Windows.Storage.StorageFile;
using Windows.Storage.Streams;
using Windows.Graphics.Imaging;
if (ImageDescriptionGenerator.GetReadyState() == AIFeatureReadyState.NotReady)
{
var result = await ImageDescriptionGenerator.EnsureReadyAsync();
if (result.Status != AIFeatureReadyResultState.Success)
{
throw result.ExtendedError;
}
}
ImageDescriptionGenerator imageDescriptionGenerator = await ImageDescriptionGenerator.CreateAsync();
// Convert already available softwareBitmap to ImageBuffer.
ImageBuffer inputImage = ImageBuffer.CreateCopyFromBitmap(softwareBitmap);
// Create content moderation thresholds object.
ContentFilterOptions filterOptions = new ContentFilterOptions();
filterOptions.PromptMinSeverityLevelToBlock.ViolentContentSeverity = SeverityLevel.Medium;
filterOptions.ResponseMinSeverityLevelToBlock.ViolentContentSeverity = SeverityLevel.Medium;
// Get text description.
LanguageModelResponse languageModelResponse = await imageDescriptionGenerator.DescribeAsync(inputImage, ImageDescriptionScenario.Caption, filterOptions);
string response = languageModelResponse.Response;
#include <winrt/Microsoft.Graphics.Imaging.h>
#include <winrt/Microsoft.Windows.AI.Imaging.h>
#include <winrt/Microsoft.Windows.AI.ContentSafety.h>
#include <winrt/Microsoft.Windows.AI.h>
#include <winrt/Windows.Foundation.h>
#include <winrt/Windows.Graphics.Imaging.h>
#include <winrt/Windows.Storage.Streams.h>
#include <winrt/Windows.Storage.StorageFile.h>
using namespace winrt::Microsoft::Graphics::Imaging;
using namespace winrt::Microsoft::Windows::AI;
using namespace winrt::Microsoft::Windows::AI::ContentSafety;
using namespace winrt::Microsoft::Windows::AI::Imaging;
using namespace winrt::Windows::Foundation;
using namespace winrt::Windows::Graphics::Imaging;
using namespace winrt::Windows::Storage::Streams;
using namespace winrt::Windows::Storage::StorageFile;
if (ImageDescriptionGenerator::GetReadyState() == AIFeatureReadyState::NotReady)
{
auto loadResult = ImageDescriptionGenerator::EnsureReadyAsync().get();
if (loadResult.Status() != AIFeatureReadyResultState::Success)
{
throw winrt::hresult_error(loadResult.ExtendedError());
}
}
ImageDescriptionGenerator imageDescriptionGenerator =
ImageDescriptionGenerator::CreateAsync().get();
// Convert already available softwareBitmap to ImageBuffer.
auto inputBuffer = Microsoft::Graphics::Imaging::ImageBuffer::CreateForSoftwareBitmap(softwareBitmap);
// Create content moderation thresholds object.
ContentFilterOptions contentFilter{};
contentFilter.PromptMaxAllowedSeverityLevel().Violent(SeverityLevel::Medium);
contentFilter.ResponseMaxAllowedSeverityLevel().Violent(SeverityLevel::Medium);
// Get text description.
auto response = imageDescriptionGenerator.DescribeAsync(inputBuffer, ImageDescriptionKind::BriefDescription, contentFilter).get();
string text = response.Description();