工業視覺檢測中關於深度學習工程化的思考-持續更新中

AI應用到工業產線示例<來源:騰訊全球數字生態大會>
圖:AI應用到工業產線示例<來源:騰訊全球數字生態大會>

思考

  • 數據
    數據獲取
    數據清洗 (@TODO)
    數據增廣
    不斷新增的數據
  • 訓練
    模型訓練
    模型選擇
    模型調試(@TODO)
    迭代訓練
  • 部署
    模型部署
    框架接口編寫
  • 模型提升&數據反饋
    模型上線後信息與數據收集
  • 其他
    資源管理(模型、數據) (@TODO)
    過程管理 (@TODO)
    GPU集羣 (@TODO)
    雲上(@TODO)

數據

數據獲取
1 歸檔存儲圖像尺寸設多大?原圖+增廣變換後融合在一起,還是隻存原圖?

工業相機分辨率往往很高,採出的圖>100M很常見,而缺陷尺度不一,在我們做最初數據集以及數據管理時,經常都會有這些的疑惑:
1.1 存原圖還是補充一些增廣後的圖一起存
【一切還是跟問題息息相關】 問題來源於,很多場景下,缺陷樣本極其稀少,導致正負樣本比例嚴重不均衡,做最初數據集時,就面對了這樣的問題。
結論:肯定是要單獨存原始圖的,外部顯式增廣後的圖不能與原圖混淆。
理由:原始圖像反應了問題的難度,原問題的所在(ex:問題難度來源於數據不均衡,還是模式複雜,亦或是對比度太弱),如果放棄了原始圖,僅存儲的是增廣變換後的圖,容易人爲將問題帶偏,使訓練出的模型帶有偏見,即數據的分佈與原始的不一致了,不純潔,不乾淨,訓練的模型上線預測結果很差;且容易造成數據的冗餘,現階段通用的數據增廣本都主要是在訓練時,對原圖以一定的概率進行變換,而不是簡單的將每張圖進行變換來獲取增廣,不過也還是要根據問題來看,並不絕對,當數據嚴重不均很時,單方面的數據增廣上採樣也是能起到一定作用的;

1.2 存小圖尺寸問題
結論:是在設備空間充足的前提下,儘可能保留大一點的圖,例如(512*512), 並配有完備的截圖工具(或者訓練時pytorch,預處理直接crop/resize都行)
理由:首先,工業缺陷數據集本身具有的特點就是,multi-scale!, 如果我們只存相對較小的圖,是有一定概率無法保存缺陷的完整模樣;

數據增廣
  • 亮度變換是必須的
    工業質檢數據,對於高分辨率圖像,局部很可能出現不均勻的情況
  • 添加噪聲
    實測,添加噪聲一般能提升準確率
  • 要注意各種旋轉
    一些應用場景,缺陷是具有方向性的
  • 隨機crop
    注意截圖大小與缺陷位置,避免把缺陷crop掉
不斷新增的數據

當模型上線後,勢必會碰到誤判的數據,當此類數據返回時,我們迭代訓練用的數據需要是舊+新的所有數據,如果只用新數據微調,很難達到對整個數據集都有效果(這也是深度學習在工業檢測應用的一個待解決點)。

訓練

模型選擇/模型評價

理論:
工業缺陷檢測的特點是高精度,檢測要做到μm級別,過檢率(1-精準率),漏檢率(1-召回率)甚至需要達到0.01%級別,也就是召回率要99.9%才能用,因此只看這種百分比都不能給人直觀的印象,在模型選擇評價時,要根據具體任務確定漏檢優先還是過檢優先,看模型性能要在驗證集或測試集上看判斷錯誤的個數,有些問題準確率或召回率是98%,都並不是一個優秀的模型,例子就是一張手機屏有1000個灰塵,分類正確980個就是98%,但是剩下的20個判錯仍然是不可接受的。
訓練流程自動化:
1)應該有模型訓練時,關於測試集的錯誤個數的實時文件,供觀察
2)實時loss曲線,PR曲線/ROC曲線,都可有可無,實際上並不重要;
3)accuracy應該有,簡單監控訓練過程
4)最好能自動輸出最佳模型

迭代訓練

見“不斷新增的數據”章節

部署

模型部署

如果模型以文件形式被機臺軟件調用,

  • 爲了安全,加密是必須的,避免(.caffemodel .pth)後綴的模型文件
框架接口編寫
推理框架選擇

部署的推理框架,可以選擇原來訓練模型用的框架(pytorch,tensorflow,caffe…),也可以用專屬部署框架(tensorRT, opencv4.3 dnn模塊,OpenVINO…),推薦使用後者,用caffe訓練的模型實測過tensorrt,效率比原生caffe推理快4倍以上。

封裝接口注意事項

當深度學習作爲整個檢測系統檢測算法一個模塊時,一般作爲動態鏈接庫被調用,在接口編寫時,要考慮到以下幾個方面:

  1. 日誌系統完善 ,不然調試起來很費勁(比如用caffe的話,caffe本身日誌系統就很齊全,錯誤,警告都能找到信息,要做的就是將日誌重定向)
  2. 線程安全
  3. 需要有有分數/概率等控制參數控制過漏檢情況

模型提升&數據反饋

工業質檢深度學習模型必然要迭代數倫才能比較穩定,因此建立上線後的數據反饋收集是必需的。

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