C# Inference Client 示例项目
本章会详细介绍DaoAI World SDK中包含的C# Inference Client 代码示例。
引入库
在C#示例中,我们使用了以下几个库
using System;
using System.IO;
using DaoAI.InferenceClient;
读取图片
C# Inference Client 的模型预测函数需要将图片表示为64位编码图片(base64_encoded_image) 您可以使用Convert.ToBase64String() 方法来转换。
首先定义文件路径 文件的格式是转换成64位图片后的txt文件,然后读取。
string fileName = "C:/Users/daoai/Documents/DWSDK_Demo/data/image.bmp";
string base64Image = Convert.ToBase64String(File.ReadAllBytes(fileName));
加载深度学习模型
DaoAI World 输出的深度学习模型通常是 dwm 格式。我们需要创建一个 DaoAI.InferenceClient.KeypointDetection 对象,然后使用constructor 方法来读取 DaoAI World 输出的深度学习模型 dwm 文件。
// model path in server file system
string filemodel = "../../../../../../data/KeypointDetection.dwm";
DaoAI.InferenceClient.KeypointDetection model = new DaoAI.InferenceClient.KeypointDetection(filePath_model, DaoAI.InferenceClient.DeviceType.GPU);
注意,这里每一个检测任务都有对应的对象:
//实例分割
DaoAI.InferenceClient.InstanceSegmentation model(model_path);
//关键点检测
DaoAI.InferenceClient.KeypointDetection model(model_path);
//图像分类
DaoAI.InferenceClient.Classification model(model_path);
//目标检测
DaoAI.InferenceClient.ObjectDetection model(model_path);
//非监督缺陷检测
DaoAI.InferenceClient.UnsupervisedDefectSegmentation model(model_path);
//监督缺陷检测
DaoAI.InferenceClient.SupervisedDefectSegmentation model(model_path);
//OCR
DaoAI.InferenceClient.OCR model(model_path);
//定位模型 (只在工业版支持)
DaoAI.InferenceClient.Positioning model(model_path);
//漏错装检测 (只在工业版支持)
DaoAI.InferenceClient.PresenceChecking model(model_path);
如果尝试加载非对应的模型对象,那么会报错,报错信息中会提示您应该用的模型类型。
使用深度学习模型进行预测
// get inference
DaoAI.InferenceClient.KeypointDetection prediction = model.inference(base64Image);
注意,这里每一个检测任务返回的结果都有对应的对象:
//实例分割
DaoAI.InferenceClient.InstanceSegmentationResult prediction = model.inference(base64Image);
//关键点检测
DaoAI.InferenceClient.KeypointDetectionResult prediction = model.inference(base64Image);
//图像分类
DaoAI.InferenceClient.ClassificationResult prediction = model.inference(base64Image);
//目标检测
DaoAI.InferenceClient.ObjectDetectionResult prediction = model.inference(base64Image);
//异常检测
DaoAI.InferenceClient.AnomalyDetectionResult prediction = model.inference(base64Image);
//语义分割
DaoAI.InferenceClient.SemanticSegmentationResult prediction = model.inference(base64Image);
//OCR
DaoAI.InferenceClient.OCRResult prediction = model.inference(base64Image);
//定位模型 (只在工业版支持)
DaoAI.InferenceClient.PositioningResult prediction = model.inference(base64Image);
//漏错装检测 (只在工业版支持)
DaoAI.InferenceClient.PresenceCheckingResult prediction = model.inference(base64Image);
返回结果示例
以下是关键点检测模型预测后返回的结果.
这个结果展示了,标签名称,置信度,以及预测框,关键点和多边形掩膜。
for (int i = 0; i < result.NumDetections; i++)
{
Console.WriteLine($"Object {i + 1}");
Console.WriteLine($"Class: {result.ClassLabels[i]}");
Console.WriteLine($"Bounding box: {result.Boxes[i].X1} {result.Boxes[i].Y1} {result.Boxes[i].X2} {result.Boxes[i].Y2}");
Console.WriteLine($"Confidence: {result.Confidences[i]}");
Console.WriteLine("Keypoints:");
foreach (var keypoint in result.Keypoints[i])
{
Console.WriteLine($"{keypoint.X} {keypoint.Y} {keypoint.Confidence}");
}
Console.WriteLine();
}