网站开发代理商,wordpress优化图片分离,产品设计工资一般多少,可以做c语言任务的网站概述前面一篇 Microsoft AI - Custom Vision 中#xff0c;我们介绍了 Azure 认知服务中的自定义影像服务#xff1a;Custom Vision#xff0c;也介绍了如果通过这个在线服务#xff0c;可视化的完成项目创建、数据集上传和标注、模型训练、模型评估和测试。我们也提到我们介绍了 Azure 认知服务中的自定义影像服务Custom Vision也介绍了如果通过这个在线服务可视化的完成项目创建、数据集上传和标注、模型训练、模型评估和测试。我们也提到除了可以使用可视化在线操作的方式Custom Vision 也提供了 SDK 来完成整个机器学习过程两种语言供选择C# 和 Python今天我们针对 C# 版本来做一次实际开发操作。开发过程准备工作C# Custom Vision SDK 在 GitHub 开源Microsoft/Cognitive-CustomVision-Windows这个 SDK 主要分为两部分Prediction 和 Training如果不想下载 SourceCode 自己去编译也可以直接在 VS 中通过 Package Management 安装这两部分的 Nuget packageMicrosoft.Cognitive.CustomVision.Prediction Install-Package Microsoft.Cognitive.CustomVision.Prediction -Version 1.2.0Microsoft.Cognitive.CustomVision.Training Install-Package Microsoft.Cognitive.CustomVision.Training -Version 1.2.0 实际开发接下来我们创建一个 WPF 工程来实际操作整个 Custom Vision SDK 使用过程1. 通过 Nuget Package Management 的安装方式安装 Prediction 和 Training 两个包地址如上面准备工作中所示来看一下包里的 namespace 组成除此之外还需要安装 Microsoft.Rest.ClientRuntime 的 Nuget因为 Custom Vision SDK 依赖于它地址Install-Package Microsoft.Rest.ClientRuntime -Version 2.3.112. Nuget 包安装完成后在代码中引入以下 Namespaceusing Microsoft.Cognitive.CustomVision.Training;using Microsoft.Cognitive.CustomVision.Prediction;using Microsoft.Cognitive.CustomVision.Training.Models;3. 创建一个 Custom Vision Project其中 ApiKey 需要替换为开发者在 CustomVision.ai 网站获取的 Training Key另外 CreateProject 创建时名字是必填的描述和域都是选填的域的类型是 GUID我翻看了 SDK Doc 和源代码没有发现对域的 GUID 取值的任何描述后来在 CustomVision.ai 通过网页调试方法找到了 Domains 字段对应的 GUID在这里也分享给大家来看一下代码实现和实现的结果吧TrainingApi trainingApi new TrainingApi() { ApiKey replace with your api key };
Project demoProject trainingApi.CreateProject( CsharpDemoProject01, Its description of our demo project., new System.Guid(0732100f-1a38-4e49-a514-c9b44c697ab5));项目类型GUID General ee85a74c-405e-4adc-bb47-ffa8ca0c9f31 Food c151d5b5-dd07-472a-acc8-15d29dea8518 Landmarks ca455789-012d-4b50-9fec-5bb63841c793 Retail b30a91ae-e3c1-4f73-a81e-c270bff27c39 Adult 45badf75-3591-4f26-a705-45678d3e9f5f General(compact) 0732100f-1a38-4e49-a514-c9b44c697ab5 Landmarks(compact) b5cfd229-2ac7-4b2b-8d0a-2b0661344894 Retail(compact) 6b4faeda-8396-481b-9f8b-177b9fa3097f 4. 给项目的训练数据集添加标签示例中我们添加了两个标签 airplane 和 alarmclock// create two tags in our demo projectvar airplaneTag trainingApi.CreateTag(demoProject.Id, airplane);var alarmclockTag trainingApi.CreateTag(demoProject.Id, alarmclock);5. 上传图片数据集到项目中我们在项目 Assets 文件夹存放了两个分类每个分类各五张图片示例代码如下string[] images new string[] { 001.jpg, 002.jpg, 003.jpg, 004.jpg, 005.jpg};foreach (var image in images){ var storageFile await StorageFile.GetFileFromApplicationUriAsync(new Uri(string.Format(ms-appx:///Assets/airplane/{0}, image), UriKind.RelativeOrAbsolute)); using (var stream await storageFile.OpenAsync(Windows.Storage.FileAccessMode.Read)) { trainingApi.CreateImagesFromData(demoProject.Id, stream.AsStream(), new Liststring() { airplaneTag.Id.ToString() }); }}foreach (var image in images){ var storageFile await StorageFile.GetFileFromApplicationUriAsync(new Uri(string.Format(ms-appx:///Assets/alarmclock/{0}, image), UriKind.RelativeOrAbsolute)); using (var stream await storageFile.OpenAsync(Windows.Storage.FileAccessMode.Read)) { trainingApi.CreateImagesFromData(demoProject.Id, stream.AsStream(), new Liststring() { alarmclockTag.Id.ToString() }); }}验证一下我们添加的标签和数据集6. 数据集准备完毕开始训练模型var iteration trainingApi.TrainProject(demoProject.Id);while (iteration.Status Training){ iteration trainingApi.GetIteration(demoProject.Id, iteration.Id);}iteration.IsDefault true;trainingApi.UpdateIteration(demoProject.Id, iteration.Id, iteration);训练完成后我们看看训练结果7. 模型训练完毕开始做模型验证ApiKey 替换为你在 Custom Vision 对应的 Prediction Key我们使用了一张 airplane 的图片作为测试输入看看代码和结果PredictionEndpoint endpoint new PredictionEndpoint() { ApiKey replace with your prediction key };var testFile await StorageFile.GetFileFromApplicationUriAsync(new Uri(string.Format(ms-appx:///Assets/airplane.jpg, ), UriKind.RelativeOrAbsolute));using (var testStream await testFile.OpenAsync(Windows.Storage.FileAccessMode.Read)){ var result endpoint.PredictImage(demoProject.Id, testStream.AsStream());}可以看到airplane 的概率为 0.98alarmclock 为 0.01这个结果符合我们对模型的预期。 总结到这里就完成了 Custom Vision C# 的实现过程因为只是简单 Demo 演示所以训练数据集只取了 10 张图片只是简单的把代码的实现过程讲解了一下。大家如果感兴趣可以结合这个基本过程把上传标签和图片的过程做的更加易交互比如选取文件夹批量上传和管理等模型训练的过程也可以再细化通过代码返回结果监控训练的结果模型测试也可以把测试结果更直观的反映出来或者批量处理测试数据更丰富的展示和管理测试结果原文地址http://www.cnblogs.com/shaomeng/p/8625572.html.NET社区新闻深度好文欢迎访问公众号文章汇总 http://www.csharpkit.com