工业视觉智能实战经验之IVI算法框架2.0
簡介:?工業(yè)視覺智能團隊在交付了多個工業(yè)視覺智能質檢項目后,發(fā)現了工業(yè)視覺智能的共性問題和解法,打造了工業(yè)視覺智能平臺,通過平臺的方式積累和提升工業(yè)視覺的通用能力。在平臺建設上最核心的能力是算法能力。算法能力包括不斷增強的單點算法能力和不斷擴充的新算法能力。那么如何將算法能力輸出到平臺呢?答案是算法框架。算法框架是算法能力的載體,通過它能夠將能力輸出到平臺。
來源 | 阿里技術公眾號
導語
工業(yè)視覺智能團隊在交付了多個工業(yè)視覺智能質檢項目后,發(fā)現了工業(yè)視覺智能的共性問題和解法,打造了工業(yè)視覺智能平臺,通過平臺的方式積累和提升工業(yè)視覺的通用能力。
在平臺建設上最核心的能力是算法能力。算法能力包括不斷增強的單點算法能力和不斷擴充的新算法能力。那么如何將算法能力輸出到平臺呢?答案是算法框架。算法框架是算法能力的載體,通過它能夠將能力輸出到平臺。同時通過算法框架,我們可以進行進行算法能力的研究和擴充。所以算法框架設計和演進對于算法能力不足的探查、算法能力增強、算法能力擴充和算法能力輸出都是至關重要的。
一 視覺AI框架應用在工業(yè)上的問題和我們的改進點
在圖像識別領域,分類、檢測、分割是使用最廣泛的算法。目前人臉、城市、醫(yī)療、工業(yè)、娛樂、安全等大量場景都需要圖像識別算法。在不同的場景或同個場景出現變化時,算法需要訓練或重新訓練。
現有的訓練框架的問題和我們的改進點:
-
任務兼容:
- 問題分析:一般是處理單一類型問題(如檢測框架、分類框架、分割框架),這樣導致訓練多個不同任務類型的算法(比如分類和檢測任務)時,往往需要使用多個框架。
- 改進點:我們將工業(yè)上應用的主流任務兼容在一個框架中。
-
操作解耦:
- 問題分析:一般在模型訓練時候數據處理、模型訓練和效果的評估往往是耦合的,這樣導致訓練時需要按照耦合的流程進行訓練,使用相同數據訓練時需要不斷重復處理數據,模型訓練和效果評估不能同時進行,評估過程占用訓練時間和資源導致無法高效執(zhí)行。現有框架一般是基于固定的學術數據集進行訓練,在訓練到指定時間進行模型評估。
- 改進點:我們將主要功能切分為八個模塊,可使用八個模塊構建需要的流程,流程構建過程靈活。本框架模塊之間是相互獨立的,可以獨立高效執(zhí)行。
-
評估展示:
- 問題分析:現有的訓練框架一般沒有評估效果展示功能或只有簡單的評估效果展示功能。由于現有訓練框架一般基于固定的學術數據集進行訓練,在評估時一般只做簡單的性能指標展示。這樣導致缺少訓練的模型評估效果展示或效果展示過于簡單,無法發(fā)現模型訓練和數據的問題。
- 改進點:我們在模型評估模塊提供了詳細且經過實戰(zhàn)經驗驗證科學的評估內容,并且可以在工業(yè)視覺智能平臺中展示,用戶可以發(fā)現模型訓練和數據本身的問題,進一步調整數據或訓練。
-
數據集分析:
- 問題分析:現有的訓練框架一般沒有數據集分析功能。這樣導致無法在訓練之前發(fā)現數據集的特點,只能使用默認配置或個人經驗去訓練模型。
- 改進點:我們設計的框架含有詳細和科學的數據集分析功能,并且對齊數據集分析和模型訓練模型推理過程的一致性,可以在訓練之前分析數據集的特征,減少盲目訓練的情況;
-
數據處理可視化調試:
- 問題分析:現有的訓練框架一般沒有數據處理和數據增強的可視化調試功能。這樣導致無法查看數據處理或數據增強的效果,無法確認單步數據處理效果和多部數據處理的疊加效果。
- 改進點:我們在數據載入時采用可擴展設計,將可視化模塊嵌入到流程中,可以任意節(jié)點查看數據效果。
-
部署對接:
- 問題分析:一般沒有與模型部署對接的部分。現有的訓練框架一般沒有與模型部署對接的部分。這樣導致自己開發(fā)與部署對接,過程工作量大,耗時耗力且容易出錯;如果是不同任務類型的算法部署,則上述工作量需要翻倍。
- 改進點:我們開發(fā)了模型轉換模塊和對應的一套模型部署框架和系統(tǒng),可以快速將模型轉換到可以部署的狀態(tài),并可以使用模型部署框架和系統(tǒng)運行。在多個任務中,本框架與對應配套部署框架已完成結果對齊,用戶無須進行相關開發(fā);
-
擴展性:
- 問題分析:現有的訓練框架模塊的擴展性不強,模塊增加操作時比較麻煩。這樣導致開發(fā)者難度提升,團隊合作開發(fā)難度大。
- 改進點:本框架大多數模塊基于可擴展模塊開發(fā),開發(fā)者需要按照要求開發(fā)操作即可嵌入到模塊中,降低開發(fā)難度且易于團隊開發(fā)。
二 IVI算法框架詳細介紹
IVI算法框架是一個模塊解耦可擴展的深度學習視覺模型訓練框架。該框架主要負責三個任務:分類、檢測、分割。該框架主要分為八個模塊:數據準備、配置生成、數據載入、數據集分析、模型訓練、模型推理、模型評估和模型轉換。數據準備模塊、數據載入模塊、數據集分析模塊、模型評估模塊是繼承于可擴展模塊的,模塊增加操作時只需要根據擴展模塊的要求編寫操作即可。開發(fā)者開發(fā)難度下降,團隊合作開發(fā)更順暢。
圖1:主要模塊示意圖
圖2:主要任務示意圖
圖3:可擴展模塊實現示意圖
可擴展模塊主要分為四個部分。流程配置文件描述模塊使用的算子和算子執(zhí)行的流程。算子執(zhí)行流程分為初始化、構建和執(zhí)行三種狀態(tài)。算子執(zhí)行流程在初始化時,會根據算子注冊表獲得已注冊的算子集合。算子執(zhí)行流程構建時,根據流程配置文件,尋找算子注冊流程中已注冊的算子,并根據流程配置文件的內容初始化算子,并根據流程配置文件組合算子執(zhí)行的流程。在算子執(zhí)行流程執(zhí)行時,根據算子執(zhí)行流程對輸入數據進行操作。可擴展模型的擴展性主要體現在以下算子新增的擴展性和算子執(zhí)行的擴展性兩個方面。算子新增的擴展性在增加新的算子時,只需要按照固定規(guī)則將算子加入到算子集合中即可。算子執(zhí)行的擴展性體現在算子執(zhí)行是根據配置文件描述進行的,配置文件描述可以對算子執(zhí)行順序、次數和參數等多方面進行控制。
以【阿里云的智能工業(yè)·工業(yè)視覺智能平臺】的一個訓練任務為例,如圖4所示。在平臺上開啟一個默認訓練任務,任務可以分為以下四個步驟:數據選擇、訓練、評估和模型提取。其中數據選擇部分會調用數據準備、配置生成、數據集分析的模塊。訓練部分會調用數據載入、模型訓練、模型推理和模型評估的模塊。評估部分會調用模型推理和模型評估模塊。模型提取部分會調用模型轉換模塊。
1 數據準備模塊
圖4:平臺訓練流程示意圖
圖5:數據準備模塊示意圖
數據準備模塊是繼承于可擴展模塊的。主要分為三個步驟。
- 第一步讀取數據配置文件。
- 第二步根據數據配置文件構建數據處理流程。
- 第三步進行多任務兼容的數據快速處理,根據數據處理流程將平臺標注數據轉換為多任務兼容的數據結構。多任務兼容的數據結構為多任務兼容的模型訓練提供基礎。
圖6:平臺數據準備示意圖
數據準備模塊的數據配置文件由默認配置文件和平臺交互信息融合獲得。如圖平臺數據準備示意圖所示,左側添加數據集表示選擇的數據集。右側標簽選擇頁面的勾選表示選擇的類別。右側標簽選擇頁面的操作對應數據準備模塊算子。當在平臺上添加數據集時會跳轉到下圖所示頁面,在此頁面可以勾選需要加入訓練的數據集。同時可以選擇數據集擴充倍數。
圖7:平臺添加數據集示意圖
圖8:數據準備模塊算子集合示意圖
數據準備模塊算子包括類別擴增、類別屏蔽、子圖切割、異常數據清洗、數據集劃分等算子。以類別擴增為例,如圖6所示,在阿里云的智能工業(yè)·工業(yè)視覺智能的平臺上,可以針對指定標簽進行擴充且擴充倍數可選擇(如圖9所示)。
圖9:平臺類別擴增倍數選擇示意圖
圖10:數據準備模塊處理示意圖
數據準備模塊如圖10所示,數據準備模塊獲得原始圖像和原始標注數據,構建數據處理流程并進行處理后,形成處理后圖像和多任務兼容格式訓練數據。多任務兼容格式訓練數據表示形成的訓練數據能夠同時被此框架中檢測、分割、分類等多種訓練任務使用。例如選擇了異常處理操作,處理后圖像和訓練數據中不會包含原始圖像中的異常圖像。例如選擇了子圖切割操作,處理后的圖像可能是原始圖像對應的子圖。如將處理后圖像和多任務兼容格式訓練數據傳到OSS存儲中,相同訓練任務可以選擇直接繼承數據。不需要再次調用數據準備模塊。解決了使用相同數據訓練時需要不斷重復處理數據的問題。
2 配置生成模塊
圖11:配置生成模塊示意圖
配置生成模塊如圖11所示,數據經過數據準備模塊處理后會生成描述文件。配置生成模塊接收默認配置、數據準備模塊結果和平臺配置信息后,形成全局配置。如圖12所示,平臺模型訓練時會進入此頁面。其中自定義訓練參數配置屬于平臺配置信息。平臺配置信息包括模型選擇配置、訓練高級參數配置和圖像預處理參數配置。如圖13所示,模型選擇配置負責訓練的加載的初始模型。如圖14所示,訓練高級參數配置負責訓練學習率、訓練迭代數等相關配置。如圖14所示。圖像預處理參數配置負責訓練時圖像的輸入分辨率、圖像增強等相關配置。全局配置是作為數據載入、數據集分析、模型訓練、模型推理、模型評估和模型轉換的配置文件。
圖12:平臺模型訓練相關配置入口示意圖
圖13:平臺模型訓練模型選擇配置示意圖
圖14:平臺模型訓練高級參數配置示意圖
圖14:平臺模型訓練圖像預處理參數配置示意圖
3 數據載入模塊
圖15:數據載入模塊示意圖
數據載入模塊是繼承于可擴展模塊的。如圖15所示,數據載入模塊分為三個步驟。
- 首先讀取全局配置文件,獲得數據載入相關的信息,其次根據全局配置文件構建數據載入處理流程,最后進行數據載入。數據載入的輸入數據是數據準備模塊產生的數據。數據載入讀取全局配置文件中相關內容,如是否使用專家數據、圖像預處理參數中的圖像輸入分辨率和數據增強的一些操作。
圖16:數據載入操作算子集合示意圖
- 數據載入模塊的第二步是構建數據載入流程。如圖16所示是數據載入的一些操作算子集合。數據載入流程根據配置信息從操作算子中選擇相應算子并串聯(lián)形成操作流程。數據載入模塊有兩種狀態(tài)(目前工業(yè)視覺智能云平臺未開啟此功能)。分別是運行狀態(tài)和調試狀態(tài)。運行狀態(tài)與其他模塊無交互。圖16中的效果可視化在調試狀態(tài)時使用,在數據載入流程的任何位置可以嵌入效果可視化模型,用來可視化當前圖像狀態(tài)、類別狀態(tài)、實例狀態(tài)。這樣就可以查看數據處理或數據增強的效果,確認單步數據處理效果和多部數據處理的疊加效果。圖17所示為實例擾動增強操作可視化的效果,可視化時將實例相關信息“畫”在圖像上,不同類別用不同顏色表示。每個框代表一個實例。經過實例擾動增強后,可以直觀看到實例的增加和實例在圖像中的情況。
圖17:數據載入操作算子可視化示意圖
4 數據集分析模塊
圖18:數據集分析模塊示意圖
數據集分析模塊是繼承于可擴展模塊的。如圖18所示,數據集分析是集成數據載入模塊的,分為四個步驟。
- 第一個步驟是讀取全局配置文件,獲得數據集分析相關的信息。比如圖像預處理參數中的圖像輸入分辨率和數據增強的一些操作。
- 第二步根據配置構建一個數據載入模塊的相關流程。
- 第三步根據配置構建分析算子集合。
- 第四步串聯(lián)數據載入和數據集分析算子集合進行處理(數據集分析算子集合如圖19所示)。處理完成后所有結果可以在工業(yè)視覺智能平臺的網頁上展示。
圖19:數據集分析算子合集示意圖
5 模型訓練模塊
圖20:模型訓練流程示意圖
圖21:平臺模型訓練展示示意圖
如圖20所示,模型訓練是集成數據載入模塊的,分為四個步驟。
- 第一個步驟是讀取全局配置文件,獲得模型訓練相關的信息:比如圖像預處理參數中的圖像輸入分辨率和數據增強的一些操作;比如高級參數配置中的總訓練迭代數、默認參數配置文件加載和模型保存間隔數;比如模型選擇中的預訓練模型。
- 第二步根據配置構建一個數據載入模塊的相關流程。
- 第三步根據配置構建算法模型和模型訓練流程。
- 第四步串聯(lián)數據載入和模型訓練流程并且運行。
如圖21所示,模型訓練會按照間隔數保存到本地或對應的OSS中,并且在平臺中會展示候選模型和實際產生時間。同時模型訓練的LOG文件也同步保存到本地或對應OSS中。模型訓練的損失值(LOSS)可以通過通訊的方式傳遞到工業(yè)視覺智能平臺的后端程序中,圖中LOSS曲線就是將訓練框架返回的損失值展示在前端。需要說明的是在此構建算法模型和模型訓練流程是兼容多種任務的,并且數據準備模型的數據是兼容多種任務的。這樣框架就可以進行多任務兼容的模型訓練。同時,因為數據集分析模塊和模型訓練模塊都是基于數據載入模塊的,所以數據集分析功能不僅可以按照原圖和標注進行分析,還能完全模擬訓練的數據處理方式進行分析。這樣就可以在訓練之前發(fā)現數據集的特點或者提前查看數據處理和數據增強操作的結果,根據數據分析結果不斷調整各種配置進行訓練。而不是只使用默認配置或者個人經驗去訓練模型,避免了盲目訓練。同時結合數據載入調試功能后,可以更深入地分析數據操作對數據集的影響,進一步提供算法優(yōu)化方案。
6 模型推理模塊
圖22:模型推理流程示意圖
如圖22所示,模型推理是集成數據載入模塊的,分為四個步驟。
- 第一個步驟是讀取全局配置文件,獲得模型推理相關的信息:比如圖像預處理參數中的圖像輸入分辨率等操作;比如模型訓練按照間隔保存的模型。
- 第二步根據配置構建一個數據載入模塊的相關流程。
- 第三步根據配置構建算法模型和模型推理流程。
- 第四步串聯(lián)數據載入和模型推理流程并且運行。模型推理的結果會保存到本地或者OSS中。
7 模型評估模塊
圖23:模型評估流程示意圖
模型評估模塊是繼承于可擴展模塊的。如圖23所示,模型評估是集成數據載入模塊的,分為四個步驟。
- 第一個步驟是讀取全局配置文件,獲得模型評估相關的信息,主要是需要評估的指標。
- 第二步根據配置構建一個數據載入模塊的相關流程,這里載入數據時不載入圖像,載入數據準備產生的GT結果(Ground Truth 結果、標注的真實結果)和模型推理產生的對應AI結果(算法預測的結果)。
- 第三步根據配置構建模型評估流程。
- 第四步串聯(lián)數據載入和模型評估流程并且運行。
模型推理的結果會保存到本地或者OSS中。模型訓練模塊、模型推理模塊、模型評估模塊獨立存在,評估過程不會占用訓練時間和資源,整體可以高效執(zhí)行。
圖24:模型評估整體評估部分示意圖
模型評估在工業(yè)視覺智能平臺上分為整體評估結果、詳細評估結果和檢測結果展示。
圖24所示是模型整體評估結果,左側展示了評估的圖像和標注數量,右邊展示了整體算法指標。圖中是目標檢測的評估結果,所以展示了不同IOU(交并比)下的mAP指標。
圖25所示是模型評估的詳細評估部分展示,左側可以調節(jié)詳細評估時不同類別的閾值,并且展示該類別的圖像數量和標注數量。右側是該類別在不同閾值下的召回率和精確度曲線。
如圖26所示,根據詳細評估中閾值設定,可以展示正確檢測、漏檢和誤檢三個部分,用來更加直觀地查看模型在不同閾值下的效果和問題。點擊正確檢測、漏檢、誤檢中的圖像,平臺會跳轉到如圖27的頁面,頁面展示了原圖、GT的框和類別、AI算法預測的框和類別,這樣可以單張地查看預測的結果和標注框的差距。工業(yè)視覺智能平臺可以進行多模型評估功能。
如圖28和圖9所示,可以選擇多個候選模型進行模型評估。可以看到本框架和平臺結合的模型評估除了進行學術算法指標的展示之外,還展示了不同閾值下的各項指標。和不同閾值下正確檢測、漏檢和誤檢的情況。
圖25:模型評估詳細評估部分示意圖
圖26:模型評估檢測結果部分示意圖
圖27:模型評估單張檢測結果示意圖
圖28:平臺多模型評估模型選擇部分示意圖
圖29:平臺多模型評估模型開始部分示意圖
8 模型轉換模塊
圖30:模型轉換模塊示意圖
模型轉換分為三個步驟。
- 第一步是讀取全局配置文件,比如圖像預處理參數中的圖像輸入分辨率等操作。
- 第二步根據全局配置文件中的信息,生成模型推理時使用的配置文件。
- 第三步將模型訓練保存的原始模型轉換成推理時可用的加密模型。
相關文件保存在本地或上傳到OSS。其中生成模型推理時的配置文件和加密模型都是和對應模型推理庫對應配合設計的,能夠直接使用。這樣用戶不需要開發(fā)與部署對接,減輕了工作量。并且本框架是兼容不同任務類型的算法的訓練。模型和任務相關信息會被保存在配置文件中。
三 總結
本文章主要介紹了工業(yè)視覺智能團隊實戰(zhàn)經驗中設計和演化出來的IVI算法框架,并結合公共云平臺功能做了更詳細的介紹。而在工業(yè)視覺智能實戰(zhàn)中,我們也會遇到一些工業(yè)視覺智能場景業(yè)務形成的圖像域差異、圖像分辨率、目標缺陷形態(tài)、圖像背景干擾的算法上的挑戰(zhàn),在不斷分析和實驗后我們的算法也往更高精度、更高效和工業(yè)內更通用方向不斷演化。同時因為工業(yè)視覺智能場景業(yè)務形成的模型更新需求頻繁、算法定制化高、算法精度高、需求響應速度要求高等問題,我們在算法模型組合、算法方案設計、算法方案評估、行業(yè)產品化方面也有了自己的算法模型組合的產品和整套的方法論。
原文鏈接
本文為阿里云原創(chuàng)內容,未經允許不得轉載。
總結
以上是生活随笔為你收集整理的工业视觉智能实战经验之IVI算法框架2.0的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 独家 | 2021双11背后的数据库硬核
- 下一篇: 云原生引领全云开发时代