本發明涉及人工智能的技術領域,特別是涉及一種高效的深度學習模型部署框架。
背景技術:
眾所周知,近幾年隨著人工智能的飛速發展,智能設備在監控、識別、檢測等領域發揮著重要作用,也涌現出許多優秀的方案和產品。而人工智能模型的部署是人工智能產品中繁瑣且重要的環節,為了提高模型的部署效率發明了一種高效的深度學習模型部署框架,該框架使用c/c++開發,使用json文本部署模型。目前在人工智能領域中,存在許多優秀的深度學習模型部署框架,如cmsis-nn,ncnn等,但該類的深度學習模型部署框架更多的是考慮通用性,因此在指定設備或產品上無法將模型性能發揮至極致,現有的深度學習模型部署框架仍處于開發和優化階段,如果將其用于產品的開發可能存在隱患且不利于后期維護,支持一鍵部署的模型較單一,大多數只支持熱門的網絡結構,如vgg系列、系列和yolo系列等,對于用戶自己搭建的網絡結構支持并不理想,且在跨平臺和多系統支持上具有局限性。
技術實現要素:
為解決上述技術問題,本發明提供一種融合現有深度學習算法庫的最優算法,可跨平臺,支持多系統,模型部署靈活、方便,易維護、管理和更新,在指定設備或產品中,可將模型的性能發揮至極致的高效的深度學習模型部署框架。
本發明的一種高效的深度學習模型部署框架,包括算法模塊、接口模塊、組織模塊、網絡模塊和模型模塊,算法模塊、接口模塊、組織模塊、網絡模塊和模型模塊的關系呈金字塔結構,算法模塊提供基礎算法作為整個深度學習框架的基礎,接口模塊對算法模塊進行組裝或二次封裝,為組織模塊提供易用、靈活的接口函數,起到橋梁的作用,組織模塊為整個深度學習框架的核心,通過解析json模型配置文件獲取模型的網絡信息,并根據模型的網絡信息導出模型參數,同時根據模型網絡各層間的順序調用相對應的接口函數,從而實現模型一鍵部署功能,網絡模塊為組織模塊的產物,網絡模塊提供當下熱門且實用的主干網絡,開發人員可直接將網絡模塊的主干網絡應用于開發過程中,模型模塊為整個深度學習框架的應用實例,由組織模塊或網絡模塊提供主干網絡,由接口模塊提供算法接口函數,由算法模塊提供基礎算法,開發人員可直接將該模塊中的模型用于開發過程。
本發明的一種高效的深度學習模型部署框架,算法模塊包括卷積、池化,全連接、圖像處理等算法,算法模塊作為深度學習框架的最底層,使用c語言和匯編語言編寫一個個獨立的算法,為整個深度學習框架提供算法基礎。
本發明的一種高效的深度學習模型部署框架,接口模塊使用函數指針的方式對算法進行組裝或二次封裝,從而使得接口函數變得靈活和易于調用。
本發明的一種高效的深度學習模型部署框架,組織模塊通過讀取json模型配置文件,獲取模型結構信息,在端時,通過讀取json文件的模型結構信息,將keras、或框架下的模型參數導出,并保存為特定文件格式,在c/c++端時,通過讀取json文件的模型結構信息、設備或產品性能信息和導出的模型參數,組建出一個可直接運行于c/c++端的深度學習網絡。
本發明的一種高效的深度學習模型部署框架,網絡模塊塊記錄和實現了目前實用、熱門的網絡結構,包括vgg系列、系列、系列、等主干網絡。
本發明的一種高效的深度學習模型部署框架,模型模塊記錄和實現了當前實用的網絡模型,包括mtcnn模型、模型、yolo-v3模型、人臉檢測識別模型等,用戶直接調用或修改模型參數即可將該模塊中的模型算法應用于指定設備或產品中。
本發明的一種高效的深度學習模型部署框架,整個深度學習框架以算法模塊為基礎,組織模塊為核心,各模塊間相互獨立、互不影響。
與現有技術相比本發明的有益效果為:以當前市面上最優的算法作為基礎,以json配置文件為紐帶,將算法以指定順序執行,實現了深度學習主干網絡在指定設備環境的組建和運行,實現了深度學習模型由端一鍵部署至指定設備的功能,同時模型模塊實現了實用模型算法的一鍵遷移檢測、識別和系統部署,是深度學習模型部署至指定設備環境的巨大創新發明,在實際開發部署中,開發人員只需要根據自己的模型結構、配置信息編寫json文件即可將訓練完成的模型部署至指定設備環境,降低了深度學習模型部署的難度,同時也提高了開發人員的工作效率以及深度學習模型算法的落地能力,模型部署采用json配置文件,當模型網絡結構發生變化時,只需要相應的修改json配置文件即可完成重新部署,易于維護、管理和更新。
附圖說明
圖1是本發明的框架各模塊間關系及結構示意圖;
圖2是框架的使用流程示意圖;
附圖中標記:1、算法模塊;2、接口模塊;3、組織模塊;4、網絡模塊;5、模型模塊。
具體實施方式
下面結合附圖和實施例c語言實現神經網絡算法,對本發明的具體實施方式作進一步詳細描述。以下實施例用于說明本發明,但不用來限制本發明的范圍。
如圖1至圖2所示,本發明的一種高效的深度學習模型部署框架,包括算法模塊1、接口模塊2、組織模塊3、網絡模塊4和模型模塊5,算法模塊1、接口模塊2、組織模塊3、網絡模塊4和模型模塊5的關系呈金字塔結構,收集當下通用算法庫及深度學習算法庫中最優的基礎算法、圖像處理算法及神經網絡算法,并將該類算法編寫為本框架中的基礎算法,作為整個深度學習框架的基礎,對算法模塊1中的基礎算法做二次封裝或組裝成新的網絡元件(如殘差網絡結構、網絡結構等),使得算法在組織模塊3中變得易用、靈活,編寫json一鍵網絡部署文件,文件內容分配置信息、網絡結構、訓練參數和模型性能四個部分:
配置信息包括運行系統(、linux、等)、編譯環境、編譯命令、網絡輸入尺寸和網絡輸出尺寸;
網絡結構包括卷積層信息、池化層信息、全連接層信息、層信息、卷積層信息、卷積層信息、激活函數信息、殘差網絡結構信息和網絡結構信息;
訓練參數包括學習率、優化器算法、優化器參數、損失函數信息、正則函數、正則系數、批次信息、訓練次數和隨機種子;
模型性能內有訓練集總樣本數、訓練集各類樣本數、驗證集總樣本數、驗證集各類樣本數、模型總map和模型各類別map;
在端,程序解析json文件,根據json文件中的網絡結構信息,將訓練完成的模型參數從、keras或深度學習框架中導出,并保存為本地的參數文件,其中,該參數文件的模型參數按層保存,每層的前半部分記錄對應層的網絡結構信息,后半部記錄該層的所有參數內容,在c/c++端,程序解析json文件,根據json文件中的配置信息、運行系統、編譯命令等在本框架中選擇最適合該系統的算法,同時根據json文件的網絡結構信息及對應的模型參數文件,利用本深度學習框架組建出模型的主干網絡并直接用于開發過程,在網絡模塊4中,已經編寫好網絡結構的json文件,開發人員只需按要求編寫配置信息內容,即可將訓練好的模型從端導出并直接應用于c/c++端,節省了編寫網絡結構信息的時間,在模型模塊5中,已經編寫好了整個模型算法程序,開發人員只需要修改配置信息內容即可將該模型算法用不同系統;如使用框架中的mtcnn用于人臉檢測,并將運行系統由改為,則只需要修改運行系統為和修改對應的編譯環境和編譯命令,本框架將根據配置信息生成文件,執行make命令即可將mtcnn人臉檢測模型部署至系統中。
此外,模型模塊5中的模型算法程序支持一鍵遷移檢測或識別其他物體,如使用mtcnn檢測行人,開發人員只需要使用mtcnn完成行人檢測模型訓練,并使用模型模塊5中mtcnn的json配置文件,將行人檢測模型參數導出至本地,然后將人臉檢測模型參數替換為行人檢測模型參數c語言實現神經網絡算法,即可得到一個基于mtcnn的行人檢測程序。
本發明的一種高效的深度學習模型部署框架,其以當前市面上最優的算法作為基礎,以json配置文件為紐帶,將算法以指定順序執行,實現了深度學習主干網絡在指定設備環境的組建和運行,實現了深度學習模型由端一鍵部署至指定設備的功能,同時模型模塊實現了實用模型算法的一鍵遷移檢測、識別和系統部署,是深度學習模型部署至指定設備環境的巨大創新發明。在實際開發部署中,開發人員只需要根據自己的模型結構、配置信息編寫json文件即可將訓練完成的模型部署至指定設備環境,這不僅極大地降低了深度學習模型部署的難度,同時也提高了開發人員的工作效率以及深度學習模型算法的落地能力。
本發明的一種高效的深度學習模型部署框架,以上所述所有部件的安裝方式、連接方式或設置方式均為常見機械方式,并且其所有部件的具體結構、型號和系數指標均為其自帶技術,只要能夠達成其有益效果的均可進行實施,故不在多加贅述。
本發明的一種高效的深度學習模型部署框架,在未作相反說明的情況下,“上下左右、前后內外以及垂直水平”等包含在術語中的方位詞僅代表該術語在常規使用狀態下的方位,或為本領域技術人員理解的俗稱,而不應視為對該術語的限制,與此同時,“第一”、“第二”和“第三”等數列名詞不代表具體的數量及順序,僅僅是用于名稱的區分,而且,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設備所固有的要素。
以上所述僅是本發明的優選實施方式,應當指出,對于本技術領域的普通技術人員來說,在不脫離本發明技術原理的前提下,還可以做出若干改進和變型,這些改進和變型也應視為本發明的保護范圍。