缺陷檢測是工業(yè)視覺領(lǐng)域非常重要的應(yīng)用之一。幾乎所有的工業(yè)產(chǎn)品在流入市場之前都會(huì)有缺陷檢測的環(huán)節(jié),目的是確保產(chǎn)品是合格的。
對產(chǎn)品進(jìn)行缺陷檢測時(shí),分為人工目視檢測和工業(yè)視覺檢測。利用工業(yè)視覺做缺陷檢測時(shí),常用的解決思路如下:
Ⅰ、傳統(tǒng)圖像算法
用傳統(tǒng)圖像算法做缺陷檢測時(shí),方法有二:
①特征工程
特征工程是缺陷檢測中最常用的方法。特征工程是通過傳統(tǒng)圖像算法分析圖像灰度值、方差、均值、顏色、型狀、輪廓、面積等特征去檢測缺陷,方法非常靈活,開發(fā)速度也快。在應(yīng)用層面,一般會(huì)將缺陷特征的相關(guān)參數(shù)開放到軟件端,供使用者靈活調(diào)整。
②模板匹配
模板匹配是通過預(yù)設(shè)一些圖像模板,將圖像模板與待測圖像進(jìn)行比較,以達(dá)到識(shí)別缺陷的目的。這種算法應(yīng)用有限,舉個(gè)例子,做某品牌飲料瓶標(biāo)簽的缺陷檢測,會(huì)利用方法①特征工程的技術(shù)識(shí)別部分缺陷類型,但也會(huì)利用模板匹配,通過預(yù)設(shè)一些標(biāo)簽圖像模板去匹配待測圖像,以判斷標(biāo)簽是否有缺陷。
Ⅱ、CV算法
計(jì)算機(jī)視覺算法即CV(Computer Vision)算法,是指讓計(jì)算機(jī)理解圖像的一種技術(shù),屬于AI(Artificial Intelligence)算法的分支之一。
在工業(yè)視覺領(lǐng)域,處理對象是圖像,故提到AI算法便是CV算法。也許AI算法聽起來高級(jí),所以在工業(yè)視覺領(lǐng)域,大家一般多說AI算法,不怎么提CV算法。
圖像分類、目標(biāo)檢測、語義分割、實(shí)例分割、目標(biāo)跟蹤、OCR、人臉識(shí)別、圖像生成、異常檢測、等都屬于CV算法。其中,在工業(yè)視覺缺陷檢測領(lǐng)域應(yīng)用較多的CV算法為圖像分類、目標(biāo)檢測、實(shí)例分割。
①圖像分類
圖像分類,顧名思義,是對圖像進(jìn)行分類并確定圖像類別的一種算法。根據(jù)分類任務(wù)不同,圖像分類又分為單標(biāo)簽分類和多標(biāo)簽分類。常用的分類網(wǎng)絡(luò)有ResNet、MobileNet、EfficientNet等。
在工業(yè)視覺領(lǐng)域,理論上講,可以利用圖像分類算法對整張圖像直接分類,以確定其缺陷類別。由于工業(yè)相機(jī)拍攝的視野問題,會(huì)使整張圖像除了目標(biāo)區(qū)域外,還會(huì)包含很多無關(guān)的背景,這些無關(guān)的背景會(huì)干擾圖像分類模型的訓(xùn)練,導(dǎo)致圖像分類算法的準(zhǔn)確率低,因此實(shí)際項(xiàng)目中,極少利用圖像分類算法直接對整張圖進(jìn)行分類。
②目標(biāo)檢測
目標(biāo)檢測算法是在圖像中對所有感興趣的目標(biāo),用檢測框定位目標(biāo)的位置和類別,如下圖1所示。這種方法簡單粗暴,即通過標(biāo)注大量缺陷數(shù)據(jù)集,訓(xùn)練一個(gè)具有缺陷檢測能力的目標(biāo)檢測模型。
圖1 目標(biāo)檢測示例
最經(jīng)典目標(biāo)檢測算法首推YOLO系列,準(zhǔn)確率高且推理速度快,屬于非常優(yōu)異的算法。在實(shí)際應(yīng)用中,需要對圖像進(jìn)行尺寸的縮放,使圖像大小符合目標(biāo)檢測模型所要求的尺寸。如果原圖很大,缺陷很小,使缺陷在原圖中占比很小,比如點(diǎn)狀的微小缺陷,可能會(huì)使圖像在預(yù)處理縮放過程中,將缺陷丟失。因此,如果有此類問題的風(fēng)險(xiǎn),一般會(huì)將原圖進(jìn)行裁剪為多份,比如10000*5000分辨率的圖像,拆分為10張2000*2500分辨率的圖像,然后對這10張圖像單獨(dú)進(jìn)行檢測,最后將檢測結(jié)果匯總。
此類方法也有弊端,那就是數(shù)據(jù)集,成也數(shù)據(jù)集,敗也數(shù)據(jù)集。因?yàn)槟繕?biāo)檢測算法屬于有監(jiān)督學(xué)習(xí),依賴大量的數(shù)據(jù)集,如果數(shù)據(jù)集不夠,會(huì)導(dǎo)致算法準(zhǔn)確率低。實(shí)際項(xiàng)目中,往往需要持續(xù)收集數(shù)據(jù),反復(fù)多次迭代模型,才能達(dá)到理想效果。
③實(shí)例分割
實(shí)例分割是目標(biāo)檢測的升華版本,即在目標(biāo)檢測的基礎(chǔ)上用更精細(xì)的mask進(jìn)行定位,而非檢測框,如圖2所示。
圖2 實(shí)例分割示例
YOLO算法的原創(chuàng)作者Joseph Redmon在他YOLOv3論文的最后寫了這樣一句話:Boxes are stupid anyway though, I’m probably a true believer in masks except I can’t get YOLO to learn them。由此可見,Joseph Redmon是認(rèn)可mask而非box。
將實(shí)例分割算法應(yīng)用到缺陷檢測上,可以獲得比目標(biāo)檢測算法更加精準(zhǔn)的缺陷定位,這是有利于缺陷檢測的。另一方面,當(dāng)不同的缺陷離得很近,并且出現(xiàn)交叉或者包含的情況,目標(biāo)檢測算法很難獲得較好的類別區(qū)分,但是實(shí)例分割算法并沒有這個(gè)困境。若用實(shí)例分割算法在尺寸很大的圖像上進(jìn)行缺陷檢測時(shí),處理方法與目標(biāo)檢測算法一致,也是將圖像拆分。
實(shí)例分割算法和目標(biāo)檢測算法一樣,都屬于有監(jiān)督學(xué)習(xí),需要依賴大量的數(shù)據(jù)集。相比于目標(biāo)檢測算法拉框式的標(biāo)注,實(shí)例分割算法標(biāo)注的更為精確,標(biāo)注工作量更大。實(shí)際項(xiàng)目中,實(shí)例分割算法往往也需要持續(xù)收集圖像數(shù)據(jù),反復(fù)多次迭代模型,才能達(dá)到理想效果。
PS:此處致敬一下Joseph Redmon大神,摘選他YOLOv3論文驚人敬佩的結(jié)束語,如下圖3所示:
圖3 YOLOv3論文摘選
Ⅲ、傳統(tǒng)圖像算法+CV算法
這種方法將傳統(tǒng)圖像算法和CV算法結(jié)合在一起,也是常用的策略。
通常是利用傳統(tǒng)圖像算法先定位缺陷,然后再將缺陷ROI圖像傳給AI分類算法進(jìn)行分類。這種方法解決了傳統(tǒng)圖像算法定位容易,但是分類困難的問題。
結(jié)束語
工業(yè)視覺缺陷檢測算法有很多,本文羅列了三大類主流方法,除了上述三大類,也有無監(jiān)督學(xué)習(xí)算法、圖像異常檢測算法,讀者感興趣可自行檢索研究。
任何一種缺陷檢測算法都有自己的技術(shù)邊界,在使用的時(shí)候,要具體情況具體分析,好的策略是將多種不同的算法組合使用,形成“絕對檢測”。