Öğretici: Azure Content Moderator ile e-ticaret ürün görüntülerini Content Moderator
Dikkat
Content Moderator gözden geçirme aracı artık kullanım dışıdır ve 12/31/2021 tarihinde kullanımdan kaldırılacaktır.
Bu öğreticide, bir e-ticaret senaryosu için Azure Bilişsel Hizmetler görüntülerini sınıflandırmak Content Moderator ve ortası dahil olmak üzere Content Moderator'ı nasıl kullanabileceğiniz hakkında bilgi edineceksiniz. Görüntü İşleme ve Özel Görüntü İşleme kullanarak görüntülere etiket (etiketler) uygulayacak ve ardından Content Moderator'nin makine öğrenmesi tabanlı teknolojilerini insan inceleme ekipleriyle birleştirerek akıllı bir moderrasyon sistemi sağlayan bir ekip incelemesi oluşturabileceksiniz.
Bu öğretici şunların nasıl yapıldığını gösterir:
- Yeni bir Content Moderator ve bir inceleme ekibi oluşturun.
- Olası yetişkinlere yönelik ve müstehcen içerik taraması için Content Moderator'ın resim API'sini kullanma.
- Ünlü içeriği Görüntü İşleme (veya görüntü/görüntü algılanabilir diğer etiketler) taramak için Görüntü İşleme hizmetini kullanın.
- Bayrakların, Özel Görüntü İşleme kalemlerin (veya diğer özel etiketlerin) varlığını taramak için Özel Görüntü İşleme hizmetini kullanın.
- İnsan incelemesi ve son karar alma için birleşik tarama sonuçlarını sun.
Örnek kodun eksiksiz bir örneği, aşağıdaki Örnek e-ticaret Kataloğu Moderation deposunda GitHub.
Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.
Önkoşullar
- Content Moderator abonelik anahtarı. Content Moderator hizmetine abone olmak ve anahtarınızı almak için Bilişsel Hizmetler hesabı oluşturma yönergelerini izleyin.
- Bir Görüntü İşleme anahtarı (yukarıdaki yönergelerle aynıdır).
- Visual Studio 2015 veya 2017'nin herhangi bir sürümü.
- Sınıflandırıcının (bu durumda toys, pens ve US flags) Özel Görüntü İşleme her etiket için bir görüntü kümesi.
Gözden geçirme ekibi oluşturma
Content Moderator Content Moderator aracına kaydolma ve bir gözden geçirme ekibi oluşturma yönergeleri için Web'Content Moderator deneyin hızlı başlangıç kılavuzuna bakın. Kimlik Bilgileri sayfasındaki Takım Kimliği değerini not edin.
Özel moderrasyon etiketleri oluşturma
Ardından, Gözden Geçirme aracında özel etiketler oluşturun (bu işlemle ilgili yardıma ihtiyacınız varsa Etiketler makalesine bakın). Bu örnekte şu etiketleri ekleyebilirsiniz: ünlü, ABD, bayrak, toy ve kalem. Tüm etiketlerin (ünlü gibi) tüm etiketlerde algılanabilir Görüntü İşleme olması gerekir; sınıflandırıcıyı eğitip daha sonra algılamak için Özel Görüntü İşleme kendi özel etiketlerinizi dilersiniz.

Visual Studio projesi oluşturma
- Yeni Visual Studio iletişim kutusunu Project açın. Yüklü'yi ve ardından Visual C# öğesini genişletin, ardından Konsol uygulaması (.NET Framework) öğesini seçin.
- Uygulamaya E-ticaretModeration adını ve ardından Tamam'ı seçin.
- Bu projeyi mevcut bir çözüme ekliyorsanız bu projeyi tek başlangıç projesi olarak seçin.
Bu öğreticide, projenin merkezinde yer alan kod vurgulanır, ancak her kod satırına yer ve olmayacaktır. Örnek projeden ( Örnekler e-ticaretKataloğu Moderation ) Program.cs dosyasının tüm içeriğini yeni projenizin Program.cs dosyasına kopyalayın. Ardından, projenin nasıl çalıştığını ve bunu nasıl kendi kendinize kullanabileceğiniz hakkında bilgi edinmek için aşağıdaki bölümlere geçin.
API anahtarlarını ve uç noktaları tanımlama
Bu öğretici üç bilişsel hizmet kullanır; bu nedenle, buna karşılık gelen üç anahtar ve API uç noktası gerektirir. Program sınıfında aşağıdaki alanlara bakın:
public const string ContentModeratorKey = "XXXXXXXXXXXXX";
public const string ComputerVisionKey = "XXXXXXXXXXXX";
public const string CustomVisionKey = "XXXXXXXXXXX";
// All your end points based on the new account and subscriptions
public const string ImageUri = "https://westus.api.cognitive.microsoft.com/contentmoderator/moderate/v1.0/ProcessImage/Evaluate";
public const string ReviewUri = "https://westus.api.cognitive.microsoft.com/contentmoderator/review/v1.0/teams/YOUR-TEAM-ID/reviews";
public const string ComputerVisionUri = "https://westcentralus.api.cognitive.microsoft.com/vision/v1.0/analyze?details=celebrities";
public const string CustomVisionUri = "https://southcentralus.api.cognitive.microsoft.com/customvision/v1.0/Prediction/XXXXXXXXXXXXXXXX/url";
Alanları abonelik anahtarlarının değerleriyle güncelleştirmeniz ve alanları doğru uç nokta URL'leriyle değiştirmeniz gerekir (daha sonra Özel Görüntü İşleme anahtarını ve uç ___Key ___Uri noktayı alırsınız). Bu değerleri her Azure kaynağının Hızlı başlangıç sekmelerinde bulabilirsiniz. Alanın bölümünü YOURTEAMID daha ReviewUri önce oluşturduğunuz inceleme ekibinin kimliğiyle doldurun. Daha sonra alanın son bölümünü CustomVisionUri dolduracağız.
Not
1 Temmuz 2019 ' den sonra oluşturulan yeni kaynaklar özel alt etki alanı adları kullanır. Daha fazla bilgi ve bölgesel uç noktaların tamamen listesi için bkz. bilişsel Hizmetler Için özel alt etki alanı adları.
Birincil yöntem çağrıları
Görüntü URL'leri listesinde döngüye alan Main yönteminde aşağıdaki koda bakın. Her görüntüyü üç farklı hizmetle analiz eder, uygulanan etiketleri ReviewTags dizisine kaydederek ve ardından Content Moderator Review Tool'a görüntü göndererek insan denetleyiciler için bir gözden geçirme oluşturur. Bu yöntemleri aşağıdaki bölümlerde inceleyebilirsiniz. Isterseniz, hangi etiketlerin uygulandığını kontrol etmek için bir koşullu deyimde ReviewTags dizisini kullanarak gözden geçirmek üzere hangi görüntülerin gönderildiğini kontrol edin.
// for each image URL in the file...
foreach (var Url in Urls)
{
// Initiatize a new review tags array
ReviewTags = new KeyValuePair[MAXTAGSCOUNT];
// Evaluate for potential adult and racy content with Content Moderator API
EvaluateAdultRacy(Url, ref ReviewTags);
// Evaluate for potential presence of celebrity (ies) in images with Computer Vision API
EvaluateComputerVisionTags(Url, ComputerVisionUri, ComputerVisionKey, ref ReviewTags);
// Evaluate for potential presence of custom categories other than Marijuana
EvaluateCustomVisionTags(Url, CustomVisionUri, CustomVisionKey, ref ReviewTags);
// Create review in the Content Moderator review tool
CreateReview(Url, ReviewTags);
}
EvaluateAdultRacy yöntemi
Program sınıfında EvaluateAdultRacy yöntemine bakın. Bu yöntem parametre olarak bir görüntü URL'si ve anahtar-değer çiftleri dizisi alır. Görüntünün Yetişkinlere Content Moderator ve REST API puanlarını almak için Content Moderator Image REST API'ı çağrılır. herhangi biri için puan 0,4'den büyükse (aralık 0 ile 1 arasındaysa), ReviewTags dizisinde karşılık gelen değeri True olarak ayarlar.
/// <summary>
/// Use Content Moderator API to evaluate for potential adult and racy content
/// </summary>
/// <param name="ImageUrl"></param>
/// <param name="ReviewTags"></param>
/// <returns>API call success or not</returns>
public static bool EvaluateAdultRacy(string ImageUrl, ref KeyValuePair[] ReviewTags)
{
float AdultScore = 0;
float RacyScore = 0;
var File = ImageUrl;
string Body = $"{{\"DataRepresentation\":\"URL\",\"Value\":\"{File}\"}}";
HttpResponseMessage response = CallAPI(ImageUri, ContentModeratorKey, CallType.POST,
"Ocp-Apim-Subscription-Key", "application/json", "", Body);
if (response.IsSuccessStatusCode)
{
// {“answers”:[{“answer”:“Hello”,“questions”:[“Hi”],“score”:100.0}]}
// Parse the response body. Blocking!
GetAdultRacyScores(response.Content.ReadAsStringAsync().Result, out AdultScore, out RacyScore);
}
ReviewTags[0] = new KeyValuePair();
ReviewTags[0].Key = "a";
ReviewTags[0].Value = "false";
if (AdultScore > 0.4)
{
ReviewTags[0].Value = "true";
}
ReviewTags[1] = new KeyValuePair();
ReviewTags[1].Key = "r";
ReviewTags[1].Value = "false";
if (RacyScore > 0.3)
{
ReviewTags[1].Value = "true";
}
return response.IsSuccessStatusCode;
}
EvaluateComputerVisionTags yöntemi
Sonraki yöntem bir görüntü URL'sini ve Görüntü İşleme bilgilerini alır ve ünlülerin varlığı için görüntüyü analiz eder. Bir veya daha fazla ünlü bulunursa, ReviewTags dizisinde karşılık gelen değeri True olarak ayarlar.
/// <summary>
/// Use Computer Vision API to evaluate for potential celebrity presence in image
/// </summary>
/// <param name="ImageUrl"></param>
/// <param name="ComputerVisionUri"></param>
/// <param name="ComputerVisionKey"></param>
/// <param name="ReviewTags"></param>
/// <returns>API call success or not</returns>
public static bool EvaluateComputerVisionTags(string ImageUrl, string ComputerVisionUri, string ComputerVisionKey, ref KeyValuePair[] ReviewTags)
{
var File = ImageUrl;
string Body = $"{{\"URL\":\"{File}\"}}";
HttpResponseMessage Response = CallAPI(ComputerVisionUri, ComputerVisionKey, CallType.POST,
"Ocp-Apim-Subscription-Key", "application/json", "", Body);
if (Response.IsSuccessStatusCode)
{
ReviewTags[2] = new KeyValuePair();
ReviewTags[2].Key = "cb";
ReviewTags[2].Value = "false";
ComputerVisionPrediction CVObject = JsonConvert.DeserializeObject<ComputerVisionPrediction>(Response.Content.ReadAsStringAsync().Result);
if ((CVObject.categories[0].detail != null) && (CVObject.categories[0].detail.celebrities.Count() > 0))
{
ReviewTags[2].Value = "true";
}
}
return Response.IsSuccessStatusCode;
}
EvaluateCustomVisionTags yöntemi
Ardından evaluateCustomVisionTags metoduna bakın. Bu yöntem bu durumda bayraklar, oyuncaklar ve kalemler gibi gerçek — ürünleri sınıflandırmaktadır. Görüntülerde kendi özel görüntü sınıflandırıcınızı oluşturmak ve bayrakları, oyuncakları ve kalemleri (veya özel etiketleriniz olarak seçtiğiniz her şeyi) algılamak için Sınıflandırıcı oluşturma kılavuzunda verilen yönergeleri izleyin. Bu örnekteki bazı kategorileri hızlı bir şekilde eğitmek için GitHub sample-images klasöründeki görüntüleri kullanabilirsiniz.

Sınıflandırıcınızı eğittiktan sonra tahmin anahtarı ve tahmin uç noktası URL'sini (bunları alırken yardıma ihtiyacınız varsa BKZ. URL'yi ve tahmin anahtarını alma) ve bu değerleri sırasıyla ve alanlarına CustomVisionKey CustomVisionUri attayabilirsiniz. yöntemi sınıflandırıcıyı sorgulamak için bu değerleri kullanır. Sınıflandırıcı görüntüde bir veya daha fazla özel etiket bulursa, bu yöntem ReviewTags dizisinde karşılık gelen değerleri True olarak ayarlar.
/// <summary>
/// Use Custom Vision API to evaluate for potential content from custom-trained categories
/// </summary>
/// <param name="ImageUrl"></param>
/// <param name="CustomVisionUri"></param>
/// <param name="CustomVisionKey"></param>
/// <param name="ReviewTags"></param>
/// <returns>API call success or not</returns>
public static bool EvaluateCustomVisionTags(string ImageUrl, string CustomVisionUri, string CustomVisionKey, ref KeyValuePair[] ReviewTags)
{
var File = ImageUrl;
string Body = $"{{\"URL\":\"{File}\"}}";
HttpResponseMessage response = CallAPI(CustomVisionUri, CustomVisionKey, CallType.POST,
"Prediction-Key", "application/json", "", Body);
if (response.IsSuccessStatusCode)
{
// Parse the response body. Blocking!
SaveCustomVisionTags(response.Content.ReadAsStringAsync().Result, ref ReviewTags);
}
return response.IsSuccessStatusCode;
}
Gözden geçirme aracı için inceleme oluşturma
Önceki bölümlerde, uygulamanın gelen görüntüleri yetişkinlere yönelik ve racy içeriği (Content Moderator), ünlüler (Görüntü İşleme) ve diğer çeşitli nesneler (Özel Görüntü İşleme) için nasıl tarar? Ardından, tüm uygulanan etiketleriyle (Meta Veri olarak geçirilen) görüntüleri Content Moderator Review Tool'a yük Content Moderator bakın.
/// <summary>
/// Call Content Moderator's Review API to create a review with the image (URL) and the review tags as inputs
/// </summary>
/// <param name="ImageUrl"></param>
/// <param name="Metadata"></param>
/// <returns>API call success or not</returns>
public static bool CreateReview(string ImageUrl, KeyValuePair[] Metadata)
{
ReviewCreationRequest Review = new ReviewCreationRequest();
Review.Item[0] = new ReviewItem();
Review.Item[0].Content = ImageUrl;
Review.Item[0].Metadata = new KeyValuePair[MAXTAGSCOUNT];
Metadata.CopyTo(Review.Item[0].Metadata, 0);
//SortReviewItems(ref Review);
string Body = JsonConvert.SerializeObject(Review.Item);
HttpResponseMessage response = CallAPI(ReviewUri, ContentModeratorKey, CallType.POST,
"Ocp-Apim-Subscription-Key", "application/json", "", Body);
return response.IsSuccessStatusCode;
}
Görüntüler, gözden geçirme aracının Gözden geçirme Content Moderator görünür.

Test görüntülerinin listesini gönderme
Main yönteminde gördüğünüz gibi, bu program görüntü URL'lerinin listesini içeren birUrls.txt"C:Test" dizinini aramaz. Bu dosyayı ve dizini oluşturun veya yolu metin dosyanıza işaret etmek için değiştirebilirsiniz. Ardından bu dosyayı test etmek istediğiniz görüntülerin URL'leriyle doldurmak.
// Check for a test directory for a text file with the list of Image URLs to scan
var topdir = @"C:\test\";
var Urlsfile = topdir + "Urls.txt";
if (!Directory.Exists(topdir))
return;
if (!File.Exists(Urlsfile))
{
return;
}
// Read all image URLs in the file
var Urls = File.ReadLines(Urlsfile);
Programı çalıştırma
Yukarıdaki adımların hepsini izlediysanız, program her görüntüyü işlemeli (ilgili etiketleri için üç hizmeti de sorgulamalı) ve ardından etiket bilgilerine sahip görüntüleri Content Moderator Gözden Geçirme Aracı'Content Moderator yüklemeli.
Sonraki adımlar
Bu öğreticide, ürün görüntülerini analiz etmek, bunları ürün türüne göre etiketlemek ve bir inceleme ekibinin içerik moderitesi hakkında bilinçli kararlar almalarını sağlayacak bir program ayarlayacağız. Daha sonra görüntü moderrasyon ayrıntıları hakkında daha fazla bilgi edinebilirsiniz.