色婷婷AV无码久久精品,久久天天躁狠狠躁夜夜97,羞羞麻豆国产精品1区2区3区,啪影院免费线观看视频,思思久久er99精品亚洲

常州機器視覺培訓(xùn)

常州上位機軟件開發(fā)

常州工業(yè)機器人編程設(shè)計培訓(xùn)

常州PLC培訓(xùn)

常州PLC

常州PLC編程培訓(xùn)

常州電工培訓(xùn)

常州和訊plc培訓(xùn)中心歡迎您!
當(dāng)前位置:網(wǎng)站首頁 > 新聞中心 新聞中心
實踐教程|基于Yolo算法的AI數(shù)鋼筋-常州上位機培訓(xùn),常州機器視覺培訓(xùn)
日期:2024-2-20 16:23:58人氣:  標(biāo)簽:常州上位機培訓(xùn) 常州機器視覺培訓(xùn)

導(dǎo)讀

1.jpg

在社會智能化的發(fā)展趨勢之下,越來越多的傳統(tǒng)行業(yè)開始向著數(shù)字化的方向轉(zhuǎn)型,而建筑行業(yè)也正經(jīng)歷著通過人工智能技術(shù)實現(xiàn)的改革。


鋼筋是建筑業(yè)的重要材料,龐大的數(shù)量、工地現(xiàn)場環(huán)境復(fù)雜以及人工點驗錯漏等現(xiàn)實因素為鋼筋點驗工作制造了難度,那么如何才能快速且準(zhǔn)確地完成對于整個建筑施工過程極為重要的鋼筋點驗工作環(huán)節(jié)呢?今天就帶大家了解一下“AI數(shù)鋼筋”——通過人工智能技術(shù)實現(xiàn)鋼筋數(shù)量統(tǒng)計。


1 問題背景

鋼筋數(shù)量統(tǒng)計是鋼材生產(chǎn)、銷售過程及建筑施工過程中的重要環(huán)節(jié)。目前,工地現(xiàn)場是采用人工計數(shù)的方式對進場的車輛裝載的鋼筋進行計數(shù),驗收人員需要對車上的鋼筋進行現(xiàn)場人工點根,在對鋼筋進行打捆后,通過不同顏色的標(biāo)記來區(qū)分鋼筋是否計數(shù),在確認(rèn)數(shù)量后鋼筋車才能完成進場卸貨,如圖中所示:

2.png

3.png

這種人工計數(shù)的方式不僅浪費大量的時間和精力、效率低下,并且工人長時間高強度的工作使其視覺和大腦很容易出現(xiàn)疲勞,導(dǎo)致計數(shù)誤差大大增加,人工計數(shù)已經(jīng)不能滿足鋼筋生產(chǎn)廠家自動化生產(chǎn)和工地現(xiàn)場物料盤點精準(zhǔn)性的需求,這種現(xiàn)狀促使鋼筋數(shù)量統(tǒng)計向著智能化方向發(fā)展。


所謂“AI數(shù)鋼筋”就是,通過多目標(biāo)檢測機器視覺方法以實現(xiàn)鋼筋數(shù)量智能統(tǒng)計,達(dá)到提高勞動效率和鋼筋數(shù)量統(tǒng)計精確性的效果。目標(biāo)檢測算法通過與攝像頭結(jié)合,可以實現(xiàn)自動鋼筋計數(shù),再結(jié)合人工修改少量誤檢的方式,可以智能、高效地完成鋼筋計數(shù)任務(wù)。


2 算法介紹

2.1 目標(biāo)檢測介紹

首先,讓我們一起了解一下什么是“目標(biāo)檢測”。


目標(biāo)檢測是對圖像分類任務(wù)的進一步加深,目標(biāo)檢測不僅要識別出圖片中各種類別的目標(biāo),還要將目標(biāo)的位置找出來用矩形框框住。

4.png

目標(biāo)檢測結(jié)果如上圖所示,將需要檢測的目標(biāo)檢測出來并用邊界框框出來,同時在框子上面顯示出該目標(biāo)屬于該分類的一個得分情況。


2.2 目標(biāo)檢測算法的基本流程

目標(biāo)檢測實際上是要同時解決定位和識別兩個問題。傳統(tǒng)目標(biāo)檢測算法的基本流程是,首先給定待檢測圖片,對其進行候選框提取,候選框的提取是通過滑動窗口的方式進行的;再對每個窗口的局部信息進行特征提;然后對候選區(qū)域提取出的特征進行分類判定,判斷當(dāng)前窗口中的對象是目標(biāo)還是背景;最后采用非極大值抑制(Non-Maximum Suppression,NMS)方法進行篩選,去除重復(fù)窗口,找出最佳目標(biāo)檢測位置。

5.png

2.3 算法選擇

本次鋼筋計數(shù)任務(wù),將選擇單階段目標(biāo)檢測YOLO系列算法來完成。YOLO系列算法是目前使用最多的目標(biāo)檢測算法,它最大的特點就是檢測速度快,并且現(xiàn)在檢測精度(即mAP)也逐步提高,因而成為時下最熱門的目標(biāo)檢測算法之一。YOLO系列算法一共有5個版本,其中YOLO v1到v3是由同一個作者Joseph設(shè)計的,YOLO v4到v5則由其他作者設(shè)計,目前YOLO v1到Y(jié)OLO v4已有相關(guān)論文和算法結(jié)構(gòu)設(shè)計,而YOLO v5僅有算法結(jié)構(gòu)設(shè)計,尚無論文發(fā)表,為此我們選擇這一較新的YOLO v5算法作為本次鋼筋計數(shù)算法研究的對象。

6.png

YOLO算法是將目標(biāo)檢測問題轉(zhuǎn)化為回歸問題,使用回歸的思想,對給定輸入圖像,直接在圖像的多個位置上回歸出這個位置的目標(biāo)邊框以及目標(biāo)類別。給定一個輸入圖像,將其劃分為S*S的網(wǎng)格,如果某目標(biāo)的中心落于網(wǎng)格中,則該網(wǎng)格負(fù)責(zé)預(yù)測該目標(biāo),對于每一個網(wǎng)格,預(yù)測B個邊界框及邊界框的置信度,包含邊界框含有目標(biāo)的可能性大小和邊界框的準(zhǔn)確性,此外對于每個網(wǎng)格還需預(yù)測在多個類別上的概率。在完成目標(biāo)窗口的預(yù)測之后,根據(jù)閾值去除可能性比較低的目標(biāo)窗口,最后NMS去除冗余窗口即可,整個過程非常簡單,不需要中間的候選框生成網(wǎng)絡(luò),直接回歸便完成了位置和類別的判定。下圖是YOLO v5算法基本框架:

7.jpg

由上圖可知,YOLO v5主要由輸入端、Backbone、Neck以及Prediction四部分組成。其中各部分含義分別為:


Backbone:在不同圖像細(xì)粒度上聚合并形成圖像特征的卷積神經(jīng)網(wǎng)絡(luò)。


Neck:一系列混合和組合圖像特征的網(wǎng)絡(luò)層,并將圖像特征傳遞到預(yù)測層。


Prediction(輸出端):對圖像特征進行預(yù)測,生成邊界框和并預(yù)測類別。


YOLO v5各組成部分包括的基礎(chǔ)組件有:


CBL:由Conv+BN+Leaky_relu激活函數(shù)組成


Res unit:借鑒ResNet網(wǎng)絡(luò)中的殘差結(jié)構(gòu),用來構(gòu)建深層網(wǎng)絡(luò)


CSP1_X:借鑒CSPNet網(wǎng)絡(luò)結(jié)構(gòu),該模塊由CBL模塊、Res unint模塊以及卷積層、Concate組成


CSP2_X:借鑒CSPNet網(wǎng)絡(luò)結(jié)構(gòu),該模塊由卷積層和X個Res unint模塊Concate組成而成


Focus:首先將多個slice結(jié)果Concat起來,然后將其送入CBL模塊中


SPP:采用1×1、5×5、9×9和13×13的最大池化方式,進行多尺度特征融合


YOLO v5各組成部分詳細(xì)介紹

(1) 輸入端


YOLO v5使用Mosaic數(shù)據(jù)增強操作提升模型的訓(xùn)練速度和網(wǎng)絡(luò)的精度;并提出了一種自適應(yīng)錨框計算與自適應(yīng)圖片縮放方法。


Mosaic數(shù)據(jù)增強


Mosaic數(shù)據(jù)增強利用四張圖片,并且按照隨機縮放、隨機裁剪和隨機排布的方式對四張圖片進行拼接,每一張圖片都有其對應(yīng)的框,將四張圖片拼接之后就獲得一張新的圖片,同時也獲得這張圖片對應(yīng)的框,然后我們將這樣一張新的圖片傳入到神經(jīng)網(wǎng)絡(luò)當(dāng)中去學(xué)習(xí),相當(dāng)于一下子傳入四張圖片進行學(xué)習(xí)了。該方法極大地豐富了檢測物體的背景,且在標(biāo)準(zhǔn)化BN計算的時候一下子計算四張圖片的數(shù)據(jù),所以本身對batch size不是很依賴。

8.jpg

自適應(yīng)錨框計算


在YOLO系列算法中,針對不同的數(shù)據(jù)集,都需要設(shè)定特定長寬的錨點框。在網(wǎng)絡(luò)訓(xùn)練階段,模型在初始階段,模型在初始錨點框的基礎(chǔ)上輸出對應(yīng)的預(yù)測框,計算其與GT框之間的差距,并執(zhí)行反向更新操作,從而更新整個網(wǎng)絡(luò)的參數(shù),因此設(shè)定初始錨點框是比較關(guān)鍵的一環(huán)。在YOLO v3和YOLO v4中,訓(xùn)練不同的數(shù)據(jù)集,都是通過單獨的程序運行來獲得初始錨點框。而在YOLO v5中將此功能嵌入到代碼中,每次訓(xùn)練時,根據(jù)數(shù)據(jù)集的名稱自適應(yīng)的計算出最佳的錨點框,用戶可以根據(jù)自己的需求將功能關(guān)閉或者打開,指令為:

29.png

自適應(yīng)圖片縮放


在目標(biāo)檢測算法中,不同的圖片長寬都不相同,因此常用的方式是將原始圖片統(tǒng)一縮放到一個標(biāo)準(zhǔn)尺寸,再送入檢測網(wǎng)絡(luò)中。而原始的縮放方法存在著一些問題,由于在實際的使用中的很多圖片的長寬比不同,因此縮放填充之后,兩端的黑邊大小都不相同,然而如果填充的過多,則會存在大量的信息冗余,從而影響整個算法的推理速度。為了進一步提升YOLO v5的推理速度,該算法提出一種方法能夠自適應(yīng)的添加最少的黑邊到縮放之后的圖片中。具體的實現(xiàn)步驟如下所述:


① 根據(jù)原始圖片大小以及輸入到網(wǎng)絡(luò)的圖片大小計算縮放比例

9.png

②根據(jù)原始圖片大小與縮放比例計算縮放后的圖片大小

10.png

③計算黑邊填充數(shù)值

11.png

其中,416表示YOLO v5網(wǎng)絡(luò)所要求的圖片寬度,312表示縮放后圖片的寬度。首先執(zhí)行相減操作來獲得需要填充的黑邊長度104;然后對該數(shù)值執(zhí)行取余操作,即104%32=8,使用32是因為整個YOLOv5網(wǎng)絡(luò)執(zhí)行了5次下采樣操作。最后對該數(shù)值除以2,也就是將填充的區(qū)域分散到兩邊。這樣將416*416大小的圖片縮小到416*320大小,因而極大地提升了算法的推理速度。


(2) Backone 網(wǎng)絡(luò)


Focus結(jié)構(gòu)


Focus對圖片進行切片操作,具體操作是在一張圖片中每隔一個像素拿到一個值,類似于鄰近下采樣,這樣就拿到了四張圖片,四張圖片互補,長的差不多,但是沒有信息丟失,因此將W、H信息就集中到通道空間,輸入通道擴充了4倍,即拼接起來的圖片相對于原先的RGB三通道模式變成了12個通道,最后將得到的新圖片再經(jīng)過卷積操作,最終得到了沒有信息丟失情況下的二倍下采樣特征圖。如下圖所示,原始輸入圖片大小為608*608*3,經(jīng)過Slice與Concat操作之后輸出一個304*304*12的特征映射;接著經(jīng)過一個通道個數(shù)為32的Conv層,輸出一個304*304*32大小的特征映射。

12.png

CSP結(jié)構(gòu)


CSPNet主要是將feature map拆成兩個部分,一部分進行卷積操作,另一部分和上一部分卷積操作的結(jié)果進行concate。在分類問題中,使用CSPNet可以降低計算量,但是準(zhǔn)確率提升很。辉谀繕(biāo)檢測問題中,使用CSPNet作為Backbone帶來的提升比較大,可以有效增強CNN的學(xué)習(xí)能力,同時也降低了計算量。YOLO v5設(shè)計了兩種CSP結(jié)構(gòu),CSP1_X結(jié)構(gòu)應(yīng)用于Backbone網(wǎng)絡(luò)中,CSP2_X結(jié)構(gòu)應(yīng)用于Neck網(wǎng)絡(luò)中。


(3) Neck網(wǎng)絡(luò)


在YOLO v4中開始使用FPN-PAN。其結(jié)構(gòu)如下圖所示,F(xiàn)PN層自頂向下傳達(dá)強語義特征,而PAN塔自底向上傳達(dá)定位特征。

13.png

YOLO v5的Neck仍采用了FPN+PAN結(jié)構(gòu),但是在它的基礎(chǔ)上做了一些改進操作,YOLO v4的Neck結(jié)構(gòu)中,采用的都是普通的卷積操作,而YOLO v5的Neck中,采用CSPNet設(shè)計的CSP2結(jié)構(gòu),從而加強了網(wǎng)絡(luò)特征融合能力。


(4) 輸出端


YOLO v5采用CIOU_LOSS 作為bounding box 的損失函數(shù),分類分支采用的loss是BCE,conf分支也是BCE。


YOLO v5中最有亮點的改變是對正樣本的定義。在YOLO v3中,其正樣本區(qū)域也就是anchor匹配策略非常粗暴:保證每個gt bbox一定有一個唯一的anchor進行對應(yīng),匹配規(guī)則就是IOU最大,并且某個gt一定不可能在三個預(yù)測層的某幾層上同時進行匹配。然而,我們從FCOS等論文中了解到,增加高質(zhì)量的正樣本anchor能夠加速模型收斂并提高召回。因此,YOLO v5對此做出了改進,提出匹配規(guī)則:


采用shape匹配規(guī)則,分別將ground truth的寬高與anchor的寬高求比值,如果寬高比例小于設(shè)定閾值,則說明該GT和anchor匹配,將該anchor認(rèn)定為正樣本。否則,該anchor被濾掉,不參與bbox與分類計算。


將GT的中心最鄰近網(wǎng)格也作為正樣本anchor的參考點。因此,bbox的xy回歸分支的取值范圍不再是0-1,而是-0.5-1.5(0.5是網(wǎng)格中心偏移),因為跨網(wǎng)格預(yù)測了


YOLO v5算法目前根據(jù)網(wǎng)絡(luò)大小分為5n、5s、5m、5l、5x,具體參數(shù)量大小、單幀、檢測速度和mAP如下圖所示。

14.png

3 訓(xùn)練模型

3.1 數(shù)據(jù)集選擇

我們選擇公開鋼筋計數(shù)數(shù)據(jù)集進行模型訓(xùn)練,可以從以下網(wǎng)址中獲取數(shù)據(jù)集進行測試。


在上述數(shù)據(jù)集中,鋼筋數(shù)據(jù)來自現(xiàn)場手機采集。鋼筋車輛進庫時,使用手機拍攝成捆鋼筋的截面(一般保證較小傾角,盡量垂直于鋼筋截面拍攝)。數(shù)據(jù)會包含直徑從12mm-32mm等不同規(guī)格的鋼筋圖片。數(shù)據(jù)集中用于訓(xùn)練的圖像集合共250張,用于測試的圖像集合共200張。


由于選擇的數(shù)據(jù)集規(guī)模較小且僅有一類檢測目標(biāo)(鋼筋),為降低模型訓(xùn)練難度,防止模型出現(xiàn)過擬合,所以算法模型選擇較小的yolov5s模型。如果選擇不同的數(shù)據(jù)集,也可根據(jù)所選數(shù)據(jù)集的實際情況來選擇算法模型。


3.2 模型訓(xùn)練

首先在以下網(wǎng)址獲取YOLO v5算法的源碼:

其中所包含的項目文件有:


data:主要是存放一些超參數(shù)的配置文件以及官方提供測試的圖片。


models:里面主要是一些網(wǎng)絡(luò)構(gòu)建的配置文件和函數(shù),其中包含了該項目的五個不同的版本,分別為是5n、5s、5m、5l、5x。


utils:存放的是工具類的函數(shù),里面有l(wèi)oss函數(shù),metrics函數(shù),plots函數(shù)等等。


weights:放置訓(xùn)練好的權(quán)重參數(shù)。


detect.py:利用訓(xùn)練好的權(quán)重參數(shù)進行目標(biāo)檢測,可以進行圖像、視頻和攝像頭的檢測。


train.py:訓(xùn)練自己的數(shù)據(jù)集的函數(shù)。


test.py:測試訓(xùn)練的結(jié)果的函數(shù)。


requirements.txt:yolov5項目的環(huán)境依賴包


YOLO v5各組成部分詳細(xì)介紹

接下來就要進行模型訓(xùn)練的具體操作,訓(xùn)練主要包括環(huán)境搭建、數(shù)據(jù)集準(zhǔn)備及修改數(shù)據(jù)集配置、修改模型配置參數(shù)、下載預(yù)訓(xùn)練模型、開始訓(xùn)練以及模型測試這幾個步驟。接下來依次對上述步驟展開介紹。


(1) 環(huán)境搭建


我們需要創(chuàng)建一個虛擬環(huán)境,打開conda powershell prompt創(chuàng)建一個用于訓(xùn)練的虛擬環(huán)境:


conda create -n yolov5 python==3.8

然后激活虛擬環(huán)境安裝所需模塊(注意安裝之前需要切換工作路徑至yolov5文件夾)


python -m pip install -r requirements.txt -i http://pypi.douban.com/simple/ --trusted-host=pypi.douban.com/simple

如果沒有安裝cuda默認(rèn)安裝pytorch-cpu版,如果有g(shù)pu可以安裝pytorch-gpu版。


(2) 數(shù)據(jù)集準(zhǔn)備及修改數(shù)據(jù)集配置


首先將下載好的數(shù)據(jù)集分類并按如下方式存儲:

15.png

然后對數(shù)據(jù)集配置進行修改,修改data目錄下的相應(yīng)的yaml文件。找到目錄下的coco.yaml文件,將該文件復(fù)制一份,將復(fù)制的文件重命名。

16.png

打開這個文件夾修改其中的參數(shù),修改結(jié)果如下圖所示:

17.png

其中第一個框的位置填寫訓(xùn)練集測試集和驗證集的目錄地址,第二個框的位置填寫檢測目標(biāo)類別數(shù),第三個框填寫待檢測類別。


(3) 修改模型配置參數(shù)


由于我們最后選擇yolov5s這個模型訓(xùn)練,并且使用官方y(tǒng)olov5s.pt預(yù)訓(xùn)練權(quán)重參數(shù)進行訓(xùn)練,所以需要修改模型配置文件。和上述修改data目錄下的yaml文件一樣,最好將yolov5s.yaml文件復(fù)制一份,然后將其重命名。

18.png

然后對重命名文件進行修改,修改第一行檢測目標(biāo)類別數(shù)。

19.png

(4) 下載預(yù)訓(xùn)練模型


我們需要在官網(wǎng)下載所需預(yù)訓(xùn)練模型,即在預(yù)訓(xùn)練模型地址中選擇所需要的模型下載即可,這里我們選擇下載yolov5s.pt。

20.png

模型下載完成后,將模型文件xx.pt復(fù)制到y(tǒng)olov5文件夾下。


(5) 開始訓(xùn)練


在Yolov5文件夾下打開終端輸入以下命令:


Python train.py --weights yolov5s.pt --data data/gangjin.yaml --workers 1 --batch-size 8

21.png

至此,模型訓(xùn)練正式開始。


(6) 模型測試


在模型訓(xùn)練完成后,將runs/exp/weights下的模型(best.pt)復(fù)制到y(tǒng)olov5文件夾下。

22.png

然后開始進行模型測試:


python detect.py --weights best.pt --source ../datasets/gangjin/images/val --save-txt

其中,--weights best.pt是訓(xùn)練好的模型路徑,--source:是測試的數(shù)據(jù)路徑。測試結(jié)果保存在runs/detect/exp文件夾下。


4 測試結(jié)果及問題分析

4.1 測試結(jié)果

本算法的輸入為較為清晰的成捆鋼筋圖片,例如輸入以下圖片:

23.jpg

算法的輸出結(jié)果為result.txt文件與預(yù)測結(jié)果圖,其中result.txt文件中會顯示圖片中每個檢測框的位置、類別及置信度,并給出檢測框的總個數(shù),從而實現(xiàn)了鋼筋自動計數(shù)。預(yù)測結(jié)果圖如下:

24.jpg

從以上測試結(jié)果可以看出,YOLO v5算法對于該場景中的鋼筋計數(shù)具有很好的準(zhǔn)確性,并且有較大的置信度。

對更多的圖片場景進行鋼筋計數(shù),并將輸入的實際位置與識別出的效果圖進行對比,觀察YOLO v5算法對于該場景的計數(shù)效果。

25.jpg

26.jpg

上圖中,左圖為輸入成捆鋼筋,右圖為數(shù)識別出的效果圖,方框上數(shù)字為置信度。從以上測試結(jié)果可以看出,YOLO v5算法對于該場景中的鋼筋計數(shù)同樣具有很好的準(zhǔn)確性以及較大的置信度。


4.2 問題分析

當(dāng)然YOLO v5算法并非十全十美,它在鋼筋檢測中也存在一定的問題:


算法存在誤判,將其他物體誤判為鋼筋頭:

27.png

重復(fù)檢測,一個鋼筋頭被多個檢測框標(biāo)注:

28.png

5 總結(jié)

以上就是對于數(shù)鋼筋問題的介紹,主要從問題背景、算法介紹和訓(xùn)練模型三部分展開。首先簡述了數(shù)鋼筋問題的基本背景,然后介紹了目標(biāo)檢測算法的算法流程和選取的YOLO v5算法的基本知識,最后介紹了模型訓(xùn)練步驟,并選取一定的數(shù)據(jù)集,采用YOLO v5算法對輸入的圖像進行目標(biāo)檢測及計數(shù)。


本文網(wǎng)址:
下一篇:沒有資料

相關(guān)信息:
版權(quán)所有 CopyRight 2006-2017 江蘇和訊自動化設(shè)備有限公司 常州自動化培訓(xùn)中心 電話:0519-85602926 地址:常州市新北區(qū)府琛商務(wù)廣場2號樓1409室
蘇ICP備14016686號-2 技術(shù)支持:常州山水網(wǎng)絡(luò)
本站關(guān)鍵詞:常州PLC培訓(xùn) 常州PLC編程培訓(xùn) 常州PLC編程 常州PLC培訓(xùn)班 網(wǎng)站地圖 網(wǎng)站標(biāo)簽
在線與我們?nèi)〉寐?lián)系
色婷婷AV无码久久精品,久久天天躁狠狠躁夜夜97,羞羞麻豆国产精品1区2区3区,啪影院免费线观看视频,思思久久er99精品亚洲