ModelArts模型導入tensorflow frozenGraph格式模型

      網友投稿 844 2022-05-30

      背景:

      線下有一個Tensorflow frozenGraph格式的yolov3模型, 并且已經有推理代碼demo.py可以加載模型并進行推理

      問題:

      如何導入到ModelArts模型管理中?

      文中引用到的參考代碼已保存在附件中

      1????? 本地代碼介紹

      本地代碼結構如下:

      其中demo.py是推理入口腳本,demo.py調用了yolov3_utils.py中的方法。frozen_darknet_yolov3_model2.pb是需要導入的模型文件。

      2? Modelarts推理代碼結構

      適配模型導入后的代碼結構如下

      l? 所有的文件需要保存在model的目錄下,然后上傳到obs

      l? config.json用于定義容器的執行環境與依賴的python包。

      l? demo.py變為了customize_service.py

      3 代碼遷移

      3.1????? ModelArts模型導入都做了哪些事情?

      l? 通過讀取config.json的runtime字段信息,后臺啟動一個runtime對應的docker鏡像,并在docker鏡像中安裝config.json中定義的依賴python包。

      l? 然后將obs上配置的模型文件目錄整體拷貝到docker鏡像中,放到指定的目錄下。

      l? Docker鏡像中有推理框架,自動加載customize_service.py中的方法,初始化,對應的customize_service.py中定義的__init__方法也會被執行,如果customize_service.py沒有覆寫__init__方法,那么會執行框架原有的init方法,對模型進行加載。

      l? 服務啟動,等待傳入推理數據。

      3.2 ? ?? 編寫config.json文件

      config.json主要功能是定義模型運行環境信息,例如如果我推理代碼使用了numpy的版本是1.15.0可以在配置文件中添加如下內容。

      Runtime字段指定了是否使用帶cuda的docker環境,如果模型是基于python 3.6 tensorflow 1.13 gpu環境構建的,這個時候runtime字段就要選擇

      Config.json中的信息內容參考如下鏈接,

      https://support.huaweicloud.com/engineers-modelarts/modelarts_23_0092.html

      一般來說物體檢測和圖像分類的輸入輸出都是固定,因此可以直接運行一個預置算法,預置算法默認會將config.json進行輸出,直接復用就可以。

      3.3 ? ?? 編寫customize_service.py

      參考文檔 https://support.huaweicloud.com/engineers-modelarts/modelarts_23_0093.html

      首先自定義的代碼需要繼承一個固定的類,這個和框架有關,例如我當前使用的tensorflow框架,那么我需要繼承的類是

      在代碼中實際上這樣體現,我創建了一個新的類,類名為 Yolov3Service()這個類名隨便起,只要是你繼承了TfServingBaseService這個類,框架就知道了你這個類下面的方法就是你自己定義的方法。運行時,框架能夠調用到你的方法。

      ModelArts推理框架將推理服務分成了4個流程。分別是

      __init__(self, model_name, model_path):此方法只會在服務啟動時調用一次,可以在此方法內實現模型的加載,變量初始化。如果是tensorflow savedmodel格式的模型,可以不覆寫此方法,框架默認的__init__方法會自動加載模型。

      model_name沒什么用,model_path是系統層傳進來的,這個目錄是此腳本所在docker容器中的運行目錄, model_path=os.path.abspath(__file__)

      _preprocess(self, data):前處理,在推理請求前調用,用于將API接口用戶原始請求數據轉換為模型期望輸入數據。

      ModelArts模型導入tensorflow frozenGraph格式模型

      _inference(self, data):實際推理請求方法

      _postprocess(self, data):后處理方法,在推理請求完成后調用,用于將模型輸出轉換為API接口輸出

      _preprocess,_inference,_postprocess這三個方法會在每次推理時調用,并且以此順序進行調用。

      3.3.1??????? 依賴包導入

      customize_service.py相比demo.py,依賴包增加導入紅框中的內容

      入參由tf.app.flags.FLAGS變為通過環境變量獲取,例如demo.py里面通過

      進行動態參數的傳遞而customize_service.py通過如下方式進行入參的解析。

      此環境變量在模型部署時傳入

      當然這些傳參也可以硬編碼

      3.3.2 ? ? ?? __init__編寫

      Demo.py中初始化模型邏輯如下

      customize_service.py遷移后的代碼為

      Demo.py 55行到60行被簡化為tf.ConfigProto(),因為云上一個模型占用一個GPU,所以不需要設置gpu顯存使用率。

      Demo.py 67行對應customize_service.py 43行,session被保存起來,因為線上推理服務需要重復的使用

      customize_service.py 36行通過model_path和model_filename,對于模型文件進行加載。為什么要進行路徑拼接,請參考3.1章節

      3.3.3 ? ? ? _preprocess編寫

      Demo.py里面對于圖片進行了resize

      customize_service.py遷移后的代碼為

      和讀取本地文件不同,_preprocess收到的是一個data數組,里面存的是圖片的信息。所以這里要對于每一個元素進行遍歷。這次這么做的好處就是支持帶batchsize的推理,一次可以傳入多張圖片。

      3.3.4 ? ? ?? _inference編寫

      Demo.py里面直接調用了session對文件進行了推理

      customize_service.py遷移后的代碼為

      3.3.5 ? ? ?? _postprocess編寫

      Demo.py里面

      進行了非極大值抑制,然后將推理獲得的坐標等比例擴大為原始尺寸。

      對應customize_service.py的63行和74行。這里的代碼比較多,是因為要將返回值構建成config.json定義的結構。

      3.4 ? 其推理模型編寫教程

      https://bbs.huaweicloud.com/forum/thread-66858-1-1.html

      附件: frozengraph模型導入demo.zip 4.29KB 下載次數:2次

      AI開發平臺ModelArts

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:從零開始造Spring05---實現spring注解-1
      下一篇:通用軟件快速開發平臺對企業信息化的影響
      相關文章
      久久久久亚洲爆乳少妇无 | 亚洲综合色婷婷七月丁香| 国产成人亚洲综合网站不卡| 亚洲制服在线观看| 亚洲国产成人精品无码区在线秒播 | 亚洲人成网站色7799| 亚洲一区二区三区丝袜| 亚洲国产系列一区二区三区| 2020国产精品亚洲综合网| 中日韩亚洲人成无码网站| 亚洲偷自拍另类图片二区| 亚洲爆乳无码精品AAA片蜜桃| 亚洲永久网址在线观看| 亚洲欧美国产日韩av野草社区| 亚洲精品日韩一区二区小说| 亚洲爆乳无码专区www| 国产精品自拍亚洲| 亚洲精品高清在线| 中文字幕亚洲一区二区va在线| 亚洲香蕉成人AV网站在线观看| 亚洲热妇无码AV在线播放| 亚洲精品午夜国产VA久久成人| 亚洲成Av人片乱码色午夜| 亚洲人成电影在线天堂| 亚洲自偷自拍另类图片二区| 亚洲成人一级电影| 中中文字幕亚洲无线码| 亚洲免费综合色在线视频| 亚洲AV伊人久久青青草原| 在线观看国产区亚洲一区成人| 久久91亚洲人成电影网站| 久久久久亚洲AV无码麻豆| 亚洲国产理论片在线播放| 亚洲熟妇AV一区二区三区浪潮 | 亚洲日本一线产区和二线 | 夜色阁亚洲一区二区三区| 在线精品亚洲一区二区三区| 亚洲AV电影院在线观看| 亚洲国产成人久久精品app| 亚洲熟妇无码一区二区三区导航| 丰满亚洲大尺度无码无码专线|