乐趣区

如何在Web应用里消费SAP-Leonardo的机器学习API

去年 5 月的时候,Jerry 曾经写了一篇文章:使用 Java 程序消费 SAP Leonardo 的机器学习 API,而最近另外做的一个项目,需要在 Web 应用里做同样的事情。

因为有了前一篇文章的铺垫,避免了很多重复的工作量。本文还是选择使用 SAP Leonardo 里的一个 Product Image Classification API,即给定一张产品的图片,该 API 能识别出此产品的类别。

再回顾下这个 API 的功能:该 API 的模型是由 SAP 基于大约 5 万张 Icecat 图片训练而成,能区分 29 种不同的类别,这些类别具体罗列于官方文档上,比如电脑显示器,数码相机,外部存储设备,键盘,液晶电视,手机充电器,笔记本和其他外设等等。如果我们消费这个 API 时指定的图片代表的产品不属于这 29 种类别之一,API 的表现如何?先卖个关子,文末解答。

关于如何在 api.sap.com 里找到这个 API 并且在 API console 里测试,请参考 Jerry 之前的文章:使用 Java 程序消费 SAP Leonardo 的机器学习 API。

这里假定我们已经找到了该 API,点击进入明细页面,将 API Key 复制下来,后续的 UI5 应用需要使用到。


然后进入 SAP 云平台的 Neo 环境。Jerry 这个练习,使用免费的 SAP Cloud Platform Neo 测试环境即可。

在 Service 列表里找到 WebIDE——我们将使用 WebIDE 进行 UI5 应用的开发。

Jerry 已经开发好了一个 UI5 应用上传到我的 Github 上了:https://github.com/i042416/Ma…

大家可以直接在 WebIDE 里 clone 这个仓库,或者把仓库的内容以 zip 包的形式下载到本地,再使用 WebIDE 的本地 Import 功能导入。


我们要告诉 UI5 应用这个 API 的 url,因此在 Neo 环境里创建一个 Destination(作用和 ABAP Netweaver 事务码 SM59 里创建的 Destination 相同):

属性如上图所示,因为是 Neo 测试环境,所以 url 为对应的 sandbox 环境:https://sandbox.api.sap.com/ml

记下这个 Destination 名称 sapui5ml-api, 因为稍后的 UI5 代码里需要使用。

记得维护额外的属性 WebIDEnabled 为 true,这样该 Destination 才能在 UI5 应用里被使用。点击 Check Connection 确保看到绿灯。

打开 WebIDE 里 UI5 工程里的 settings.json 文件,将您之前从 API console 里拷贝的 API Key 粘贴到此处:

在项目根目录下的 neo-app.json 文件里,把类型为 destination 的 target 对象的名称维护成之前在 SAP Cloud Platform Cockpit 里创建的 destination 相同的名称。

运行这个 UI5 应用,能看到如下界面:

做一些简单的测试:

SAP Leonardo 的机器学习 API,识别出这张图片有 74.7% 的可能性是一台笔记本电脑,13.8% 的可能性是键盘,11.3% 的可能性是 Tablets。

点击按钮 View JSON,能看到调用 SAP Leonardo API 返回的技术明细。

鼠标的图片也成功识别出来了:

本文开始曾经提到这个 API 能识别出 29 种不同的产品类别,现在换一种产品,如下图:

这是 Jerry 小时候就很痴迷的《终结者》系列的 T800,我在 2017 年回复 SAP 社区上一篇博客时也引用到了这款经典的模型,和阿诺德 – 施瓦辛格那句激励无数中老年程序员的著名台词:I am old but I am NOT OBSOLETE

原文链接: https://blogs.sap.com/2016/12…

言归正传,如果希望 SAP Leonardo 的 Product Image Classification API 也能成功将 T800 识别出来,需要做些什么?

答案是重新训练模型。具体如何做,Jerry 也还在研究,等研究完毕再分享。感谢阅读。

要获取更多 Jerry 的原创文章,请关注公众号 ” 汪子熙 ”:

退出移动版