手把手教你在Modelarts平臺上進行視頻推理

摘要:爲了方便小夥伴們進行視頻場景的AI應用開發,Modelarts推理平臺將視頻推理場景中一些通用的流程抽取出來預置在基礎鏡像中,小夥伴們只需要簡單地編寫預處理及後處理腳本,便可以像開發圖片類型的AI服務一樣開發視頻類型的AI服務了。

本文分享自華爲雲社區《在Modelarts平臺上進行視頻推理》,原文作者:HW007。

熟悉Modelarts推理的小夥伴都知道,在Modelarts平臺上可以通過簡單地定製模型的預處理、推理及後處理腳本,就可以輕鬆的部署一個AI服務,對圖片、文本、音視頻等輸入進行推理。但是對於視頻類型的推理,之前需要用戶在自己的腳本中進行視頻文件下載、視頻解碼、並自己將處理後的文件傳到OBS中。爲了方便小夥伴們進行視頻場景的AI應用開發,Modelarts推理平臺將視頻推理場景中一些通用的流程抽取出來預置在基礎鏡像中,小夥伴們只需要簡單地編寫預處理及後處理腳本,便可以像開發圖片類型的AI服務一樣開發視頻類型的AI服務了。

一、總體設計說明

提取視頻場景的通用推理流程如下:

如上圖,視頻處理場景的流程可分爲“視頻源輸入”、“視頻解碼”、“預處理”、“模型推理”、“後處理”、“推理結果輸出”六個部分。其中“視頻源輸入”、“視頻解碼”、“推理結果輸出”三個灰色的部分Modelarts已經提前準備好。“預處理”、“模型推理”、“後處理”三個部分可由用戶自由定製,具體定製方法如下:

1)定製模型:Modelarts已經提供好模型加載的方法,用戶只需要將自己“saved_model”格式的模型放置到指定的model目錄即可。

2)定製預處理:Modelarts會將解碼後的視頻幀數據提供給用戶,用戶只需通過重寫“customize_service.py”中“VideoService”類的靜態方法“_preprocess”便好,“_preprocess”函數的入參以及對出參的約束如下:

3)定製後處理:Modelarts會將模型推理後的輸出及解碼後的視頻幀數據提供給用戶,用戶只需通過重寫“customize_service.py”中“VideoService”類的靜態方法“_postprocess”便好,“_postprocess”函數的入參以及對出參的約束如下:

二、Demo體驗

1)下載本文附件,如下圖,附件提供了一個已調試OK的視頻推理模型包“model”文件夾,同時也提供了基於tox框架寫好的驗證用例,供用戶線下調試自己模型包是否OK。

2)將附件包中的“model”文件夾傳到華爲雲OBS中。

將附件包中的“test/test_data/input”、“test/test_data/output”文件夾放到華爲雲OBS與之前“model”文件夾放置同級的目錄下。

3)導入模型:在Modelarts導入模型界面,選擇從OBS導入,選擇剛纔傳到OBS中的model目錄。如下圖所示:

按下面操作配置好模型的各個配置後點擊創建模型:

可以看到模型創建成功:

4).部署服務,將上述模型部署爲在線服務,部署中要選擇有GPU的資源節點(公共池和專屬池都可以):

可以看到服務已經部署成功:

5)創建作業:在服務界面選擇創建作業

選擇輸入視頻,選到步驟2)中上傳到OBS中的input文件夾中的視頻文件如下:

選擇輸出路徑,選到步驟2)中上傳到OBS中的output文件夾如下:

6)等待視頻處理完成:

查看OBS中的output文件夾,可看到視頻已被拆成圖片後的推理結果了。

7)用戶根據自己需要,更換model文件夾下的“saved_model”格式的模型文件,並修改“customize_service.py”中的“_preprocess”和“_postprocess”函數來完成自己的業務邏輯。修改完後可以先運行“test/run_test.sh”來提前驗證下修改後的模型包是否能正常推理,待線下調試好,可正常推理後再按上述步驟將模型包提交到OBS中部署成Modelarts服務。

其中,視頻推理的模型包要求如下:

模型包結構要求:

└── model

├── config.json (必須,Modelarts推理相關的配置文件)

├── customize_service.py (必須,推理文件)

├── saved_model.pb (必須,SavedModel格式的模型文件)

└── variables (必須,SavedModel格式的模型文件)

├── variables.data-00000-of-00001

└── variables.index

其中config.json 文件的格式遵循Modelarts的規範,https://support.huaweicloud.com/engineers-modelarts/modelarts_23_0092.html

目前,只有tensorflow的“tf1.13-python3.7-gpu-async”runtime支持視頻推理,即config.json文件中的"model_type"字段必須爲"TensorFlow", "runtime"字段必須爲 "tf1.13-python3.7-gpu-async"。

“customize_service.py”文中必須有一個“VideoService”類,“VideoService”類必須有兩個靜態方法“_preprocess”和“_postprocess”,相應的函數簽名約束如下:

 

點擊關注,第一時間瞭解華爲雲新鮮技術~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章