上一篇 Azure 内容审查器之文本审查我们已经介绍了如果使用Azure进行文字内容的审核。对于社区内容,上传的图片是否含有羞羞内容也是需要过虑的。但是最为一般开发者自己很难实现这种级别的智能识别。但是借助Azure的内容审查器可以分分钟实现它。
创建内容审查器
在使用审查器之前需要在Azure上创建它。上次我们已经创建过了,这次就不在赘述了。请直接查看上一篇:
Azure 内容审查器之文本审查
编写代码
创建一个控制台项目然后使用nuget安装一个库:
使用Azure封装过的库,真的超级简单,只要把图片的stream传递进去调用EvaluateFileInput就行了。
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
var endpoint = "https://x.cognitiveservices.azure.com/";
var subscriptionkey = "x";
var client = new ContentModeratorClient(new ApiKeyServiceClientCredentials(subscriptionkey));
client.Endpoint = endpoint;
var imgFile = "d://1.jpg";
using (var img = File.OpenRead(imgFile))
{
//调用EvaluateFileInput识别
var result = client.ImageModeration.EvaluateFileInput(img);
var json = JsonConvert.SerializeObject(result,Formatting.Indented);
Console.WriteLine(json);
Console.Read();
}
}
运行代码
代码写完了,超级简单。于是我迫不及待的找了张羞羞图(别问我怎么找的)来试试。
以下是返回结果:
Hello World!
{
"CacheID": null,"Result": true,"TrackingId": "SEA_ibiza_2a18af19-97fa-4b8d-82b2-2e1654c046fa_ContentModerator.F0_95862889-a5cc-4855-9adc-c3dff4ed6570","AdultClassificationscore": 0.9992928504943848,"IsImageAdultClassified": true,"RacyClassificationscore": 0.9999726414680481,"IsImageRacyClassified": true,"AdvancedInfo": [],"Status": {
"Code": 3000,"Description": "OK","Exception": null
}
}
返回的结果主要关注两个指标:
看我找的图片这两个值数值都达到了0.999,如假包换的羞羞图啊,哈哈。
下面换一张Gakki的美照试一下。
下面是返回结果:
Hello World!
{
"CacheID": null,"Result": false,"TrackingId": "SEA_ibiza_2a18af19-97fa-4b8d-82b2-2e1654c046fa_ContentModerator.F0_193fa67b-0014-41a1-9567-63289886509a","AdultClassificationscore": 0.0015181272756308317,"IsImageAdultClassified": false,"RacyClassificationscore": 0.003930455073714256,"IsImageRacyClassified": false,"Exception": null
}
}
这个图片就是个正常图片,AdultClassificationscore\RacyClassificationscore的数值都很低。
总结
通过以上简单的不能再简单的代码就实现了图片是否有成人内容的识别。如果你自己去实现的话需要学习机器学习人工智能等知识,这个不是一天两天能够完成的。但是使用Azure内容查器就简直轻而易举。