SAP Leonardo图片处理相关的机器学习服务在SAP智能服务场景中的应用
本文作为Jerry最近正在做的一个项目的工作思路的梳理。
我们假设这样一个服务场景,技师上门维修某设备,发现设备上某零件损坏了,假设这位技师由于种种原因,没能根据自己的经验识别出这个零件的型号。此时技师掏出自己的手机,给零件拍摄一张图片,这张图片通过手机上安装的SAP某智能解决方案,传送到SAP Leonardo平台,通过那里的人工智能服务,自动识别出这张图片上面零件的准确型号,返回给技师。
SAP Leonardo上的人工智能服务,在接收到技师上传的图片后,通过某种算法将该图片的特征向量提取出来,然后再通过平台上基于大量数据集训练好的模型,识别出准确型号。因此,图片特征向量的提取,成为了这个智能解决方案的首要步骤。

什么是图片的特征向量?特征向量的提取,从数学上说,就是通过某种算法,把输入图片的二进制流,转换成一个向量(一维矩阵)的过程。
以下面这张图里的梯形和圆形为例,我们把图形均匀地分成9个区域,在图形中心观察每个区域内图形单元的梯度方向,就可以实现降维,把二维图像以一个一维矩阵来表示。

当然实际的图形轮廓识别和降维处理采用的算法比这个例子复杂得多,Jerry也不懂。幸运的是,对SAP partners来说,不需要了解这里面的数学知识和技术知识,简单地把SAP Leonardo上的人工智能服务当成一个黑盒子,通过Restful API的方式,把要提取特征向量的图片“喂”给人工智能服务,就能得到特征向量输出。
通过这个url进入SAP Leonardo图片特征向量提取服务的测试控制台和帮助文档:
https://api.sap.com/api/img_feature_extraction_api/resource
使用非常简单,直接在测试控制台里从本地选择一张图片,点击执行按钮:

得到了输出的特征向量:

有了特征向量后,我们再回到文章开头提到的场景。
假设我们想根据技师上传的图片分辨出图片里的零件型号,一种做法当然是采取Jerry之前一篇文章 如何对SAP Leonardo上的机器学习模型进行重新训练 介绍的方法,提前准备大量该型号零件的图片,然后使用这些图片对Product Image Classification模型进行重新训练。训练结束之后,该API即可识别出对于给定一张图片,代表的究竟是不是之前训练过的某型号的零件。这是第一种实现思路。

既然我们如今已经拿到了待识别图片的特征向量,那么可以尝试第二种思路,即利用Leonardo上的另一个和图片处理相关的人工智能服务:图片相似度评分https://api.sap.com/api/similarity_scoring_api/overview

这个Restful API的输入需要两个压缩包。第一个压缩包存放的是一个存放了事先提取好的技师上传的待匹配文件的特征向量,第二个压缩包里存放的是型号为A,B,C...等零件图片的特征向量。

如上图所示,为简单起见,第二个压缩包我只存放了两个文件,分别存放的是型号A和型号B的特征向量。
调用API,传入这两个压缩包:

得到的结果表明,技师上传的图片和型号A的相似系数几乎接近1,那么显然,该图片代表型号A。

当然,除了直接上传包含了图片特征向量的压缩文件之外,将这些文件包含的特征向量内容以JSON字符串的方式作为输入调用API也是可行的,JSON字符串的格式在SAP官网里有详细说明,这里不再赘述。

希望本文介绍的这些API对于大家实际工作中如何利用SAP Leonardo上的机器学习服务有所启发,感谢阅读。
更多阅读
要获取更多Jerry的原创文章,请关注公众号"汪子熙":

SAP Leonardo图片处理相关的机器学习服务在SAP智能服务场景中的应用的更多相关文章
- 机器学习 | 详解GBDT在分类场景中的应用原理与公式推导
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是机器学习专题的第31篇文章,我们一起继续来聊聊GBDT模型. 在上一篇文章当中,我们学习了GBDT这个模型在回归问题当中的原理.GBD ...
- 使用SAP Leonardo上的机器学习服务提取图片的特征向量
要想提取图片的特征向量,首先得知道特征向量是什么. 我们假设这样一个服务场景,技师上门维修某设备,发现上面某零件损坏了,假设这位技师由于种种原因,没能根据自己的经验识别出这个零件的型号.此时技师掏出自 ...
- 使用Java程序消费SAP Leonardo的机器学习API
以sap leonardo作为关键字在微信上搜索,能搜到不少文章.但是我浏览了一下,好像没有发现有从具体编程角度上来介绍的.所以我就贡献一篇. 需求 开发一个Java程序,用户可以指定一张图片,该Ja ...
- 读懂SAP Leonardo物联网平台
读懂SAP Leonardo物联网平台 https://blog.csdn.net/weixin_42137700/article/details/81903290 本文比较系统.全面地介绍了SAP ...
- 如何对SAP Leonardo上的机器学习模型进行重新训练
Jerry之前的两篇文章介绍了如何通过Restful API的方式,消费SAP Leonardo上预先训练好的机器学习模型: 如何在Web应用里消费SAP Leonardo的机器学习API 部署在SA ...
- 部署在SAP Cloud Platform CloudFoundry环境的应用如何消费SAP Leonardo机器学习API
Jerry的前一篇文章 如何在Web应用里消费SAP Leonardo的机器学习API 里介绍的例子是Neo测试环境的Web应用消费sandbox版本的机器学习API,url如下: https://s ...
- 如何在Web应用里消费SAP Leonardo的机器学习API
去年5月的时候,Jerry曾经写了一篇文章:使用Java程序消费SAP Leonardo的机器学习API,而最近另外做的一个项目,需要在Web应用里做同样的事情. 因为有了前一篇文章的铺垫,避免了很多 ...
- [入门到吐槽系列] 微信小程序 敏感违规图片检测 mediaCheckAsync,客服接口 消息推送 的各种坑分享!
前言: 最近需要做个用户上传图片,服务端校验图片问题的需求.需要使用小程序消息推送,异步接受腾讯的图片验证回调.实在太多坑了. 相信10分钟看完本文的朋友,可以非常顺利避坑. 前期准备: 首先需要一个 ...
- 渐进式jpeg(progressive jpeg)图片及其相关 --图片的两种加载方式
渐进式jpeg(progressive jpeg)图片及其相关 一.基本JPEG(baseline jpeg)和渐进JPEG 网络上那些色色的照片都是.jpg格式的("色色"指 ...
随机推荐
- 全面系统Python3入门+进阶-1-4 Python的缺点
结束
- 常用OID(SNMP)
系统参数(1.3.6.1.2.1.1) OID 描述 备注 请求方式 .1.3.6.1.2.1.1.1.0 获取系统基本信息 SysDesc GET .1.3.6.1.2.1.1.3.0 监控时间 s ...
- Slf4j与log4j及log4j2、logbak的关系及使用方法
Slf4j与log4j及log4j2的关系及使用方法 slf4j slf4j仅仅是一个为Java程序提供日志输出的统一接口,并不是一个具体的日志实现方案,就比如JDBC一样,只是一种规则而已,所以单独 ...
- 【Leetcode_easy】961. N-Repeated Element in Size 2N Array
problem 961. N-Repeated Element in Size 2N Array solution: class Solution { public: int repeatedNTim ...
- JS扩展Array.prototype引发的问题及解决方法
遇到的问题 一上班收到个bug,写的表单联动插件在ie里面会出现js源码,当时有点意外,从没出现过这问题. 问题的原由 为什么会出现一个function呢?其它调用的插件的页面为什么没有这问题? 控制 ...
- 向多个git仓库提交
查看所有远程仓库 为了不用每次输密码,可以先配置ssh key 查看 添加远程仓库 git remote add origin1 git@other:YYYYYYYYYY/AA.git 向新的代码仓库 ...
- CEIWEI USBMonitor USB监控精灵 v2.3.2 USB过滤驱动 USB监控
CEIWEI USBMonitor USB监控精灵 是一款监控USB端口协议分析软件,用于监控和分析USB设备协议,可以拦截.记录USB软件程序操作USB设备的In.Out数据包.支持监控分析USB票 ...
- 高级UI-事件传递
事件传递在Android中有着举足轻重的作用,那么事件的传递在Android中又是怎么样实现的呢,在这里我们将进一步探讨Android的事件传递机制 从一个例子入手 首先是一个简单的onTouch和o ...
- 通过调用Windows本地RPC服务器bypass UAC
备战一个月比赛,导致近期都没啥时间更新博客,正好今天看到一篇通过调用本地RPC服务的文章,觉得非常有意思,就拿来充充博客. 在1.0版本的APPINFO.DLL中的RPC服务调用接口ID为:201ef ...
- Variational Auto-encoder(VAE)变分自编码器-Pytorch
import os import torch import torch.nn as nn import torch.nn.functional as F import torchvision from ...