0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

使用YOLOX檢測PCB的缺陷

微云疏影 ? 來源:磐創(chuàng)AI ? 作者:磐創(chuàng)AI ? 2022-12-07 10:01 ? 次閱讀

PCB(印刷電路板)

我知道,你一定在問,什么是PCB?不是嗎?對于不知道PCB是什么的人,這里有一個來自維基百科的定義:

PCB(Printed Circuit Board),中文名稱為印制電路板,又稱印刷線路板,是重要的電子部件,是電子元器件的支撐體,是電子元器件電氣相互連接的載體。由于它是采用電子印刷術(shù)制作的,故被稱為“印刷”電路板。[1]

我打賭你一生中至少見過一次PCB,但可能不想知道它是什么。以下是維基百科DVD讀取器上的PCB圖像:

poYBAGOP8-SAA45dAAH6VCxC6qQ989.jpg

PCB無處不在。幾乎所有的電子設(shè)備都有一個隱藏在其中的印刷電路板。在很多情況下,這些PCB在設(shè)計時或使用后都可能存在缺陷。

以下是互聯(lián)網(wǎng)上列出的PCB中一些常見缺陷的列表,以及免費提供的數(shù)據(jù)集中的示例圖像?.

1.Opens

2.Excessive solder

3.Component shifting

4.Cold joints

5.Solder bridges

6.Webbing and splashes

7.Lifted pads

poYBAGOP8-WAUnwDAADROcj_9ss904.jpg

我們不會深入探討它們的確切含義,因為這不是博客的內(nèi)容。但是,從懂一點計算機視覺深度學(xué)習(xí)的計算機工程師的角度來看,似乎檢測PCB數(shù)字圖像中的缺陷是一個可以解決的問題。

我們將使用mmdetection? 檢測PCB圖像中的缺陷。OpenMMLab? 是一個深度學(xué)習(xí)庫,擁有計算機視覺領(lǐng)域大多數(shù)最先進實現(xiàn)的預(yù)訓(xùn)練模型。它實現(xiàn)了幾乎所有眾所周知的視覺問題,如分類、目標(biāo)檢測與分割、姿態(tài)估計、圖像生成、目標(biāo)跟蹤等等。

YOLOX:2021超越Y(jié)OLO系列?

本文中,我們將使用YOLOX? ,我們將微調(diào)mmdetection?. YOLOX? 是2021發(fā)布的最先進模型,是YOLO系列的改進。作者做出了一些重大改進,如下所示。

1.引入SimOTA進行標(biāo)簽分配

2.移除錨箱

3.注意數(shù)據(jù)增強

4.用于檢測和分類的獨立頭

poYBAGOP8-aACbuGAACk8npiz-Y763.jpg

之前從v3到v5的YOLO系列都有一個單一的預(yù)測頭,其中包括邊界框預(yù)測、分類分?jǐn)?shù)預(yù)測以及對象性分?jǐn)?shù)預(yù)測,如上圖上半部分所示。

這在YOLOX中發(fā)生了變化? 作者選擇使用具有獨立頭的解耦頭進行所有預(yù)測的系列。

如圖所示,檢測頭和分類頭位于不同的頭中。這有助于改善訓(xùn)練期間的收斂時間(如圖3所示),并略微提高模型精度。

pYYBAGOP8-aAQM6bAAArCH-vThU619.jpg

由于分離為兩個頭部,參數(shù)數(shù)量顯著增加,因此模型的速度確實受到了影響。正如我們在圖4中看到的,YOLOX-L比YOLOv5-L慢一點。它也有專門為參數(shù)低得多的邊緣設(shè)備構(gòu)建的微型版本。

poYBAGOP8-eAP7ZXAADXcYWac4k098.jpg

與以前最先進的對象檢測模型相比,它們在平均精度方面確實有所提高,但FPS略有下降。

pYYBAGOP8-eAAj4NAAD_BCVXymA438.jpg

最后,正如偉大的萊納斯·托瓦爾茲所說,

廢話少說。放碼過來。

讓我們直接跳到代碼里!

使用mmdetection微調(diào)YOLOX

我們有一個名為DeepPCB的開源PCB缺陷數(shù)據(jù)集?. 該數(shù)據(jù)集由1500個圖像對組成,每個圖像對具有一個無缺陷模板圖像和一個具有缺陷的圖像,該圖像具有6種常見類型缺陷的邊界框注釋,即open, mouse-bite, short, spur, spurious copper, 和pin-h(huán)ole。

圖像的尺寸為640×640,在我們的YOLOX案例中非常完美? 在相同的維度上進行訓(xùn)練。

OpenMMLab?

OpenMMLab可以非常輕松地微調(diào)最先進的模型,只需很少的代碼更改。它具有針對特定用例的全面API。我們將使用mmdetection? 用于微調(diào)YOLOX? 在DeepPCB上? 數(shù)據(jù)集。

數(shù)據(jù)集格式

注:PCB缺陷數(shù)據(jù)集是一個開源數(shù)據(jù)集,取自具有MIT許可證的DeepPCB Github repo

我們需要將數(shù)據(jù)集修改為COCO格式或Pascal VOC格式來重新訓(xùn)練模型。這是MMD檢測所必需的? 加載自定義數(shù)據(jù)集進行訓(xùn)練。

出于訓(xùn)練目的,我們將采用COCO格式。你無需費盡心思將數(shù)據(jù)集轉(zhuǎn)換為COCO格式,因為它已經(jīng)為你完成了。你可以從這里直接下載轉(zhuǎn)換后的數(shù)據(jù)集。整個數(shù)據(jù)集與DeepPCB中的數(shù)據(jù)集相同? 只需添加帶有COCO格式注釋的訓(xùn)練和測試JSON文件即可進行訓(xùn)練。

我將不進行COCO格式的轉(zhuǎn)換,因為你可以找到許多文檔,就像mmdetection文檔中提到的那樣。

將此數(shù)據(jù)集轉(zhuǎn)換為COCO格式的腳本:

import json

import os

TRAIN_PATH = 'PCBData/PCBData/trainval.txt'

TEST_PATH = 'PCBData/PCBData/test.txt'

def create_data(data_path, output_path):

images = []

anns = []

with open(data_path, 'r') as f:

data = f.read().splitlines()

dataset = []

counter = 0

for idx, example in enumerate(data):

image_path, annotations_path = example.split()

image_path = os.path.join('PCBData', 'PCBData', image_path.replace('.jpg', '_test.jpg'))

annotations_path = os.path.join('PCBData', 'PCBData', annotations_path)

with open(annotations_path, 'r') as f:

annotations = f.read().splitlines()

for ann in annotations:

x, y, x2, y2 = ann.split()[:-1]

anns.a(chǎn)ppend({

'image_id': idx,

'iscrowd': 0,

'area': (int(x2)-int(x)) * (int(y2)-int(y)),

'category_id': int(ann.split()[-1])-1,

'bbox': [int(x), int(y), int(x2)-int(x), int(y2)-int(y)],

'id': counter

})

counter += 1

images.a(chǎn)ppend({

'file_name': image_path,

'width': 640,

'height': 640,

'id': idx

})

dataset = {

'images': images,

'annotations': anns,

'categories': [

{'id': 0, 'name': 'open'},

{'id': 1, 'name': 'short'},

{'id': 2, 'name': 'mousebite'},

{'id': 3, 'name': 'spur'},

{'id': 4, 'name': 'copper'},

{'id': 5, 'name': 'pin-h(huán)ole'},

with open(output_path, 'w') as f:

json.dump(dataset, f)

create_data(TRAIN_PATH, 'train.json')

create_data(TEST_PATH, 'test.json')

數(shù)據(jù)集配置

下一步是修改數(shù)據(jù)集配置以使用自定義數(shù)據(jù)集。我們需要添加/修改特定的內(nèi)容,如類的數(shù)量、注釋路徑、數(shù)據(jù)集路徑、epoch數(shù)量、基本配置路徑和一些數(shù)據(jù)加載器參數(shù)。

我們將復(fù)制一個預(yù)先編寫的YOLOX-s配置,并為我們的數(shù)據(jù)集修改它。其余的配置,如增強、優(yōu)化器和其他超參數(shù)將是相同的。

我們不會改變太多,因為這個博客的主要目的是熟悉手頭的問題,嘗試最先進的YOLOX架構(gòu),并實驗mmdetection庫。我們將把這個文件命名為yolox_s_config。py并將其用于訓(xùn)練。

我們將添加類名并更改預(yù)測頭的類數(shù)。由于將從根目錄而不是configs目錄加載配置,因此需要更改基本路徑。

_base_ = ['configs/_base_/schedules/schedule_1x.py', 'configs/_base_/default_runtime.py']

classes = ('open', 'short', 'mousebite', 'spur', 'copper', 'pin-h(huán)ole')

bbox_head = dict(type='YOLOXHead', num_classes=6, in_channels=128, feat_channels=128)

我們需要稍微修改train dataset loader以使用我們的類和注釋路徑。

train_dataset = dict(

type='MultiImageMixDataset',

dataset=dict(

type=dataset_type,

classes=classes,

ann_file='train.json',

img_prefix='',

pipeline=[

dict(type='LoadImageFromFile'),

dict(type='LoadAnnotations', with_bbox=True)

],

filter_empty_gt=False,

),

pipeline=train_pipeline)

我們需要在這里對驗證和測試集執(zhí)行相同的操作。這里我們不打算使用單獨的測試集,相反,我們將使用相同的測試集進行驗證和測試。

data = dict(

samples_per_gpu=8,

workers_per_gpu=4,

persistent_workers=True,

train=train_dataset,

val=dict(

type=dataset_type,

classes=classes,

ann_file='test.json',

img_prefix='',

pipeline=test_pipeline),

test=dict(

type=dataset_type,

classes=classes,

ann_file='test.json',

img_prefix='',

pipeline=test_pipeline))

我們將只對模型進行20個epoch的訓(xùn)練,并每5個階段獲得一次驗證結(jié)果。我們不需要再訓(xùn)練了,因為我們只在20個epoch里取得了不錯的成績。

max_epochs = 20

interval = 5

訓(xùn)練

我們很樂意使用數(shù)據(jù)集部分。接下來我們需要做的是訓(xùn)練模型。mmdetection最棒的部分? 是,所有關(guān)于訓(xùn)練的事情都已經(jīng)為你們做了。你所需要做的就是從tools目錄運行訓(xùn)練腳本,并將路徑傳遞給我們在上面創(chuàng)建的數(shù)據(jù)集配置。

python3 tools/train.py yolox_s_config.py

你已經(jīng)成功訓(xùn)練了!

推理

讓我們看看我們的模型在一些示例上的表現(xiàn)。你一定想知道,訓(xùn)練模型有多容易,必須有一個命令來對圖像進行推理?

有!但是,不要讓訓(xùn)練模型的簡單程序拖累了你。讓我們編寫一些用于推理的代碼,但讓你感到高興的是,它不到10行代碼。

from mmdet.a(chǎn)pis import init_detector, inference_detector, show_result_pyplot

config_file = 'yolox_s_config.py'

checkpoint_file = 'best_bbox_mAP_epoch_20.pth'

device = 'cuda:0'

# init a detector

model = init_detector(config_file, checkpoint_file, device=device)

# inference the demo image

image_path = 'demo.jpg'

op = inference_detector(model, image_path)

show_result_pyplot(model, image_path, op, score_thr=0.6)

這將顯示一個帶有邊界框的圖像,邊界框上繪制有預(yù)測的類名。下面是一個來自數(shù)據(jù)集的示例圖像,其中包含模型預(yù)測。

poYBAGOP8-iAauhBAADGTWEaNMU698.jpg

我們做到了!

你也可以嘗試我們預(yù)先訓(xùn)練的模型,并使用它進行推理。

結(jié)論

今天,我們了解了現(xiàn)實世界中普遍存在的一個新問題,并嘗試使用像YOLOX這樣的最先進模型來解決這個問題?.

我們還使用了mmdetection? ,它是深度學(xué)習(xí)社區(qū)中用于訓(xùn)練對象檢測模型的領(lǐng)先開源庫之一。如果我不提如何檢測,那將是不公平的? 。

在幾乎沒有任何自定義腳本的情況下,讓我們?nèi)绱丝焖?、輕松地解決問題。

磐創(chuàng)AI

審核編輯 :李倩

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 計算機視覺
    +關(guān)注

    關(guān)注

    8

    文章

    1690

    瀏覽量

    45875
  • 深度學(xué)習(xí)
    +關(guān)注

    關(guān)注

    73

    文章

    5439

    瀏覽量

    120798
  • PCB
    PCB
    +關(guān)注

    關(guān)注

    1

    文章

    1761

    瀏覽量

    13204
收藏 人收藏

    評論

    相關(guān)推薦

    基于AI深度學(xué)習(xí)的缺陷檢測系統(tǒng)

    在工業(yè)生產(chǎn)中,缺陷檢測是確保產(chǎn)品質(zhì)量的關(guān)鍵環(huán)節(jié)。傳統(tǒng)的人工檢測方法不僅效率低下,且易受人為因素影響,導(dǎo)致誤檢和漏檢問題頻發(fā)。隨著人工智能技術(shù)的飛速發(fā)展,特別是深度學(xué)習(xí)技術(shù)的崛起,基于AI深度學(xué)習(xí)的
    的頭像 發(fā)表于 07-08 10:30 ?805次閱讀

    yolox_bytetrack_osd_encode示例自帶的yolox模型效果不好是怎么回事?

    yolox_bytetrack_osd_encode示例自帶的模型如下,我看示例里面yolox_group.json、yolox_infer.json、yolox
    發(fā)表于 07-05 07:51

    外觀缺陷檢測原理

    的結(jié)合應(yīng)用加速滲透進工業(yè)產(chǎn)品的 外觀缺陷檢測 領(lǐng)域。思普泰克憑借深耕機器視覺多年沉淀的技術(shù)實力,建立以深度學(xué)習(xí)技術(shù)為核心的差異化發(fā)展優(yōu)勢,開發(fā)出視覺引擎等工業(yè)級視覺應(yīng)用產(chǎn)品,全面賦能產(chǎn)品外觀缺陷
    的頭像 發(fā)表于 06-17 17:38 ?330次閱讀
    外觀<b class='flag-5'>缺陷</b><b class='flag-5'>檢測</b>原理

    友思特應(yīng)用 | 高精度呈現(xiàn):PCB多類型缺陷檢測系統(tǒng)

    高精度呈現(xiàn)!友思特PCB多類型缺陷檢測系統(tǒng),借由深度學(xué)習(xí)自動標(biāo)注功能排查全部微小缺陷,為工業(yè) PCB生產(chǎn)制造提供了先進可靠的質(zhì)量保障。
    的頭像 發(fā)表于 04-10 17:51 ?759次閱讀
    友思特應(yīng)用 | 高精度呈現(xiàn):<b class='flag-5'>PCB</b>多類型<b class='flag-5'>缺陷</b><b class='flag-5'>檢測</b>系統(tǒng)

    如何應(yīng)對工業(yè)缺陷檢測數(shù)據(jù)短缺問題?

    這篇論文介紹了一種文本引導(dǎo)的變分圖像生成方法,旨在解決工業(yè)制造中的異常檢測和分割問題。傳統(tǒng)方法通過訓(xùn)練非缺陷數(shù)據(jù)的分布來進行異常檢測,但這需要大量且多樣化的非缺陷數(shù)據(jù)。
    發(fā)表于 03-14 10:15 ?339次閱讀
    如何應(yīng)對工業(yè)<b class='flag-5'>缺陷</b><b class='flag-5'>檢測</b>數(shù)據(jù)短缺問題?

    洞察缺陷:精準(zhǔn)檢測的關(guān)鍵

    缺陷檢測是生產(chǎn)過程的重要組成部分。它有助于確保產(chǎn)品的高質(zhì)量和滿足客戶的需求。缺陷檢測有許多不同的解決方案,特定應(yīng)用的最佳解決方案取決于所檢測
    的頭像 發(fā)表于 02-26 15:44 ?286次閱讀
    洞察<b class='flag-5'>缺陷</b>:精準(zhǔn)<b class='flag-5'>檢測</b>的關(guān)鍵

    基于深度學(xué)習(xí)的芯片缺陷檢測梳理分析

    雖然表面缺陷檢測技術(shù)已經(jīng)不斷從學(xué)術(shù)研究走向成熟的工業(yè)應(yīng)用,但是依然有一些需要解決的問題。基于以上分析可以發(fā)現(xiàn),由于芯片表面缺陷的獨特性質(zhì),通用目標(biāo)檢測算法不適合直接應(yīng)用于芯片表面
    發(fā)表于 02-25 14:30 ?1102次閱讀
    基于深度學(xué)習(xí)的芯片<b class='flag-5'>缺陷</b><b class='flag-5'>檢測</b>梳理分析

    無紡布缺陷在線檢測儀怎么用

    隨著科技的不斷發(fā)展,無紡布作為一種新型環(huán)保材料,已經(jīng)廣泛應(yīng)用于各個領(lǐng)域。然而,無紡布的生產(chǎn)過程中難免會出現(xiàn)一些缺陷,如針眼、孔洞等。為了提高無紡布的質(zhì)量,許多企業(yè)開始使用無紡布缺陷在線檢測儀進行實時
    的頭像 發(fā)表于 02-03 14:58 ?431次閱讀
    無紡布<b class='flag-5'>缺陷</b>在線<b class='flag-5'>檢測</b>儀怎么用

    描繪未知:數(shù)據(jù)缺乏場景的缺陷檢測方案

    了解更多方案細節(jié),歡迎您訪問官網(wǎng)(Neurocle | 友思特 機器視覺 光電檢測 ) 導(dǎo)讀 深度學(xué)習(xí)模型幫助工業(yè)生產(chǎn)實現(xiàn)更加精確的缺陷檢測,但其準(zhǔn)確性可能受制于數(shù)據(jù)樣本的數(shù)量。 友思特
    的頭像 發(fā)表于 01-25 10:46 ?458次閱讀
    描繪未知:數(shù)據(jù)缺乏場景的<b class='flag-5'>缺陷</b><b class='flag-5'>檢測</b>方案

    PCB外觀缺陷及原因分析

    本篇依據(jù)IPC-A-600標(biāo)準(zhǔn)中對于PCB驗收中提到的主要外觀缺陷進行說明; ?對于不同缺陷的接受標(biāo)準(zhǔn),IPC標(biāo)準(zhǔn)中已有明確說明,不再贅述; 本文側(cè)重于缺陷的產(chǎn)生過程及改善方法,僅供參
    發(fā)表于 01-09 13:48 ?1次下載

    電子元件缺陷檢測方法

    電子元件是現(xiàn)代科技中不可或缺的一部分,但由于制造過程中的復(fù)雜性,元件可能出現(xiàn)各種缺陷。為了保證電子元件的質(zhì)量和可靠性,缺陷檢測是必不可少的過程。本文將詳細介紹電子元件缺陷
    的頭像 發(fā)表于 12-18 14:46 ?1000次閱讀

    柔性印刷線路板缺陷檢測方法指南

    現(xiàn)有的FPC缺陷檢測算法多衍生于PCB檢測算法,但受本身獨特性限制,F(xiàn)PC板缺陷要求更高,檢測
    發(fā)表于 11-30 15:29 ?426次閱讀

    分析蔡司工業(yè)CT中的自動缺陷檢測

    蔡司 自動缺陷檢測:適用于您的應(yīng)用領(lǐng)域的AI軟件 蔡司自動化缺陷檢測機器學(xué)習(xí)軟件將人工智能應(yīng)用于3D CT和2D X射線系統(tǒng),樹立了新的標(biāo)桿,可對
    的頭像 發(fā)表于 11-15 11:14 ?459次閱讀

    工業(yè)視覺缺陷檢測的算法總結(jié)

    缺陷檢測是工業(yè)視覺領(lǐng)域非常重要的應(yīng)用之一。幾乎所有的工業(yè)產(chǎn)品在流入市場之前都會有缺陷檢測的環(huán)節(jié),目的是確保產(chǎn)品是合格的。
    的頭像 發(fā)表于 11-14 11:06 ?874次閱讀

    電極片常見缺陷 電極片缺陷檢測方法 電極片缺陷對電池性能的影響

    電極片常見缺陷 電極片缺陷檢測方法 電極片缺陷對電池性能的影響? 電極片是電池的重要組成部分之一,其質(zhì)量和性能直接影響到電池的工作效率和穩(wěn)定性。然而,電極片在制造和使用過程中常常會出現(xiàn)
    的頭像 發(fā)表于 11-10 14:54 ?1313次閱讀