共计 4272 个字符,预计需要花费 11 分钟才能阅读完成。
笔者在 SAP 成都研究院工作十五余年,也曾加入过一些基于 SAP Business Technology Platform(中文名称为 SAP 业务技术平台,以下简称 SAP BTP) 的 AI 服务的我的项目开发和原型验证。本文将这些对于 AI 的我的项目教训分享进去,心愿社区内的 AI 专家不吝赐教。
SAP BTP 将智能企业应用程序与数据库和数据管理、剖析、集成和扩大性能整合到一个平台中,实用于云环境和混合环境,包含数百个用于 SAP 和第三方应用程序的预构建集成。其中之一便是 SAP AI Business Services.
如何在 Java 程序里生产 SAP AI 服务
这个我的项目的背景如下:开发一个 Java 程序,用户能够上传一张图片,该 Java 程序调用 SAP AI API,后者会应用事后训练好的机器学习模型,对该图片进行辨认,给用户返回一个文本格式的响应信息,通知用户辨认后果。
上面是具体的实现步骤。
拜访 https://api.sap.com, 点击 API:
抉择 SAP Leonardo Machine Learning – Functional Services:
Functional Services 类别里抉择图像识别 AI 服务,即 Product Image Classification API:
该 API 模型是由 SAP 基于大概 5 万张 Icecat 图片训练而成,能辨别 29 种不同的产品类别,这些类别具体能够在官网文档上查问到,比方电脑显示器,数码相机,内部存储设备,键盘,液晶电视,手机充电器,笔记本和其余外设等等等。
能够关上图像识别 API 的技术规范页面,蕴含 API Model Schema 介绍,即调用 API 后,返回的响应构造里蕴含的字段名称以及数据类型。
该界面还嵌入了一个小型的 API 调用控制台,能够间接在控制台里抉择上传一个本地图形文件,点击 Try it out 按钮来体验 API 的成果。
用下图这张图片进行测试:
在控制台里看到申请解决胜利,API 判断进去该图片有 97% 的可能性是一台 notebook.
API 测试通过之后,下一步是在 Java 程序里进行生产。在 API 控制台的右上角有一个按钮 Download SDK,点击之后将 SDK 下载到本地,能够看到该 SDK 是一个基于 Gradle 的 Java 我的项目。因而咱们须要下载 Maven 和 Gradle 并实现环境变量配置。
Java 开发环境就绪后,应用 Eclipse 的 import 性能,将 SDK 导入到 Eclipse 里。导入实现后如下图所示:红色区域是 AI Service SDK 自带的代码,蓝色区域是笔者手动创立的代码,用于调用 API 并打印后果。
编辑根目录下的 pom.xml, 将如下依赖关系保护进去:
com.sap.apibhub.sdk, 版本号 1.0.0
在我的项目根目录下执行 Maven 命令 mvn install, 确保我的项目胜利构建。至此,能够开始编写 Java 代码应用 SAP AI SDK 来调用 AI API 了。
SDK 封装了底层 HTTP 申请的发送和响应的解析等细节,应用起来十分简捷。第 15 行的 inferenceSyncPost 函数,接管一个本地 File 对象,而后向 SAP AI Service Endpoint 发送 HTTP 申请。
第 8 行的 API key,能够从 API 控制台取得:
执行 Java 利用,在 Eclipse 控制台打印出的输入,AI Service 判断这张图片有 97% 的可能性是一个 notbook:
如何在 Web 利用里生产 SAP AI 服务
登录 SAP 云平台,关上 WebIDE:
因为是在浏览器环境里应用 JavaScript 调用远端的 AI API,为了防止跨域问题,须要在云平台里创立一个 Destination,作用和 ABAP Netweaver 事务码 SM59 里创立的 Destination 相似,所有的 HTTP Request 和 Response 都经由该 Destination.
属性如上图所示,url 保护为对应的 sandbox 环境:https://sandbox.api.sap.com/ml
记下这个 Destination 的名称 sapui5ml-api, 因为稍后的 Web 利用的 JavaScript 代码里须要应用。
保护额定的属性 WebIDEnabled 为 true,这样该 Destination 能力在 WebIDE 应用环境中被应用。点击 Check Connection 确保看到绿灯,表明 SAP 云平台 Destination 同 AI Service Endpoint 的连贯处于可用状态。
关上 WebIDE 里 Web 利用工程里的 settings.json 文件,将之前从 API 控制台里拷贝的 API Key 粘贴到此处:
在我的项目根目录下的 neo-app.json 文件里,把类型为 destination 的 target 对象的名称,保护成之前在 SAP 云平台里创立的 Destination 雷同的名称 sapui5ml-api:
运行这个 Web 利用,能看到如下界面:
针对这个 Web 利用做一些简略的测试,将上面这张图片,上传到 Web 利用去:
SAP AI API,辨认出这张图片有 74.7% 的可能性是一台笔记本电脑,13.8% 的可能性是键盘,11.3% 的可能性是 Tablets.
点击 Web 利用的按钮 View JSON,能看到 AI 服务返回的技术明细。
如何对 SAP 云平台上的机器学习模型进行从新训练
如果用户通过前文形容的 Java 利用或者 Web 利用上传的图片类别,并不被 SAP AI 服务当时训练好的模型所反对,咱们能够自行对 AI 服务的机器学习模型进行从新训练。
假如咱们冀望 Product Image Classfication 机器学习模型可能辨认各式各样的花。首先得筹备大量不同类型的花的图片。Tensorflow 官网上,曾经体贴地给想尝试从新训练 AI 模型的学习者们,提供了一个做练习用的压缩包,外面蕴含了大量各式花的图片:
http://download.tensorflow.or…
用于从新训练 AI 模型的数据集,必须合乎下图所示的层级构造,即 training, validation 和 test 三个文件夹上面,别离蕴含以产品类别命名的子文件夹,且数据规模之比为 8:1:1.
SAP 云平台 service key 里蕴含了一个 IMAGE_RETRAIN_API_URL,能够用来获取从新训练 AI 模型须要上传数据集的在线存储 url:
向这个 url 发送一个 HTTP Get 申请,失去在线存储的 url:
把这个 url 粘贴到浏览器里,输出 Postman 里返回的 accessKey 和 secretKey 登录,就能以 Web 的形式拜访这个在线存储了:
下一步是把本地的训练文件,上传到这个部署在 AWS 的在线存储下来。
首先用命令行 mc config host 定义一个名为 sapjerrys3 的近程站点,将上一步从 Postman 取得的 AWS 在线存储 url,accessKey 和 secret 绑定到这个站点上:
而后应用命令行上传文件:
mc.exe cp -r C:\Code\MachineLearningStudy\flowersjerry sapjerrys3\data
大略十几分钟后,文件上传完毕:
此时能够从浏览器端,看到 AWS 在线存储上传完毕的训练文件。
从新训练的数据集就绪之后,下一步就能够通过后台作业的形式,提交一个模型从新训练申请了。应用 Postman 发送一个 HTTP Post 申请,启动模型从新训练的后台作业。
应用命令行查问后台作业状态,待其状态变为 SUCCEEDED, 阐明模型训练曾经完结了。
模型从新训练结束后,对其进行生产,url 格局为:
https://mlfinternalproduction…<model name>/versions/1
应用一张向日葵图片:
将其作为 HTTP Post 的参数,发送给从新训练结束的模型 flowerjerrymodel,失去的结果显示,AI Service 认为这张图片有大概 87% 的可能性是一棵向日葵(Sunflower)。
最初,咱们来看一个 AI 服务在企业智能服务 (Intelligent Serbice Scenario) 场景中的具体利用。
一位培修工程师承受客户的培修申请,上门培修某设施,发现该设施某整机损坏了。假如这位技师因为种种原因,没能依据教训辨认出该整机的型号。此时技师掏出手机,给整机拍摄一张图片,通过手机上安装的 SAP 智能服务解决方案(比方本文之前形容的 Java 程序和 Web 利用),通过 AI API,自动识别出整机的精确型号,返回给培修工程师。
SAP 云平台 AI 服务,接管到培修工程师上传的图片后,将该图片的特征向量提取进去,通过平台上基于海量数据集训练好的模型,辨认出精确型号。
特征向量的提取,从数学上说,即通过某种算法,把输出图片的二进制流,转换成一个向量 (一维矩阵) 的过程。
以下图梯形和圆形为例,咱们把图形平均地分成 9 个区域,在图形核心察看每个区域内图形单元的梯度方向,就能够实现降维,把二维图像以一个一维矩阵来示意。
对于基于 SAP AI 服务开发应用程序的编程人员来说,无需理解图片特征向量提取的具体算法,只需通过 Restful API 调用的形式,把待提取特征向量的图片推送给 AI Service Endpoint,就能失去特征向量输入。
通过如下 url 进入 SAP AI Service 中无关图片特征向量提取服务的测试控制台和帮忙文档:
https://api.sap.com/api/img_f…
从控制台上传一张本地图片,点击 Execute 按钮:
失去了输入的特征向量:
有了特征向量后,咱们再回到正在探讨的企业智能服务场景。咱们利用 SAP AI 服务的另一个和图片解决相干的人工智能服务:图片类似度评分(Inference Service for Similarity Scoring)。
这个 图片类似度评分 AI API 的输出须要两个压缩包。第一个压缩包内文件内容是一系列特征向量,来自培修工程师上传的图片文件。第二个压缩包里寄存的是型号为 A,B,C… 等整机图片的特征向量。
如上图所示,为简略起见,第二个压缩包我只寄存了两个文件,别离寄存的是整机型号 A 和型号 B 的特征向量。
应用 Postman 调用 API,传入这两个压缩包:
失去的结果表明,培修工程师上传的图片和型号 A 的类似系数简直靠近 1,那么显然,该图片代表型号 A。
当然,除了间接上传蕴含了图片特征向量的压缩文件之外,将这些文件蕴含的特征向量内容以 JSON 字符串的形式作为输出,调用 API 也是一种通用的形式,JSON 字符串的格局在 SAP 官网里有具体阐明,这里不再赘述。
心愿本文介绍的这些 SAP AI API 的应用场景对大家有所帮忙,感激浏览。