最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

二維碼及條形碼智能檢測軟件(Python+YOLOv5深度學(xué)習(xí)模型+清新界面)

2023-03-23 10:51 作者:思緒亦無限  | 我要投稿


摘要:二維碼及條形碼智能檢測軟件用于檢測常用條形碼和二維碼,對其位置進(jìn)行精確定位、記錄并顯示檢測結(jié)果,輔助識別算法定位條形碼或二維碼。本文詳細(xì)介紹二維碼及條形碼智能檢測軟件,在介紹算法原理的同時(shí),給出Python的實(shí)現(xiàn)代碼、訓(xùn)練數(shù)據(jù)集,以及PyQt的UI界面。基于YOLOv5算法實(shí)現(xiàn)多目標(biāo)進(jìn)行檢測,在界面中可以選擇各種圖片、視頻進(jìn)行檢測;博文提供了完整的Python代碼和使用教程,適合新入門的朋友參考,完整代碼資源文件請轉(zhuǎn)至文末的下載鏈接。

完整代碼下載:https://mbd.pub/o/bread/ZJaXlZlt

參考視頻演示:https://www.bilibili.com/video/BV1vc41177Ki/

離線依賴庫下載:https://pan.baidu.com/s/1hW9z9ofV1FRSezTSj59JSg?pwd=oy4n?(提取碼:oy4n )

前言

????????二維碼是移動(dòng)互聯(lián)網(wǎng)與物聯(lián)網(wǎng)時(shí)代的重要入口之一,其廣泛應(yīng)用于物流快遞、電子商務(wù)、智慧工業(yè)等場景。傳統(tǒng)二維碼識別系統(tǒng)往往采用非智能化圖像處理技術(shù)實(shí)現(xiàn)單個(gè)二維碼的識別,對批量二維碼圖像則無法處理。本文利用最新人工智能技術(shù),通過構(gòu)建適用于批量二維碼識別的數(shù)據(jù)集,基于深度學(xué)習(xí)中的目標(biāo)檢測定位框架YOLOv5,實(shí)現(xiàn)了批量二維碼的檢測與定位,設(shè)計(jì)了一套批量二維碼識別系統(tǒng),解決了批量二維碼的快速定位與準(zhǔn)確識別。

????????本系統(tǒng)采用登錄注冊進(jìn)行用戶管理,對于圖片、視頻和攝像頭捕獲的實(shí)時(shí)畫面,可檢測醫(yī)療圖像,系統(tǒng)支持結(jié)果記錄、展示和保存,每次檢測的結(jié)果記錄在表格中。對此這里給出博主設(shè)計(jì)的界面,同款的簡約風(fēng),功能也可以滿足圖片、視頻和攝像頭的識別檢測,希望大家可以喜歡,初始界面如下圖:

????????檢測圖片時(shí)的界面截圖(點(diǎn)擊圖片可放大)如下圖,可檢測畫面中存在的多個(gè)目標(biāo),也可開啟攝像頭或視頻檢測:

???????? 詳細(xì)的功能演示效果參見博主的B站視頻或下一節(jié)的動(dòng)圖演示,覺得不錯(cuò)的朋友敬請點(diǎn)贊、關(guān)注加收藏!系統(tǒng)UI界面的設(shè)計(jì)工作量較大,界面美化更需仔細(xì)雕琢,大家有任何建議或意見和可在下方評論交流。


1.?效果演示

????????首先我們還是通過動(dòng)圖看一下識別的效果,系統(tǒng)主要實(shí)現(xiàn)的功能是對圖片、視頻和攝像頭畫面中的二維碼進(jìn)行識別,識別的結(jié)果可視化顯示在界面和圖像中,另外提供多個(gè)目標(biāo)的顯示選擇功能,演示效果如下。

(一)系統(tǒng)介紹

????????二維碼及條形碼智能檢測軟件主要用于日常二維碼和條形碼的檢測定位,基于YOLOv5算法檢測二維碼(或條形碼)的精確位置,保存和記錄標(biāo)記框坐標(biāo)和識別類別,以輔助識別算法獲取其感興趣區(qū)域(ROI);軟件提供登錄注冊功能,可進(jìn)行用戶管理;軟件能夠有效通過圖片、視頻等文件形式,檢測定位二維碼(或條形碼)區(qū)域,并記錄結(jié)果在界面表格中方便查看;可開啟攝像頭實(shí)時(shí)定位條形碼和二維碼位置,支持結(jié)果記錄、展示和保存。

(二)技術(shù)特點(diǎn)

???????? (1)YOLOv5目標(biāo)檢測算法檢測定位,模型支持更換;
???????? (2)實(shí)時(shí)定位條形碼或二維碼位置,展示、記錄和保存情況;
???????? (3)支持圖片、視頻等圖像中的二維碼或條形碼檢測;
???????? (4)支持用戶登錄、注冊,檢測結(jié)果可視化功能;

(三)用戶注冊登錄界面

????????這里設(shè)計(jì)了一個(gè)登錄界面,可以注冊賬號和密碼,然后進(jìn)行登錄。界面還是參考了當(dāng)前流行的UI設(shè)計(jì),左側(cè)是一個(gè)LOGO圖,右側(cè)輸入賬號、密碼、驗(yàn)證碼等等。

(四)選擇圖片識別

????????系統(tǒng)允許選擇圖片文件進(jìn)行檢測,點(diǎn)擊圖片選擇按鈕圖標(biāo)選擇圖片后,顯示所有識別的結(jié)果,可通過下拉選框查看單個(gè)結(jié)果,以便具體判斷某一特定目標(biāo)。本功能的界面展示如下圖所示:

(五)視頻識別效果展示

????????很多時(shí)候我們需要定位一段視頻中的多個(gè)二維碼,這里設(shè)計(jì)了視頻選擇功能。點(diǎn)擊視頻按鈕可選擇待檢測的視頻,系統(tǒng)會自動(dòng)解析視頻逐幀檢測可能存在的多個(gè)二維碼,并將二維碼的分類和計(jì)數(shù)結(jié)果記錄在右下角表格中,效果如下圖所示:

(六)攝像頭檢測效果展示

????????在真實(shí)場景中,我們往往利用攝像頭獲取實(shí)時(shí)畫面,并檢測二維碼或條形碼位置,因此本文考慮到此項(xiàng)功能。如下圖所示,點(diǎn)擊攝像頭按鈕后系統(tǒng)進(jìn)入準(zhǔn)備狀態(tài),系統(tǒng)顯示實(shí)時(shí)畫面并開始檢測畫面中的二維碼,識別結(jié)果展示如下圖:

2.?二維碼及條形碼智能檢測

(一)基于YOLOv5的二維碼及條形碼檢測

???????? YOLOv5的整體結(jié)構(gòu)如下圖所示,和之前版本的Yolo類似,整個(gè)YoloV5可以依然可以分為三個(gè)部分,分別是Backbone,F(xiàn)PN以及Yolo Head。

???????? Backbone可以被稱作YoloV5的主干特征提取網(wǎng)絡(luò),根據(jù)它的結(jié)構(gòu)以及之前Yolo主干的叫法,我一般叫它CSPDarknet,輸入的圖片首先會在CSPDarknet里面進(jìn)行特征提取,提取到的特征可以被稱作特征層,是輸入圖片的特征集合。在主干部分,我們獲取了三個(gè)特征層進(jìn)行下一步網(wǎng)絡(luò)的構(gòu)建,這三個(gè)特征層我稱它為有效特征層。

????????FPN可以被稱作YoloV5的加強(qiáng)特征提取網(wǎng)絡(luò),在主干部分獲得的三個(gè)有效特征層會在這一部分進(jìn)行特征融合,特征融合的目的是結(jié)合不同尺度的特征信息。在FPN部分,已經(jīng)獲得的有效特征層被用于繼續(xù)提取特征。在YoloV5里依然使用到了Panet的結(jié)構(gòu),我們不僅會對特征進(jìn)行上采樣實(shí)現(xiàn)特征融合,還會對特征再次進(jìn)行下采樣實(shí)現(xiàn)特征融合。

????????Yolo Head是YoloV5的分類器與回歸器,通過CSPDarknet和FPN,我們已經(jīng)可以獲得三個(gè)加強(qiáng)過的有效特征層。每一個(gè)特征層都有寬、高和通道數(shù),此時(shí)我們可以將特征圖看作一個(gè)又一個(gè)特征點(diǎn)的集合,每一個(gè)特征點(diǎn)都有通道數(shù)個(gè)特征。Yolo Head實(shí)際上所做的工作就是對特征點(diǎn)進(jìn)行判斷,判斷特征點(diǎn)是否有物體與其對應(yīng)。與以前版本的Yolo一樣,YoloV5所用的解耦頭是一起的,也就是分類和回歸在一個(gè)1X1卷積里實(shí)現(xiàn)。

????????因此,整個(gè)YoloV5網(wǎng)絡(luò)所作的工作就是 特征提取-特征加強(qiáng)-預(yù)測特征點(diǎn)對應(yīng)的物體情況。整個(gè)項(xiàng)目的實(shí)現(xiàn)步驟如下圖所示,首先需要配置好Python環(huán)境依賴,利用YOLOv5加載訓(xùn)練數(shù)據(jù)集進(jìn)行訓(xùn)練,得到pt模型后用于UI界面中的二維碼及條形碼檢測定位。

(二)數(shù)據(jù)集及訓(xùn)練

????????這里我們使用的二維碼識別數(shù)據(jù)集,包含訓(xùn)練集1749張圖片,驗(yàn)證集500張圖片,測試集250張圖片,共計(jì)2499張圖片。部分圖片和標(biāo)注情況如下圖所示。

????????每張圖像均提供了圖像類標(biāo)記信息,圖像中二維碼及條形碼的bounding box,二維碼及條形碼的關(guān)鍵part信息,以及二維碼及條形碼的屬性信息,數(shù)據(jù)集并解壓后得到如下的圖片:

????????有了整理好的數(shù)據(jù)集,我們設(shè)置好訓(xùn)練參數(shù)便可以運(yùn)行train.py文件進(jìn)行訓(xùn)練。在深度學(xué)習(xí)中,我們通常通過損失函數(shù)下降的曲線來觀察模型訓(xùn)練的情況。而YOLOv5訓(xùn)練時(shí)主要包含三個(gè)方面的損失:矩形框損失(box_loss)、置信度損失(obj_loss)和分類損失(cls_loss),在訓(xùn)練結(jié)束后,我們也可以在logs目錄下找到生成對若干訓(xùn)練過程統(tǒng)計(jì)圖。下圖為博主訓(xùn)練二維碼及條形碼類識別的模型訓(xùn)練曲線圖。

? ? ? ? 一般我們會接觸到兩個(gè)指標(biāo),分別是召回率recall和精度precision,兩個(gè)指標(biāo)p和r都是簡單地從一個(gè)角度來判斷模型的好壞,均是介于0到1之間的數(shù)值,其中接近于1表示模型的性能越好,接近于0表示模型的性能越差,為了綜合評價(jià)目標(biāo)檢測的性能,一般采用均值平均密度map來進(jìn)一步評估模型的好壞。我們通過設(shè)定不同的置信度的閾值,可以得到在模型在不同的閾值下所計(jì)算出的p值和r值,一般情況下,p值和r值是負(fù)相關(guān)的,繪制出來可以得到如下圖所示的曲線,其中曲線的面積我們稱AP,目標(biāo)檢測模型中每種目標(biāo)可計(jì)算出一個(gè)AP值,對所有的AP值求平均則可以得到模型的mAP值。

? ? ? ? 以PR-curve為例,可以看到我們的模型在驗(yàn)證集上的均值平均準(zhǔn)確率為0.793。

????????博主對整個(gè)系統(tǒng)進(jìn)行了詳細(xì)測試,最終開發(fā)出一版流暢得到清新界面,就是博文演示部分的展示,完整的UI界面、測試圖片視頻、代碼文件,以及Python離線依賴包(方便安裝運(yùn)行,也可自行配置環(huán)境),均已打包上傳,感興趣的朋友可以通過下載鏈接獲取。

下載鏈接

????若您想獲得博文中涉及的實(shí)現(xiàn)完整全部程序文件(包括測試圖片、視頻,py, UI文件等,如下圖),這里已打包上傳至博主的面包多平臺,見可參考博客與視頻,已將所有涉及的文件同時(shí)打包到里面,點(diǎn)擊即可運(yùn)行,完整文件截圖如下:

????在文件夾下的資源顯示如下,下面的鏈接中也給出了Python的離線依賴包,讀者可在正確安裝Anaconda和Pycharm軟件后,復(fù)制離線依賴包至項(xiàng)目目錄下進(jìn)行安裝,離線依賴的使用詳細(xì)演示也可見本人B站視頻:win11從頭安裝軟件和配置環(huán)境運(yùn)行深度學(xué)習(xí)項(xiàng)目、Win10中使用pycharm和anaconda進(jìn)行python環(huán)境配置教程。

注意:該代碼采用Pycharm+Python3.8開發(fā),經(jīng)過測試能成功運(yùn)行,運(yùn)行界面的主程序?yàn)閞unMain.py和LoginUI.py,測試圖片腳本可運(yùn)行testPicture.py,測試視頻腳本可運(yùn)行testVideo.py。為確保程序順利運(yùn)行,請按照requirements.txt配置Python依賴包的版本。Python版本:3.8,請勿使用其他版本,詳見requirements.txt文件;

完整資源中包含數(shù)據(jù)集及訓(xùn)練代碼,環(huán)境配置與界面中文字、圖片、logo等的修改方法請見視頻,項(xiàng)目完整文件下載請見參考博客文章里面,或參考視頻的簡介處給出:???

完整代碼下載:https://mbd.pub/o/bread/ZJaXlZlt

參考視頻演示:https://www.bilibili.com/video/BV1vc41177Ki/

離線依賴庫下載:https://pan.baidu.com/s/1hW9z9ofV1FRSezTSj59JSg?pwd=oy4n?(提取碼:oy4n )

界面中文字、圖標(biāo)和背景圖修改方法:

????????在Qt Designer中可以徹底修改界面的各個(gè)控件及設(shè)置,然后將ui文件轉(zhuǎn)換為py文件即可調(diào)用和顯示界面。如果只需要修改界面中的文字、圖標(biāo)和背景圖的,可以直接在ConfigUI.config文件中修改,步驟如下:
????????(1)打開UI_rec/tools/ConfigUI.config文件,若亂碼請選擇GBK編碼打開。
????????(2)如需修改界面文字,只要選中要改的字符替換成自己的就好。
????????(3)如需修改背景、圖標(biāo)等,只需修改圖片的路徑。例如,原文件中的背景圖設(shè)置如下:

????????可修改為自己的名為background2.png圖片(位置在UI_rec/icons/文件夾中),可將該項(xiàng)設(shè)置如下即可修改背景圖:

結(jié)束語

????????由于博主能力有限,博文中提及的方法即使經(jīng)過試驗(yàn),也難免會有疏漏之處。希望您能熱心指出其中的錯(cuò)誤,以便下次修改時(shí)能以一個(gè)更完美更嚴(yán)謹(jǐn)?shù)臉幼?,呈現(xiàn)在大家面前。同時(shí)如果有更好的實(shí)現(xiàn)方法也請您不吝賜教。

二維碼及條形碼智能檢測軟件(Python+YOLOv5深度學(xué)習(xí)模型+清新界面)的評論 (共 條)

分享到微博請遵守國家法律
惠来县| 安徽省| 峡江县| 襄汾县| 华容县| 中山市| 双柏县| 南宁市| 娱乐| 嘉荫县| 安图县| 台中市| 黎川县| 封开县| 阿坝| 津南区| 安顺市| 清徐县| 古交市| 天全县| 英德市| 连云港市| 修武县| 大洼县| 武汉市| 辽阳县| 嘉峪关市| 墨竹工卡县| 都匀市| 武城县| 峡江县| 叶城县| 个旧市| 河池市| 定远县| 彰武县| 黄冈市| 五常市| 延安市| 大冶市| 美姑县|