<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

使用無監督學習和合成數據作為數據增強方法來分類異常

QQ475400555 ? 來源:Mia Morton ? 作者:Mia Morton ? 2022-11-10 09:21 ? 次閱讀

導讀

創建異常檢測模型,實現生產線上異常檢測過程的自動化。在選擇數據集來訓練和測試模型之后,我們能夠成功地檢測出86%到90%的異常。

介紹

異常是指偏離預期的事件或項目。與標準事件的頻率相比,異常事件的頻率較低。產品中可能出現的異常通常是隨機的,例如顏色或紋理的變化、劃痕、錯位、缺件或比例錯誤。

異常檢測使我們能夠從生產流程中修復或消除那些處于不良狀態的部件。因此,由于避免生產和銷售有缺陷的產品,制造成本降低了。在工廠中,異常檢測由于其特點而成為質量控制系統的一個有用工具,對機器學習工程師來說是一個巨大的挑戰。

推薦使用監督學習,因為:在異常檢測中需要內在特征,并且需要在完整數據集(訓練/驗證)中使用少量的異常。

另一方面,圖像比較可能是一個可行的解決方案,但標準圖像處理多個變量,如光線、物體位置、到物體的距離等,它不允許與標準圖像進行像素對像素的比較。在異常檢測中,像素到像素的比較是不可或缺的。

除了最后的條件外,我們的建議包括使用合成數據作為增加訓練數據集的方法,我們選擇了兩種不同的合成數據,隨機合成數據和相似異常合成數據。(詳見數據部分)

這個項目的目標是使用無監督學習和合成數據作為數據增強方法來分類異常 — 非異常。

背景研究

異常檢測與金融和檢測“銀行欺詐、醫療問題、結構缺陷、設備故障”有關(Flovik等,2018年)。該項目的重點是利用圖像數據集進行異常檢測。它的應用是在生產線上。在項目開始時,我們熟悉了自動編碼器在異常檢測中的功能和架構。作為數據計劃的一部分,我們研究了包括合成噪聲圖像和真實噪聲圖像的重要性(Dwibedi et al, 2017)。

數據計劃是這個項目的重要組成部分。選擇一個數據集,有足夠的原始圖像和足夠的真實噪聲的圖像。同時使用合成圖像和真實圖像。在處理真實圖像時,這些數據需要對目標有全覆蓋,但是在尺度和視角方面無法完全獲得?!啊獏^分這些實例需要數據集對對象的視角和尺度有很好的覆蓋”(Dwibedi et al, 2017)。

合成數據的使用允許“實例和視角的良好覆蓋”(Dwibedi et al, 2017)。合成圖像數據集的創建,包括合成渲染的場景和對象,是通過使用Flip Library完成的,這是一個由LinkedAI創建的開源python庫?!凹羟?,粘貼和學習:非常簡單的合成實例檢測”,通過這些數據的訓練和評估表明,使用合成數據集的訓練在結果上與在真實圖像數據集上的訓練具有可比性。

自動編碼器體系結構“通?!睂W習數據集的表示,以便對原始數據進行維數縮減(編碼),從而產生bottleneck。從原始的簡化編碼,產生一個表示。生成的表示(重構)盡可能接近原始。

自動編碼器的輸入層和輸出層節點數相同?!癰ottleneck值是通過從隨機正態分布中挑選出來的”(Patuzzo, 2020)。在重構后的輸出圖像中存在一些重構損失(Flovik, 2018),可以通過分布來定義原始圖像輸入的閾值。閾值是可以確定異常的值。

去噪自動編碼器允許隱藏層學習“更魯棒的濾波器”并減少過擬合。一個自動編碼器被“從它的一個損壞版本”來訓練來重建輸入(去噪自動編碼器(dA))。訓練包括原始圖像以及噪聲或“損壞的圖像”。隨著隨機破壞過程的引入,去噪自編碼器被期望對輸入進行編碼,然后通過去除圖像中的噪聲(破壞)來重建原始輸入。

用去噪自編碼器提取和組合魯棒特征,去噪自編碼器應該能夠找到結構和規律作為輸入的特征。關于圖像,結構和規律必須是“從多個輸入維度的組合”捕獲。Vincent等(2020)的假設引用“對輸入的部分破壞的魯棒性”應該是“良好的中間表示”的標準。

在這種情況下,重點將放在獲取和創建大量原始和有噪聲圖像的能力上。我們使用真實數據和合成數據創建了大量的圖像來訓練我們的模型。

根據Huszar(2016)的說法,擴張卷積自動編碼器“支持感受野的指數擴展,而不丟失分辨率或覆蓋范圍?!氨3謭D像的分辨率和覆蓋范圍,對于通過擴大卷積自動編碼器重建圖像和使用圖像進行異常檢測是不可或缺的。這使得自動編碼器在解碼器階段,從創建原始圖像的重建到更接近“典型”自動編碼器結構可能產生的結果。

Dilated Convolutional Autoencoders Yu et al.(2017),“Network Intrusion Detection through Stacking Dilated Convolutional Autoencoders”,該模型的目標是將無監督學習特征和CNN結合起來,從大量未標記的原始流量數據中學習特征。他們的興趣在于識別和檢測復雜的攻擊。通過允許“非常大的感受野,而只以對數的方式增加參數的數量”,Huszar (2016),結合無監督CNN的特征學習,將這些層堆疊起來(Yu et al., 2017),能夠從他們的模型中獲得“卓越的性能”。

技術

Flip Library (LinkedAI):https://github.com/LinkedAi/flip

Flip是一個python庫,允許你從由背景和對象組成的一小組圖像(可能位于背景中的圖像)中在幾步之內生成合成圖像。它還允許你將結果保存為jpg、json、csv和pascal voc文件。

Python Libraries

在這個項目中有幾個Python庫被用于不同的目的:

可視化(圖像、指標):

OpenCV

Seaborn

Matplotlib

處理數組:

Numpy

模型:

TensorFlow

Keras

Random

圖像相似度比較:

Imagehash

PIL

Seaborn (Histogram)

Weights and Biases

Weights and bias是一個開發者工具,它可以跟蹤機器學習模型,并創建模型和訓練的可視化。它是一個Python庫,可以作為import wandb導入。

它工作在Tensorflow, Keras, Pytorch, Scikit,Hugging Face,和XGBoost上。使用wandb.config配置輸入和超參數,跟蹤指標并為輸入、超參數、模型和訓練創建可視化,使它更容易看到可以和需要更改的地方來改進模型。

模型&結構

我們基于當前的自動編碼器架構開始了我們的項目,該架構專注于使用帶有卷積網絡的圖像(見下圖)。經過一些初步的測試,基于研究(參見參考資料)和導師的建議,我們更改為最終的架構。

87e2a3bc-608b-11ed-8abf-dac502259ad0.png

自編碼器的典型結構

使用擴張特征

擴張特征是一種特殊的卷積網絡,在傳統的卷積核中插入孔洞。在我們的項目中,我們特別的對通道維度應用了膨,不影響圖像分辨率。

88265a30-608b-11ed-8abf-dac502259ad0.png

最終的結構

圖像相似度

這個項目的關鍵點之一是找到一個圖像比較的指標。利用圖像比較度量對模型進行訓練,建立直方圖,并計算閾值,根據該閾值對圖像進行異常和非異常的分類。

我們從逐個像素的L2歐氏距離開始。結果并不能確定其中的一些差異。我們使用了帶有不同散列值(感知、平均和差異)的Python Imagehash庫,對于相似的圖像,我們得到了不同的結果。

我們發現SSIM(結構相似度指數度量)度量為我們提供了一對圖像之間相似度的度量,此外,它是Keras庫的一個內置損失。

直方圖

在對模型進行訓練和評估后,利用其各自的數據集,對重建后的圖像和原始圖像之間的相似度進行識別。當然,由于原始圖像的多樣性(如,大小,位置,顏色,亮度和其他變量),這種相似性有一個范圍。

我們使用直方圖作為圖的表示,以可視化這個范圍,并觀察在哪個點會有不同的圖像。

884ef9a4-608b-11ed-8abf-dac502259ad0.png

直方圖的例子

數據

使用的數據從Kaggle下載:表面裂紋檢測數據集:https://www.kaggle.com/arunrk7/surface-crack-detection和鑄造產品質量檢查圖像數據:https://www.kaggle.com/ravirajsinh45/real-life-industrial-dataset-of-casting-product?select=casting_data。

第一個是裂縫數據集,包含20,000張負樣本墻圖像(無裂縫)和20,000張正樣本墻圖像(有裂縫)。在這種情況下,裂縫被認為是異常的。所有數據都是227x227像素的RGB通道。下面顯示了每個組的示例。

![](Anomaly Detection with Computer Vision.assets/0_wkppduibzb5UMKe4.png)

我們從沒有異常的組中選取了10,000張圖像來生成不同的合成數據集。然后合成的數據集被分為兩種類型:一種是帶有類似異常的噪聲(51張圖像是用Photoshop創建的),另一種是使用水果、植物和動物等隨機物體。所有用作噪聲的圖像都是png格式的,背景是透明的。下面是用于模型訓練的兩種類型的數據集的一些例子。

![](Anomaly Detection with Computer Vision.assets/0_QOK2rwxMoVZiFd5Q.png)

第二個數據集,cast數據集分為兩組,一組為512x512像素的圖像(有異常的781張,無異常的519張),另一組為300x300像素的圖像(有異常的3137張,有異常的4211張)。

所有圖像都有RGB通道。使用的是300 x 300像素的圖像。后者,來自Kaggle,91.65%的數據被分為訓練,其余的測試。對于該數據集,異常包括:邊緣碎片、劃痕、表面翹曲和孔洞。下面是一些有和沒有異常的圖像示例。

8864606e-608b-11ed-8abf-dac502259ad0.png

我們使用1,000張屬于訓練組的無缺陷圖像來生成合成數據數據集。

在前面的例子中,我們創建了兩種類型的數據集:一種帶有類似于異常的噪聲(51張圖像是用Photoshop創建的),另一種帶有隨機對象的噪聲,如動物、花朵和植物(裂縫數據集中使用的相同的80張圖像)。

下面是一些在模型訓練中使用的圖像示例。

8882a6c8-608b-11ed-8abf-dac502259ad0.png

所有合成數據都是使用Flip庫創建的。在每個生成的圖像中,選擇兩個對象并隨機放置。

對象應用了三種類型的轉換:翻轉、旋轉和調整大小。生成的圖像保存為jpg格式。項目使用的數據集如下表所示:

88a0331e-608b-11ed-8abf-dac502259ad0.png

實驗

根據上述表格說明,我們的主要目的是研究數據集的哪些變化可能呈現最好的結果,我們用這些數據和獲得的結果訓練了模型(見下面的圖表)。

對于每個數據集,我們評估了幾個指標,如(SSIM)損失、召回、精度、F1和精度。在每一次實驗中,我們將評估代表這組噪聲圖像和重建圖像之間圖像相似性的直方圖。

為了跟蹤和比較我們的結果,我們使用了library Weight & bias,它允許一種簡單的方式來存儲和比較每個實驗的結果。

88bade3a-608b-11ed-8abf-dac502259ad0.png

訓練

為了在我們的環境中保持少量的變量,我們決定總是使用一個有1000個樣本的數據集,而不管真實數據和合成數據之間的關系。

算法中,我們將各自的數據集分割為95%進行訓練,5%進行測試結果。除此之外,我們的評估只使用了真實的數據。

88e0069c-608b-11ed-8abf-dac502259ad0.png

評估和結果

下面是一些實驗的主要結果。你可在以下連結找到所有的結果:

裂縫數據集:https://wandb.ai/heimer-rojas/anomaly-detector-cracks?workspace=user-

8909f45c-608b-11ed-8abf-dac502259ad0.png

8922b10e-608b-11ed-8abf-dac502259ad0.png

裂縫直方圖

892f25ec-608b-11ed-8abf-dac502259ad0.png

裂縫數據集的異常檢測

對于裂紋數據集,實驗結果也很好(91% ~ 98%),實驗之間沒有顯著差異。與無異常的圖像相比,其行為主要取決于裂紋大小和顏色等變量。

鑄造工件數據集:https://wandb.ai/heimer-rojas/anomaly-detector-cast?workspace=user-heimer-rojas

895c9b1c-608b-11ed-8abf-dac502259ad0.png

鑄造工件數據集的準確率和召回率

8968e0ca-608b-11ed-8abf-dac502259ad0.png

89a46c80-608b-11ed-8abf-dac502259ad0.png

鑄造件E1&E3

89b62c22-608b-11ed-8abf-dac502259ad0.png

鑄造件數據集的異常檢測

挑戰

訓練時間長,在谷歌Colab和專業版中使用GPU訓練。

通過上傳壓縮后的zip格式的數據來解決長時間的數據加載問題,這樣每個數據集上傳一個文件,大大減少了時間。

最初的提議是使用哥倫比亞汽車生產線的數據集,不幸的是,正樣本和負樣本圖像的質量和數量都不足以創建一個合適的機器學習模型。這種情況促使我們決定使用Kaggle的數據集,與生產線生產的條件類似。

每個數據集在異常情況下的可視化差異是不同的,需要考慮正常的圖像結構,如圖像的顏色、亮度等內在特征

需要人類的專業知識來根據真實數據或合成數據的閾值選擇適當的閾值。這可能要視情況而定。

討論

實現一個真正的機器學習項目需要幾個步驟,從想法到模型的實現。這包括數據集的選擇、收集和處理。

在使用圖像的項目中有“調試腳本”是很重要的。在我們的例子中,我們使用了一個允許我們可視化的腳本:原始數據集、新的合成圖像和自編碼器去噪之后的圖像,使我們能夠評估模型的性能。






審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 編碼器
    +關注

    關注

    42

    文章

    3449

    瀏覽量

    132079
  • OpenCV
    +關注

    關注

    29

    文章

    612

    瀏覽量

    40893
  • python
    +關注

    關注

    52

    文章

    4700

    瀏覽量

    83647

原文標題:詳解如何用深度學習實現異常檢測/缺陷檢測

文章出處:【微信號:機器視覺沙龍,微信公眾號:機器視覺沙龍】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    適用于任意數據模態的自監督學習數據增強技術

    模態的。這意味著需要為不同的數據模態開發不同的自監督學習算法。為此,本文提出了一種通用的數據增強技術,可以應用于任意數據模態。相較于已有的通
    的頭像 發表于 09-04 10:07 ?845次閱讀
    適用于任意<b class='flag-5'>數據</b>模態的自<b class='flag-5'>監督學習</b><b class='flag-5'>數據</b><b class='flag-5'>增強</b>技術

    基于transformer和自監督學習的路面異常檢測方法分享

    鋪設異常檢測可以幫助減少數據存儲、傳輸、標記和處理的壓力。本論文描述了一種基于Transformer和自監督學習的新方法,有助于定位異常區域
    的頭像 發表于 12-06 14:57 ?873次閱讀
    基于transformer和自<b class='flag-5'>監督學習</b>的路面<b class='flag-5'>異常</b>檢測<b class='flag-5'>方法</b>分享

    【阿里云大學免費精品課】機器學習入門:概念原理及常用算法

    個函數,當新的數據到來時,可以根據這個函數預測結果。監督學習的訓練集要求是包括輸入和輸出,也可以說是特征和目標。訓練集中的目標是由人標注的。常見的監督學習算法包括回歸分析和統計分類。?
    發表于 06-23 13:51

    如何用卷積神經網絡方法去解決機器監督學習下面的分類問題?

    人工智能下面有哪些機器學習分支?如何用卷積神經網絡(CNN)方法去解決機器學習監督學習下面的分類問題?
    發表于 06-16 08:09

    你想要的機器學習課程筆記在這:主要討論監督學習和無監督學習

    with experience E(一個程序從經驗E中學習解決任務T進行某一任務量度P,通過P測量在T的表現而提高經驗E(另一種定義:機器學習是用數據或以往的經驗,以此優化計算機程序的性能標準。) 不同類型的機器
    發表于 12-03 17:12 ?462次閱讀

    如何用Python進行無監督學習

    監督學習是一種用于在數據中查找模式的機器學習技術。無監督算法給出的數據不帶標記,只給出輸入變量(X),沒有相應的輸出變量。在無
    的頭像 發表于 01-21 17:23 ?4016次閱讀

    機器學習算法中有監督和無監督學習的區別

    監督學習的好處之一是,它不需要監督學習必須經歷的費力的數據標記過程。但是,要權衡的是,評估其性能的有效性也非常困難。相反,通過將監督學習算法的輸出與測試
    的頭像 發表于 07-07 10:18 ?5466次閱讀

    最基礎的半監督學習

    導讀 最基礎的半監督學習的概念,給大家一個感性的認識。 半監督學習(SSL)是一種機器學習技術,其中任務是從一個小的帶標簽的數據集和相對較大的未帶標簽的
    的頭像 發表于 11-02 16:08 ?2446次閱讀

    監督學習最基礎的3個概念

    有趣的方法,用來解決機器學習中缺少標簽數據的問題。SSL利用未標記的數據和標記的數據集來學習任務
    的頭像 發表于 11-02 16:14 ?2732次閱讀
    半<b class='flag-5'>監督學習</b>最基礎的3個概念

    為什么半監督學習是機器學習的未來?

    揭示了添加無監督數據可以提高模型泛化和性能。事實上,在非常多的場景中,帶有標簽的數據并不容易獲得。半監督學習可以在標準的任務中實現SOTA的效果,只需要一小部分的有標記
    的頭像 發表于 11-27 10:42 ?3711次閱讀

    深度學習:基于語境的文本分類監督學習

    高成本的人工標簽使得弱監督學習備受關注。seed-driven 是弱監督學習中的一種常見模型。該模型要求用戶提供少量的seed words,根據seed words對未標記的訓練數據生成偽標簽,增加
    的頭像 發表于 01-18 16:04 ?2784次閱讀

    機器學習中的無監督學習應用在哪些領域

    解決數據中心、云計算、人工智能和邊緣計算等各個行業的問題,為人們帶來極大便益。 自監督學習是什么? 自監督學習監督學習和非監督學習的關系
    發表于 01-20 10:52 ?4697次閱讀
    機器<b class='flag-5'>學習</b>中的無<b class='flag-5'>監督學習</b>應用在哪些領域

    監督學習的一些思考

    監督學習的流行是勢在必然的。在各種主流有監督學習任務都做到很成熟之后,數據成了最重要的瓶頸。從無標注數據學習有效信息一直是...
    發表于 01-26 18:50 ?1次下載
    自<b class='flag-5'>監督學習</b>的一些思考

    融合零樣本學習和小樣本學習的弱監督學習方法綜述

    融合零樣本學習和小樣本學習的弱監督學習方法綜述 來源:《系統工程與電子技術》,作者潘崇煜等 摘 要:?深度學習模型嚴重依賴于大量人工標注的數據
    發表于 02-09 11:22 ?1910次閱讀
    融合零樣本<b class='flag-5'>學習</b>和小樣本<b class='flag-5'>學習</b>的弱<b class='flag-5'>監督學習方法</b>綜述

    TinyML:使用ChatGPT和合成數據檢測嬰兒哭聲

    電子發燒友網站提供《TinyML:使用ChatGPT和合成數據檢測嬰兒哭聲.zip》資料免費下載
    發表于 07-13 08:30 ?1次下載
    TinyML:使用ChatGPT<b class='flag-5'>和合成數據</b>檢測嬰兒哭聲
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>