随着 Aspose.Imaging Cloud 20.5 的发布,我们很高兴地宣布了图像中的对象检测功能。它使用户能够根据标签和概率检测输入图像上的对象边界。当前实现支持 单次检测方法 来识别使用 COCO 2017 数据集训练模型的对象。SSD 方法将边界框的输出空间离散化为一组默认框,每个特征图位置具有不同的纵横比和比例。
Aspose.Imaging Cloud 基于以下 4 种方法执行对象检测:
- 检测现有图像上的对象并以 JSON 对象形式返回结果
- 检测现有图像上的对象并以图像形式返回结果
- 上传图像、检测其中的对象并将结果作为 JSON 对象返回
- 上传图像、检测其中的对象并以图像形式返回结果
在本节中,我们将进一步详细讨论以下部分
检测物体边界
此方法检测现有图像上的对象并将结果作为 JSON 对象返回。
请求查询参数:
- name(字符串,必需):图像名称。目前,我们支持 3 种图像格式:BMP、JPEG 和 JPEG 2000。
- 方法(字符串,可选,默认“ssd”):对象检测方法。
- 阈值(数字,可选,[0 - 100],默认值为 50):将包含在结果中的检测到的物体的最小概率(以百分比表示)。
- includeLabel(布尔值,可选,默认为 false):是否在响应中包含检测到的对象标签。
- includeScore(布尔值,可选,默认 false):是否在响应中包含检测到的对象概率。
- 文件夹(字符串,可选):文件夹。
- 存储(字符串,可选):存储。
使用 cURL 命令进行对象检测
还可以使用 cURL 命令访问 Aspose.Imaging Cloud。以下命令显示如何使用 cURL 命令检测对象并获取 JSON 对象形式的响应。
我们使用下图来检测物体。
curl "https://api.aspose.cloud/v3.0/imaging/ai/objectdetection/cat-pet-animal-domestic-104827.jpeg/bounds?method=ssd&threshold=50&includeLabel=true&includeScore=true" \
-X GET \
-H "accept: application/json" \
-H "authorization: Bearer <jwt token>"
请求 URL
https://api.aspose.cloud/v3.0/imaging/ai/objectdetection/cat-pet-animal-domestic-104827.jpeg/bounds?method=ssd&threshold=50&includeLabel=true&includeScore=true
响应主体
{
"detectedObjects": [
{
"label": "cat",
"score": 0.9450986,
"bounds": {
"x": 43,
"y": 4,
"width": 401,
"height": 323
}
}
]
}
响应架构
{
"type": "object",
"properties": {
"detectedObjects": {
"type": "array",
"items": [
{
"type": "object",
"properties": {
"score": {
"type": "number"
},
"label": {
"type": "string"
},
"bounds": {
"type": "object",
"properties": {
"x": {
"type": "number"
},
"y": {
"type": "number"
},
"width": {
"type": "number"
},
"height": {
"type": "number"
}
},
"required": [
"x",
"y",
"width",
"height"
]
}
},
"required": [
"score",
"label",
"bounds"
]
}
]
}
},
"required": [
"detectedObjects"
]
}
使用 C# 在图像中进行对象检测
请尝试使用以下代码片段,使用 C# 代码片段在图像中进行对象检测。
C# .NET 代码片段
///<summary>
/// 从云存储中检测图像上的物体。
///</summary>
public static void DetectObjectsImageFromStorage()
{
string MyAppKey = "xxxxx"; // Get AppKey and AppSID from https://dashboard.aspose.cloud/
string MyAppSid = "xxxxx"; // Get AppKey and AppSID from https://dashboard.aspose.cloud/
string method = "ssd";
int threshold = 50;
bool includeLabel = true;
bool includeScore = true;
string folder = ""; // Input file is saved at default folder in the storage
string storage = null; // We are using default Cloud Storage
// 初始化 Aspose.Imaging Cloud 对象
ImagingApi imagingApi = new ImagingApi(appKey: MyAppKey, appSid: MyAppSid, debug: false);
imagingApi.UploadFile(new Aspose.Imaging.Cloud.Sdk.Model.Requests.UploadFileRequest("dog-and-cat-cover.jpg", File.Open("dog-and-cat-cover.jpg", FileMode.Open), null));
var request = new Aspose.Imaging.Cloud.Sdk.Model.Requests.GetObjectBoundsRequest("dog-and-cat-cover.jpg", method, threshold, includeLabel, includeScore, folder, storage);
Console.WriteLine($"Call ObjectBoundsRequest with params: method:{method}, threshold:{threshold}, include label: {includeLabel}, includeScore: {includeScore}");
Aspose.Imaging.Cloud.Sdk.Model.DetectedObjectList detectedObjectList = imagingApi.GetObjectBounds(request);
// 获取图像文件中的对象数量
Console.WriteLine("Objects detected: " + detectedObjectList.DetectedObjects.Count);
}
检测物体边界并返回图像
上传图像,检测物体,在物体周围绘制边界,并将结果以图像形式返回。
请求查询参数:
- name (string, 必选):图片名称,目前支持bmp、jpg、jpeg、jpeg2000三种图片格式。
- 方法(字符串,可选,[“ssd”],默认“ssd”):对象检测方法。
- 阈值(数字,可选,[0 - 100],默认值为 50):结果中包含的最小对象的概率百分比。
- includeLabel(布尔值,可选,默认为 false):是否在响应中包含检测到的对象标签。
- includeScore(布尔值,可选,默认 false):是否在响应中包含检测到的对象概率。
- color(字符串,可选):检测到的对象边界和信息的自定义颜色。如果等于 null,则不同标签的对象具有不同颜色的边界。
- 文件夹(字符串,可选):文件夹。
- 存储(字符串,可选):存储。
使用 cURL 命令确定对象
Aspose.Imaging Cloud 也可以通过 cURL 命令访问。但是,作为先决条件,您需要先根据您的客户端凭据生成 JWT 访问令牌。请执行以下命令来生成 JWT 令牌。
curl -v "https://api.aspose.cloud/connect/token" \
-X POST \
-d "grant_type=client_credentials&client_id=4ccf1790-accc-41e9-8d18-a78dbb2ed1aa&client_secret=caac6e3d4a4724b2feb53f4e460eade3" \
-H "Content-Type: application/x-www-form-urlencoded" \
-H "Accept: application/json"
现在执行以下命令来检测对象边界并将其作为图像返回。
curl -v "https://api.aspose.cloud/v3.0/imaging/ai/objectdetection/dog-and-cat-cover.jpg/visualbounds?method=ssd&threshold=50&includeLabel=false&includeScore=false&color=Red" \
-X GET \
-H "accept: application/json" \
-H "authorization: Bearer <JWT Token>"
请求 URL
https://api.aspose.cloud/v3.0/imaging/ai/objectdetection/dog-and-cat-cover.jpg/visualbounds?method=ssd&threshold=50&includeLabel=false&includeScore=false&color=Red
在上面的请求中,注意红色被指定为高亮颜色。
C#.NET 代码片段
以下代码片段显示了加载包含两个对象(狗和猫)的图像文件的步骤。这两个对象均使用 Aspose.Imaging Cloud API 进行识别。突出显示对象的结果图像保存在系统驱动器上。
///<summary>
/// 在请求流中传递的图像上可视化检测到的对象。
///</summary>
public static void VisualizeObjectsImageFromRequestBody()
{
Console.WriteLine("Detect objects on an image. Image data is passed in a request stream");
string MyAppKey = "xxxxx"; // Get AppKey and AppSID from https://dashboard.aspose.cloud/
string MyAppSid = "xxxxx"; // Get AppKey and AppSID from https://dashboard.aspose.cloud/
// 初始化 Aspose.Imaging Cloud 对象
ImagingApi imagingApi = new ImagingApi(appKey: MyAppKey, appSid: MyAppSid, debug: false);
using (FileStream inputImageStream = File.OpenRead("dog-and-cat-cover.jpg"))
{
string method = "ssd";
int threshold = 50;
bool includeLabel = true;
bool includeScore = true;
string color = null;
string outPath = null;
string storage = null; // We are using default Cloud Storage
var request = new Aspose.Imaging.Cloud.Sdk.Model.Requests.CreateVisualObjectBoundsRequest(inputImageStream, method, threshold, includeLabel, includeScore, color, outPath, storage);
Console.WriteLine($"Call CreateVisualObjectBoundsRequest with params: method:{method}, threshold:{threshold}, include label: {includeLabel}, include score: {includeScore}");
using (Stream updatedImage = imagingApi.CreateVisualObjectBounds(request))
{
// 将更新的图像流保存到系统位置
System.Drawing.Image img = System.Drawing.Image.FromStream(updatedImage);
img.Save("/Users/Aspose/Desktop/myImage.Jpeg", System.Drawing.Imaging.ImageFormat.Jpeg);
}
}
Console.WriteLine();
}
有关图像搜索的更多信息,请访问反向图像搜索。
结论
在本文中,我们了解了 Aspose.Imaging Cloud 用于图像中对象检测的功能。要识别图像中的对象,您可以使用代码片段或使用 cURL 命令。此外,为了方便我们的客户,我们创建了特定于编程语言的 SDK,并在上面的文章中,我们探讨了 Aspose.Imaging Cloud SDK for .NET 用于对象检测的功能。SDK 的完整源代码可在 GitHub 上下载。
相关文章
我们建议您访问以下链接以了解更多信息: