Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Önemli
Resim Açıklaması şu anda Çin'de kullanılamıyor.
Resim için çeşitli türlerde metin açıklamaları oluşturmak için Görüntü Açıklaması API'lerini kullanabilirsiniz.
API ayrıntıları için bkz. Yapay zeka görüntüleme özellikleri için API başvurusu.
İçerik denetimi ayrıntıları için bkz. Üretken yapay zeka API'leriyle içerik güvenliği.
Önemli
Paket Bildirimi Gereksinimleri: Windows AI görüntüleme API'lerini kullanmak için uygulamanızın içinde systemAIModelsbildirilen özelliğe sahip Package.appxmanifest bir MSIX paketi olarak paketlenmiş olması gerekir. Ayrıca, Windows yapay zeka özelliklerini düzgün bir şekilde desteklemek için bildiriminizin MaxVersionTested özniteliğinin en son Windows sürümüne (ör. 10.0.26226.0 veya üzeri) ayarlandığından emin olun. Eski değerlerin kullanılması, modeli yüklerken "Uygulama tarafından bildirilmedi" hatalarına neden olabilir.
<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>
Açıklama türleri
Aşağıdaki metin açıklaması türleri desteklenir:
- Kısa - Grafikler ve diyagramlar için uygun bir açıklama sağlar.
- Ayrıntılı - Uzun bir açıklama sağlar.
- Diyagram - Resim yazısı için uygun kısa bir açıklama sağlar. Değer belirtilmezse varsayılan değerdir.
- Erişilebilir - Erişilebilirlik gereksinimleri olan kullanıcılara yönelik ayrıntıları içeren uzun bir açıklama sağlar.
Sınırlamalar
Bu API'ler Machine Learning (ML) modellerini kullandığından, metnin görüntüyü doğru şekilde açıklamadığı durumlarda zaman zaman hatalar oluşabilir. Bu nedenle, aşağıdaki senaryolarda görüntüler için bu API'lerin kullanılmasını önermeyiz:
- Görüntülerin hassas olabilecek içerik içerdiği yerlerde ve bayraklar, haritalar, küreler, kültürel simgeler veya dini simgeler gibi yanlış açıklamalar tartışmalı olabilir.
- Tıbbi tavsiye veya tanılama, yasal içerik veya finansal belgeler gibi doğru açıklamalar kritik olduğunda.
Resim Açıklaması örneği
Aşağıdaki örnekte, belirtilen açıklama türüne (isteğe bağlı) ve içerik moderasyonu düzeyine (isteğe bağlı) göre bir görüntü için metin açıklamasının nasıl alındığı gösterilmektedir.
Uyarı
SoftwareBitmap şu anda desteklenmediğinden görüntünün imageBuffer nesnesi olması gerekir (bu örnekte SoftwareBitmap'inImageBuffer'a nasıl dönüştürüldüğü gösterilmektedir).
GetReadyState yöntemini çağırıp EnsureReadyAsync yönteminin başarıyla döndürülmesini bekleyerek Görüntü Açıklaması modelinin kullanılabilir olduğundan emin olun.
Görüntü Açıklaması modeli kullanılabilir olduğunda, başvurmak için bir ImageDescriptionGenerator nesnesi oluşturun.
(İsteğe bağlı) ContentFilterOptions nesnesi oluşturun ve tercih ettiğiniz değerleri belirtin. Varsayılan değerleri kullanmayı seçerseniz, null bir nesne geçirebilirsiniz.
Özgün görüntüyü, ImageDescriptionKind'i (tercih edilen açıklama türü için isteğe bağlı bir değer) ve ContentFilterOptions nesnesini (isteğe bağlı) belirten DescribeAsync yöntemini çağırarak görüntü açıklamasını (LanguageModelResponse.Response) alın.
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();