如何在Web應用裡消費SAP Leonardo的機器學習API

i042416發表於2019-07-14

去年5月的時候,Jerry曾經寫了一篇文章:使用Java程式消費SAP Leonardo的機器學習API,而最近另外做的一個專案,需要在Web應用裡做同樣的事情。

因為有了前一篇文章的鋪墊,避免了很多重複的工作量。本文還是選擇使用SAP Leonardo裡的一個Product Image Classification API,即給定一張產品的圖片,該API能識別出此產品的類別。

再回顧下這個API的功能:該API的模型是由SAP基於大約5萬張Icecat圖片訓練而成,能區分29種不同的類別,這些類別具體羅列於官方文件上,比如電腦顯示器,數碼相機,外部儲存裝置,鍵盤,液晶電視,手機充電器,筆記本和其他外設等等。如果我們消費這個API時指定的圖片代表的產品不屬於這29種類別之一,API的表現如何?先賣個關子,文末解答。

如何在Web應用裡消費SAP Leonardo的機器學習API

關於如何在api.sap.com裡找到這個API並且在API console裡測試,請參考Jerry之前的文章:使用Java程式消費SAP Leonardo的機器學習API。

這裡假定我們已經找到了該API,點選進入明細頁面,將API Key複製下來,後續的UI5應用需要使用到。

如何在Web應用裡消費SAP Leonardo的機器學習API


如何在Web應用裡消費SAP Leonardo的機器學習API

然後進入SAP雲平臺的Neo環境。Jerry這個練習,使用免費的SAP Cloud Platform Neo測試環境即可。

如何在Web應用裡消費SAP Leonardo的機器學習API

在Service列表裡找到WebIDE——我們將使用WebIDE進行UI5應用的開發。

如何在Web應用裡消費SAP Leonardo的機器學習API

Jerry已經開發好了一個UI5應用上傳到我的Github上了: https://github.com/i042416/MachineLearning-UI5

大家可以直接在WebIDE裡clone這個倉庫,或者把倉庫的內容以zip包的形式下載到本地,再使用WebIDE的本地Import功能匯入。

如何在Web應用裡消費SAP Leonardo的機器學習API


如何在Web應用裡消費SAP Leonardo的機器學習API

我們要告訴UI5應用這個API的url,因此在Neo環境裡建立一個Destination(作用和ABAP Netweaver事務碼SM59裡建立的Destination相同):

如何在Web應用裡消費SAP Leonardo的機器學習API

屬性如上圖所示,因為是Neo測試環境,所以url為對應的sandbox環境: https://sandbox.api.sap.com/ml

記下這個Destination名稱sapui5ml-api, 因為稍後的UI5程式碼裡需要使用。

記得維護額外的屬性WebIDEnabled為true,這樣該Destination才能在UI5應用裡被使用。點選Check Connection確保看到綠燈。

如何在Web應用裡消費SAP Leonardo的機器學習API

開啟WebIDE裡UI5工程裡的settings.json檔案,將您之前從API console裡拷貝的API Key貼上到此處:

如何在Web應用裡消費SAP Leonardo的機器學習API

在專案根目錄下的neo-app.json檔案裡,把型別為destination的target物件的名稱維護成之前在SAP Cloud Platform Cockpit裡建立的destination相同的名稱。

如何在Web應用裡消費SAP Leonardo的機器學習API

執行這個UI5應用,能看到如下介面:

如何在Web應用裡消費SAP Leonardo的機器學習API

做一些簡單的測試:

如何在Web應用裡消費SAP Leonardo的機器學習API

SAP Leonardo的機器學習API,識別出這張圖片有74.7%的可能性是一臺膝上型電腦,13.8%的可能性是鍵盤,11.3%的可能性是Tablets。

如何在Web應用裡消費SAP Leonardo的機器學習API

點選按鈕View JSON,能看到呼叫SAP Leonardo API返回的技術明細。

如何在Web應用裡消費SAP Leonardo的機器學習API

滑鼠的圖片也成功識別出來了:

如何在Web應用裡消費SAP Leonardo的機器學習API

本文開始曾經提到這個API能識別出29種不同的產品類別,現在換一種產品,如下圖:

如何在Web應用裡消費SAP Leonardo的機器學習API

這是Jerry小時候就很痴迷的《終結者》系列的T800,我在2017年回覆SAP社群上一篇部落格時也引用到了這款經典的模型,和阿諾德 - 施瓦辛格那句激勵無數中老年程式設計師的著名臺詞:I am old but I am NOT OBSOLETE

原文連結:  https://blogs.sap.com/2016/12/19/and-now-for-something-completely-different/

如何在Web應用裡消費SAP Leonardo的機器學習API

言歸正傳,如果希望SAP Leonardo的Product Image Classification API也能成功將T800識別出來,需要做些什麼?

如何在Web應用裡消費SAP Leonardo的機器學習API

答案是重新訓練模型。具體如何做,Jerry也還在研究,等研究完畢再分享。感謝閱讀。

要獲取更多Jerry的原創文章,請關注公眾號"汪子熙":


如何在Web應用裡消費SAP Leonardo的機器學習API


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24475491/viewspace-2650472/,如需轉載,請註明出處,否則將追究法律責任。

相關文章