工業視覺智能實戰經驗之IVI算法框架2.0

阿里云云棲號 發佈 2021-10-18T00:13:38+00:00

導語工業視覺智能團隊在交付了多個工業視覺智能質檢項目後,發現了工業視覺智能的共性問題和解法,打造了工業視覺智能平台,通過平台的方式積累和提升工業視覺的通用能力。在平台建設上最核心的能力是算法能力。算法能力包括不斷增強的單點算法能力和不斷擴充的新算法能力。

導語

工業視覺智能團隊在交付了多個工業視覺智能質檢項目後,發現了工業視覺智能的共性問題和解法,打造了工業視覺智能平台,通過平台的方式積累和提升工業視覺的通用能力。

在平台建設上最核心的能力是算法能力。算法能力包括不斷增強的單點算法能力和不斷擴充的新算法能力。那麼如何將算法能力輸出到平台呢?答案是算法框架。算法框架是算法能力的載體,通過它能夠將能力輸出到平台。同時通過算法框架,我們可以進行進行算法能力的研究和擴充。所以算法框架設計和演進對於算法能力不足的探查、算法能力增強、算法能力擴充和算法能力輸出都是至關重要的。

一 視覺AI框架應用在工業上的問題和我們的改進點

在圖像識別領域,分類、檢測、分割是使用最廣泛的算法。目前人臉、城市、醫療、工業、娛樂、安全等大量場景都需要圖像識別算法。在不同的場景或同個場景出現變化時,算法需要訓練或重新訓練。

現有的訓練框架的問題和我們的改進點:

  • 任務兼容:問題分析:一般是處理單一類型問題(如檢測框架、分類框架、分割框架),這樣導致訓練多個不同任務類型的算法(比如分類和檢測任務)時,往往需要使用多個框架。改進點:我們將工業上應用的主流任務兼容在一個框架中。
  • 操作解耦:問題分析:一般在模型訓練時候數據處理、模型訓練和效果的評估往往是耦合的,這樣導致訓練時需要按照耦合的流程進行訓練,使用相同數據訓練時需要不斷重複處理數據,模型訓練和效果評估不能同時進行,評估過程占用訓練時間和資源導致無法高效執行。現有框架一般是基於固定的學術數據集進行訓練,在訓練到指定時間進行模型評估。改進點:我們將主要功能切分為八個模塊,可使用八個模塊構建需要的流程,流程構建過程靈活。本框架模塊之間是相互獨立的,可以獨立高效執行。
  • 評估展示:問題分析:現有的訓練框架一般沒有評估效果展示功能或只有簡單的評估效果展示功能。由於現有訓練框架一般基於固定的學術數據集進行訓練,在評估時一般只做簡單的性能指標展示。這樣導致缺少訓練的模型評估效果展示或效果展示過於簡單,無法發現模型訓練和數據的問題。改進點:我們在模型評估模塊提供了詳細且經過實戰經驗驗證科學的評估內容,並且可以在工業視覺智能平台中展示,用戶可以發現模型訓練和數據本身的問題,進一步調整數據或訓練。
  • 數據集分析:問題分析:現有的訓練框架一般沒有數據集分析功能。這樣導致無法在訓練之前發現數據集的特點,只能使用默認配置或個人經驗去訓練模型。改進點:我們設計的框架含有詳細和科學的數據集分析功能,並且對齊數據集分析和模型訓練模型推理過程的一致性,可以在訓練之前分析數據集的特徵,減少盲目訓練的情況;
  • 數據處理可視化調試:問題分析:現有的訓練框架一般沒有數據處理和數據增強的可視化調試功能。這樣導致無法查看數據處理或數據增強的效果,無法確認單步數據處理效果和多部數據處理的疊加效果。改進點:我們在數據載入時採用可擴展設計,將可視化模塊嵌入到流程中,可以任意節點查看數據效果。
  • 部署對接:問題分析:一般沒有與模型部署對接的部分。現有的訓練框架一般沒有與模型部署對接的部分。這樣導致自己開發與部署對接,過程工作量大,耗時耗力且容易出錯;如果是不同任務類型的算法部署,則上述工作量需要翻倍。改進點:我們開發了模型轉換模塊和對應的一套模型部署框架和系統,可以快速將模型轉換到可以部署的狀態,並可以使用模型部署框架和系統運行。在多個任務中,本框架與對應配套部署框架已完成結果對齊,用戶無須進行相關開發;
  • 擴展性:問題分析:現有的訓練框架模塊的擴展性不強,模塊增加操作時比較麻煩。這樣導致開發者難度提升,團隊合作開發難度大。改進點:本框架大多數模塊基於可擴展模塊開發,開發者需要按照要求開發操作即可嵌入到模塊中,降低開發難度且易於團隊開發。

二 IVI算法框架詳細介紹

IVI算法框架是一個模塊解耦可擴展的深度學習視覺模型訓練框架。該框架主要負責三個任務:分類、檢測、分割。該框架主要分為八個模塊:數據準備、配置生成、數據載入、數據集分析、模型訓練、模型推理、模型評估和模型轉換。數據準備模塊、數據載入模塊、數據集分析模塊、模型評估模塊是繼承於可擴展模塊的,模塊增加操作時只需要根據擴展模塊的要求編寫操作即可。開發者開發難度下降,團隊合作開發更順暢。

可擴展模塊主要分為四個部分。流程配置文件描述模塊使用的算子和算子執行的流程。算子執行流程分為初始化、構建和執行三種狀態。算子執行流程在初始化時,會根據算子註冊表獲得已註冊的算子集合。算子執行流程構建時,根據流程配置文件,尋找算子註冊流程中已註冊的算子,並根據流程配置文件的內容初始化算子,並根據流程配置文件組合算子執行的流程。在算子執行流程執行時,根據算子執行流程對輸入數據進行操作。可擴展模型的擴展性主要體現在以下算子新增的擴展性和算子執行的擴展性兩個方面。算子新增的擴展性在增加新的算子時,只需要按照固定規則將算子加入到算子集合中即可。算子執行的擴展性體現在算子執行是根據配置文件描述進行的,配置文件描述可以對算子執行順序、次數和參數等多方面進行控制。

以【阿里雲的智能工業·工業視覺智能平台】的一個訓練任務為例,如圖4所示。在平台上開啟一個默認訓練任務,任務可以分為以下四個步驟:數據選擇、訓練、評估和模型提取。其中數據選擇部分會調用數據準備、配置生成、數據集分析的模塊。訓練部分會調用數據載入、模型訓練、模型推理和模型評估的模塊。評估部分會調用模型推理和模型評估模塊。模型提取部分會調用模型轉換模塊。

1 數據準備模塊

數據準備模塊是繼承於可擴展模塊的。主要分為三個步驟。

  • 第一步讀取數據配置文件。
  • 第二步根據數據配置文件構建數據處理流程。
  • 第三步進行多任務兼容的數據快速處理,根據數據處理流程將平台標註數據轉換為多任務兼容的數據結構。多任務兼容的數據結構為多任務兼容的模型訓練提供基礎。

數據準備模塊的數據配置文件由默認配置文件和平台交互信息融合獲得。如圖平台數據準備示意圖所示,左側添加數據集表示選擇的數據集。右側標籤選擇頁面的勾選表示選擇的類別。右側標籤選擇頁面的操作對應數據準備模塊算子。當在平台上添加數據集時會跳轉到下圖所示頁面,在此頁面可以勾選需要加入訓練的數據集。同時可以選擇數據集擴充倍數。

數據準備模塊算子包括類別擴增、類別屏蔽、子圖切割、異常數據清洗、數據集劃分等算子。以類別擴增為例,如圖6所示,在阿里雲的智能工業·工業視覺智能的平台上,可以針對指定標籤進行擴充且擴充倍數可選擇(如圖9所示)。

數據準備模塊如圖10所示,數據準備模塊獲得原始圖像和原始標註數據,構建數據處理流程並進行處理後,形成處理後圖像和多任務兼容格式訓練數據。多任務兼容格式訓練數據表示形成的訓練數據能夠同時被此框架中檢測、分割、分類等多種訓練任務使用。例如選擇了異常處理操作,處理後圖像和訓練數據中不會包含原始圖像中的異常圖像。例如選擇了子圖切割操作,處理後的圖像可能是原始圖像對應的子圖。如將處理後圖像和多任務兼容格式訓練數據傳到OSS存儲中,相同訓練任務可以選擇直接繼承數據。不需要再次調用數據準備模塊。解決了使用相同數據訓練時需要不斷重複處理數據的問題。

2 配置生成模塊

配置生成模塊如圖11所示,數據經過數據準備模塊處理後會生成描述文件。配置生成模塊接收默認配置、數據準備模塊結果和平台配置信息後,形成全局配置。如圖12所示,平台模型訓練時會進入此頁面。其中自定義訓練參數配置屬於平台配置信息。平台配置信息包括模型選擇配置、訓練高級參數配置和圖像預處理參數配置。如圖13所示,模型選擇配置負責訓練的加載的初始模型。如圖14所示,訓練高級參數配置負責訓練學習率、訓練疊代數等相關配置。如圖14所示。圖像預處理參數配置負責訓練時圖像的輸入解析度、圖像增強等相關配置。全局配置是作為數據載入、數據集分析、模型訓練、模型推理、模型評估和模型轉換的配置文件。

3 數據載入模塊

數據載入模塊是繼承於可擴展模塊的。如圖15所示,數據載入模塊分為三個步驟。

  • 首先讀取全局配置文件,獲得數據載入相關的信息,其次根據全局配置文件構建數據載入處理流程,最後進行數據載入。數據載入的輸入數據是數據準備模塊產生的數據。數據載入讀取全局配置文件中相關內容,如是否使用專家數據、圖像預處理參數中的圖像輸入解析度和數據增強的一些操作。
  • 數據載入模塊的第二步是構建數據載入流程。如圖16所示是數據載入的一些操作算子集合。數據載入流程根據配置信息從操作算子中選擇相應算子並串聯形成操作流程。數據載入模塊有兩種狀態(目前工業視覺智能雲平台未開啟此功能)。分別是運行狀態和調試狀態。運行狀態與其他模塊無交互。圖16中的效果可視化在調試狀態時使用,在數據載入流程的任何位置可以嵌入效果可視化模型,用來可視化當前圖像狀態、類別狀態、實例狀態。這樣就可以查看數據處理或數據增強的效果,確認單步數據處理效果和多部數據處理的疊加效果。圖17所示為實例擾動增強操作可視化的效果,可視化時將實例相關信息「畫」在圖像上,不同類別用不同顏色表示。每個框代表一個實例。經過實例擾動增強後,可以直觀看到實例的增加和實例在圖像中的情況。

4 數據集分析模塊

數據集分析模塊是繼承於可擴展模塊的。如圖18所示,數據集分析是集成數據載入模塊的,分為四個步驟。

  • 第一個步驟是讀取全局配置文件,獲得數據集分析相關的信息。比如圖像預處理參數中的圖像輸入解析度和數據增強的一些操作。
  • 第二步根據配置構建一個數據載入模塊的相關流程。
  • 第三步根據配置構建分析算子集合。
  • 第四步串聯數據載入和數據集分析算子集合進行處理(數據集分析算子集合如圖19所示)。處理完成後所有結果可以在工業視覺智能平台的網頁上展示。

5 模型訓練模塊

如圖20所示,模型訓練是集成數據載入模塊的,分為四個步驟。

  • 第一個步驟是讀取全局配置文件,獲得模型訓練相關的信息:比如圖像預處理參數中的圖像輸入解析度和數據增強的一些操作;比如高級參數配置中的總訓練疊代數、默認參數配置文件加載和模型保存間隔數;比如模型選擇中的預訓練模型。
  • 第二步根據配置構建一個數據載入模塊的相關流程。
  • 第三步根據配置構建算法模型和模型訓練流程。
  • 第四步串聯數據載入和模型訓練流程並且運行。

如圖21所示,模型訓練會按照間隔數保存到本地或對應的OSS中,並且在平台中會展示候選模型和實際產生時間。同時模型訓練的LOG文件也同步保存到本地或對應OSS中。模型訓練的損失值(LOSS)可以通過通訊的方式傳遞到工業視覺智能平台的後端程序中,圖中LOSS曲線就是將訓練框架返回的損失值展示在前端。需要說明的是在此構建算法模型和模型訓練流程是兼容多種任務的,並且數據準備模型的數據是兼容多種任務的。這樣框架就可以進行多任務兼容的模型訓練。同時,因為數據集分析模塊和模型訓練模塊都是基於數據載入模塊的,所以數據集分析功能不僅可以按照原圖和標註進行分析,還能完全模擬訓練的數據處理方式進行分析。這樣就可以在訓練之前發現數據集的特點或者提前查看數據處理和數據增強操作的結果,根據數據分析結果不斷調整各種配置進行訓練。而不是只使用默認配置或者個人經驗去訓練模型,避免了盲目訓練。同時結合數據載入調試功能後,可以更深入地分析數據操作對數據集的影響,進一步提供算法優化方案。

6 模型推理模塊

如圖22所示,模型推理是集成數據載入模塊的,分為四個步驟。

  • 第一個步驟是讀取全局配置文件,獲得模型推理相關的信息:比如圖像預處理參數中的圖像輸入解析度等操作;比如模型訓練按照間隔保存的模型。
  • 第二步根據配置構建一個數據載入模塊的相關流程。
  • 第三步根據配置構建算法模型和模型推理流程。
  • 第四步串聯數據載入和模型推理流程並且運行。模型推理的結果會保存到本地或者OSS中。

7 模型評估模塊

模型評估模塊是繼承於可擴展模塊的。如圖23所示,模型評估是集成數據載入模塊的,分為四個步驟。

  • 第一個步驟是讀取全局配置文件,獲得模型評估相關的信息,主要是需要評估的指標。
  • 第二步根據配置構建一個數據載入模塊的相關流程,這裡載入數據時不載入圖像,載入數據準備產生的GT結果(Ground Truth 結果、標註的真實結果)和模型推理產生的對應AI結果(算法預測的結果)。
  • 第三步根據配置構建模型評估流程。
  • 第四步串聯數據載入和模型評估流程並且運行。

模型推理的結果會保存到本地或者OSS中。模型訓練模塊、模型推理模塊、模型評估模塊獨立存在,評估過程不會占用訓練時間和資源,整體可以高效執行。

模型評估在工業視覺智能平台上分為整體評估結果、詳細評估結果和檢測結果展示。
圖24所示是模型整體評估結果,左側展示了評估的圖像和標註數量,右邊展示了整體算法指標。圖中是目標檢測的評估結果,所以展示了不同IOU(交並比)下的mAP指標。
圖25所示是模型評估的詳細評估部分展示,左側可以調節詳細評估時不同類別的閾值,並且展示該類別的圖像數量和標註數量。右側是該類別在不同閾值下的召回率和精確度曲線。

如圖26所示,根據詳細評估中閾值設定,可以展示正確檢測、漏檢和誤檢三個部分,用來更加直觀地查看模型在不同閾值下的效果和問題。點擊正確檢測、漏檢、誤檢中的圖像,平台會跳轉到如圖27的頁面,頁面展示了原圖、GT的框和類別、AI算法預測的框和類別,這樣可以單張地查看預測的結果和標註框的差距。工業視覺智能平台可以進行多模型評估功能。

如圖28和圖9所示,可以選擇多個候選模型進行模型評估。可以看到本框架和平台結合的模型評估除了進行學術算法指標的展示之外,還展示了不同閾值下的各項指標。和不同閾值下正確檢測、漏檢和誤檢的情況。

8 模型轉換模塊

模型轉換分為三個步驟。

  • 第一步是讀取全局配置文件,比如圖像預處理參數中的圖像輸入解析度等操作。
  • 第二步根據全局配置文件中的信息,生成模型推理時使用的配置文件。
  • 第三步將模型訓練保存的原始模型轉換成推理時可用的加密模型。

相關文件保存在本地或上傳到OSS。其中生成模型推理時的配置文件和加密模型都是和對應模型推理庫對應配合設計的,能夠直接使用。這樣用戶不需要開發與部署對接,減輕了工作量。並且本框架是兼容不同任務類型的算法的訓練。模型和任務相關信息會被保存在配置文件中。

三 總結

本文章主要介紹了工業視覺智能團隊實戰經驗中設計和演化出來的IVI算法框架,並結合公共雲平台功能做了更詳細的介紹。而在工業視覺智能實戰中,我們也會遇到一些工業視覺智能場景業務形成的圖像域差異、圖像解析度、目標缺陷形態、圖像背景干擾的算法上的挑戰,在不斷分析和實驗後我們的算法也往更高精度、更高效和工業內更通用方向不斷演化。同時因為工業視覺智能場景業務形成的模型更新需求頻繁、算法定製化高、算法精度高、需求響應速度要求高等問題,我們在算法模型組合、算法方案設計、算法方案評估、行業產品化方面也有了自己的算法模型組合的產品和整套的方法論。

原文連結:http://click.aliyun.com/m/1000301296/

本文為阿里雲原創內容,未經允許不得轉載。

關鍵字: