Skip to main content

自定义图像列表

分类:  Azure认知服务 标签:  #Azure #人工智能 #内容审查 发布于: 2023-06-05 13:26:10

我们前面学习如何自定义文本审查服务的词语列表,用以将用户需要审查的服务和自定义词语列表进行对比,从而无需耗费内容审查的资源,直接就可以将需要审查的文本进行定性,对于图片审查服务来讲同样也是可以使用自定义的图像列表的。本节我们来学习如何自定义图像审查列表,同时使用该自定义列表进行比对。

我们前面有一篇是关于文本审查的自定义列表的,图像审查列表和文本实际上是差不多的。

本章的源代码可以从以下位置下载:
Demo Source Code

注意*
图片审查列表最大支持5个自定义列表,每个列表中最多包含1万张自定义图片。

创建项目并配置包引用

使用如下命令创建一个新的项目,同时向项目中添加必要的依赖包。

dotnet new console -n ContentModeratorImageCustomList
cd ContentModeratorImageCustomList
dotnet add package Microsoft.Azure.CognitiveServices.ContentModerator
dotnet add package Microsoft.Rest.ClientRuntime
dotnet add package Newtonsoft.Json

添加完包之后,使用编辑器打开Program.cs, 并在头部添加如下的包引用:

using Microsoft.Azure.CognitiveServices.ContentModerator;
using Microsoft.Azure.CognitiveServices.ContentModerator.Models;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.IO;
using System.Threading;

定义内容审查服务的客户端

代码如下

//创建内容审查服务的客户端
public static class Clients
{
    private static readonly string AzureEndpoint = "<Your Endpoint>";

    private static readonly string CMSubscriptionKey = "<Your Key>";

    public static ContentModeratorClient NewClient()
    {
        // Create and initialize an instance of the Content Moderator API wrapper.
        ContentModeratorClient client = new ContentModeratorClient(new ApiKeyServiceClientCredentials(CMSubscriptionKey));

        client.Endpoint = AzureEndpoint;
        return client;
    }
}

主要的业务逻辑代码

主要的业务逻辑代码参考:

//使用自定义的图像列表
private static void MatchImages(
    ContentModeratorClient client, int listId,
    IEnumerable<string> imagesToMatch)
{
    foreach (var imageUrl in imagesToMatch)
    {
        WriteLine();
        WriteLine($"Matching image {imageUrl} against list {listId}.", true);

        var result = client.ImageModeration.MatchUrlInput(
                "application/json", new BodyModel("URL", imageUrl), listId.ToString());
        Thread.Sleep(throttleRate);

        WriteLine("Response:");
        WriteLine(JsonConvert.SerializeObject(result, Formatting.Indented));
    }
}

完整的源代码我们在文章里就不一一展开了,主要的使用自定义列表的代码就是client.ImageModeration.MatchUrlInput("application/json", new BodyModel("URL", imageUrl), listId.ToString());,其他的关于如何创建自定义列表,更新自定义列表,以及向自定义列表中添加图像,移除图像等方法请参考实例代码。