SAP Leonardo圖片處理相關的機器學習服務在SAP智慧服務場景中的應用
- 2019 年 10 月 4 日
- 筆記
版權聲明:本文為部落客原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
本文鏈接:https://jerry.blog.csdn.net/article/details/100768981
本文作為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上的機器學習服務有所啟發,感謝閱讀。