工業(yè)異常檢測(cè)算法---SPADE

名稱(chēng):Sub-Image Anomaly Detection with Deep Pyramid Correspondences
SPADE是一種通過(guò)特征對(duì)比的方法進(jìn)行異常檢測(cè)的算法,主要核心是通過(guò)K近鄰進(jìn)行檢索(kNN)÷椋基于KNN的異常檢測(cè)一般只能區(qū)分整體特性久脯,無(wú)法精確得到缺陷的位置。本文提出了一種利用KNN和多尺度特征的方法來(lái)進(jìn)行異常的缺陷檢測(cè)與定位歧胁。

  • 優(yōu)點(diǎn)
    不需要訓(xùn)練滋饲,只要有正樣本圖像就行。
  • 缺點(diǎn)
    需要存儲(chǔ)所有訓(xùn)練集的特征喊巍,對(duì)于內(nèi)存的需求很高屠缭。

SPADE整個(gè)過(guò)程分為3部分:圖像深度特征提取、K近鄰正常圖像檢索和特征金字塔像素對(duì)齊崭参。

1.圖像深度特征提取

就是使用一個(gè)在imagenet上預(yù)訓(xùn)練過(guò)的模型進(jìn)行特征提取呵曹,論文中使用的是pytorch框架自帶的wide_resnet50_2,對(duì)layer1何暮,layer2奄喂,layer3,avepool層的結(jié)果進(jìn)行了輸出海洼。
這個(gè)步驟會(huì)把訓(xùn)練集中的所有圖像都做一遍特征提取跨新,然后分別把各個(gè)層提取出來(lái)的特征存儲(chǔ)起來(lái),等需要用的時(shí)候再全部載入內(nèi)存(所以如果數(shù)據(jù)集很大的話(huà)坏逢,對(duì)內(nèi)存的需求就很高)域帐。

2.K近鄰正常圖像檢索

這個(gè)步驟是在整圖層面上判定這個(gè)圖像有沒(méi)有異常,但不會(huì)告訴你異常具體在那個(gè)位置是整。主要是使用上一步avepool層的輸出特征肖揣,分別測(cè)試圖像的avepool層的輸出特征分別和訓(xùn)練集中avepool層的輸出特征計(jì)算歐式近距離,然后再取距離最近的K個(gè)圖像浮入,作為訓(xùn)練集中與測(cè)試圖像最接近的K個(gè)圖像龙优。代碼中使用topk進(jìn)行選取,參數(shù)largest=False代表降序排列事秀。

        # calculate distance matrix
        dist_matrix = calc_dist_matrix(torch.flatten(test_outputs['avgpool'], 1),
                                       torch.flatten(train_outputs['avgpool'], 1))

        # select K nearest neighbor and take average
        topk_values, topk_indexes = torch.topk(dist_matrix, k=args.top_k, dim=1, largest=False)

3.特征金字塔像素對(duì)齊

這個(gè)步驟是用來(lái)確定異常在圖像的具體哪個(gè)位置彤断,以測(cè)試圖像的layer1特征為例野舶,layer1上的各個(gè)像素都會(huì)與步驟2中篩選出來(lái)的K個(gè)圖像的layer1上的像素做歐式距離計(jì)算,然后輸出2者之間最短的距離瓦糟,遍歷整張?zhí)卣鲌D就能得到測(cè)試圖像的layer1上的特征與篩選出來(lái)的K個(gè)圖像的layer1上的特征在像素層面的最短距離筒愚,然后layer2,layer3特分別做相同的計(jì)算菩浙,由于layer1巢掺,layer2,layer3他們的特征圖尺寸不一樣劲蜻,所以會(huì)將他們r(jià)eszie到一樣的尺寸再通道拼接在一起陆淀,之后在通道層面求平均,就能得到mask圖先嬉,作者還對(duì)這個(gè)mas圖做了一個(gè)高斯濾波用于平滑圖像轧苫。代碼里面除以100,主要是用來(lái)分段計(jì)算疫蔓,所有像素的特征一起計(jì)算歐氏距離含懊,內(nèi)存容易溢出。

                # construct a gallery of features at all pixel locations of the K nearest neighbors
                topk_feat_map = train_outputs[layer_name][topk_indexes[t_idx]]
                test_feat_map = test_outputs[layer_name][t_idx:t_idx + 1]
                feat_gallery = topk_feat_map.transpose(3, 1).flatten(0, 2).unsqueeze(-1).unsqueeze(-1)

                # calculate distance matrix
                dist_matrix_list = []
                for d_idx in range(feat_gallery.shape[0] // 100):
                    dist_matrix = torch.pairwise_distance(feat_gallery[d_idx * 100:d_idx * 100 + 100], test_feat_map)
                    dist_matrix_list.append(dist_matrix)
                dist_matrix = torch.cat(dist_matrix_list, 0)

                # k nearest features from the gallery (k=1)
                score_map = torch.min(dist_matrix, dim=0)[0]
                score_map = F.interpolate(score_map.unsqueeze(0).unsqueeze(0), size=224,
                                          mode='bilinear', align_corners=False)
                score_maps.append(score_map)

            # average distance between the features
            score_map = torch.mean(torch.cat(score_maps, 0), dim=0)

            # apply gaussian smoothing on the score map
            score_map = gaussian_filter(score_map.squeeze().cpu().detach().numpy(), sigma=4)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末衅胀,一起剝皮案震驚了整個(gè)濱河市岔乔,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌滚躯,老刑警劉巖雏门,帶你破解...
    沈念sama閱讀 217,277評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異掸掏,居然都是意外死亡茁影,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門(mén)丧凤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)募闲,“玉大人,你說(shuō)我怎么就攤上這事愿待『坡荩” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,624評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵呼盆,是天一觀的道長(zhǎng)年扩。 經(jīng)常有香客問(wèn)我蚁廓,道長(zhǎng)访圃,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,356評(píng)論 1 293
  • 正文 為了忘掉前任相嵌,我火速辦了婚禮腿时,結(jié)果婚禮上况脆,老公的妹妹穿的比我還像新娘。我一直安慰自己批糟,他們只是感情好格了,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著徽鼎,像睡著了一般盛末。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上否淤,一...
    開(kāi)封第一講書(shū)人閱讀 51,292評(píng)論 1 301
  • 那天悄但,我揣著相機(jī)與錄音,去河邊找鬼石抡。 笑死檐嚣,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的啰扛。 我是一名探鬼主播嚎京,決...
    沈念sama閱讀 40,135評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼隐解!你這毒婦竟也來(lái)了鞍帝?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,992評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤厢漩,失蹤者是張志新(化名)和其女友劉穎膜眠,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體溜嗜,經(jīng)...
    沈念sama閱讀 45,429評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡宵膨,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了炸宵。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片辟躏。...
    茶點(diǎn)故事閱讀 39,785評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖土全,靈堂內(nèi)的尸體忽然破棺而出捎琐,到底是詐尸還是另有隱情,我是刑警寧澤裹匙,帶...
    沈念sama閱讀 35,492評(píng)論 5 345
  • 正文 年R本政府宣布瑞凑,位于F島的核電站,受9級(jí)特大地震影響概页,放射性物質(zhì)發(fā)生泄漏籽御。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望技掏。 院中可真熱鬧铃将,春花似錦、人聲如沸哑梳。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,723評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)鸠真。三九已至悯仙,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間吠卷,已是汗流浹背雁比。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,858評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留撤嫩,地道東北人偎捎。 一個(gè)月前我還...
    沈念sama閱讀 47,891評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像序攘,于是被迫代替她去往敵國(guó)和親茴她。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容