《------往期經典推薦------》
一、AI應用軟件開發實戰專欄【鏈接】
項目名稱 | 項目名稱 |
---|---|
1.【人臉識別與管理系統開發】 | 2.【車牌識別與自動收費管理系統開發】 |
3.【手勢識別系統開發】 | 4.【人臉面部活體檢測系統開發】 |
5.【圖片風格快速遷移軟件開發】 | 6.【人臉表表情識別系統】 |
7.【YOLOv8多目標識別與自動標注軟件開發】 | 8.【基于深度學習的行人跌倒檢測系統】 |
9.【基于深度學習的PCB板缺陷檢測系統】 | 10.【基于深度學習的生活垃圾分類目標檢測系統】 |
11.【基于深度學習的安全帽目標檢測系統】 | 12.【基于深度學習的120種犬類檢測與識別系統】 |
13.【基于深度學習的路面坑洞檢測系統】 | 14.【基于深度學習的火焰煙霧檢測系統】 |
15.【基于深度學習的鋼材表面缺陷檢測系統】 | 16.【基于深度學習的艦船目標分類檢測系統】 |
17.【基于深度學習的西紅柿成熟度檢測系統】 | 18.【基于深度學習的血細胞檢測與計數系統】 |
19.【基于深度學習的吸煙/抽煙行為檢測系統】 | 20.【基于深度學習的水稻害蟲檢測與識別系統】 |
21.【基于深度學習的高精度車輛行人檢測與計數系統】 | 22.【基于深度學習的路面標志線檢測與識別系統】 |
23.【基于深度學習的智能小麥害蟲檢測識別系統】 | 24.【基于深度學習的智能玉米害蟲檢測識別系統】 |
25.【基于深度學習的200種鳥類智能檢測與識別系統】 | 26.【基于深度學習的45種交通標志智能檢測與識別系統】 |
27.【基于深度學習的人臉面部表情識別系統】 | 28.【基于深度學習的蘋果葉片病害智能診斷系統】 |
29.【基于深度學習的智能肺炎診斷系統】 | 30.【基于深度學習的葡萄簇目標檢測系統】 |
31.【基于深度學習的100種中草藥智能識別系統】 | 32.【基于深度學習的102種花卉智能識別系統】 |
33.【基于深度學習的100種蝴蝶智能識別系統】 | 34.【基于深度學習的水稻葉片病害智能診斷系統】 |
35.【基于與ByteTrack的車輛行人多目標檢測與追蹤系統】 | 36.【基于深度學習的智能草莓病害檢測與分割系統】 |
37.【基于深度學習的復雜場景下船舶目標檢測系統】 | 38.【基于深度學習的農作物幼苗與雜草檢測系統】 |
39.【基于深度學習的智能道路裂縫檢測與分析系統】 | 40.【基于深度學習的葡萄病害智能診斷與防治系統】 |
41.【基于深度學習的遙感地理空間物體檢測系統】 | 42.【基于深度學習的無人機視角地面物體檢測系統】 |
43.【基于深度學習的木薯病害智能診斷與防治系統】 | 44.【基于深度學習的野外火焰煙霧檢測系統】 |
45.【基于深度學習的腦腫瘤智能檢測系統】 | 46.【基于深度學習的玉米葉片病害智能診斷與防治系統】 |
47.【基于深度學習的橙子病害智能診斷與防治系統】 | 48.【基于深度學習的車輛檢測追蹤與流量計數系統】 |
49.【基于深度學習的行人檢測追蹤與雙向流量計數系統】 | 50.【基于深度學習的反光衣檢測與預警系統】 |
51.【基于深度學習的危險區域人員闖入檢測與報警系統】 | 52.【基于深度學習的高密度人臉智能檢測與統計系統】 |
53.【基于深度學習的CT掃描圖像腎結石智能檢測系統】 | 54.【基于深度學習的水果智能檢測系統】 |
55.【基于深度學習的水果質量好壞智能檢測系統】 | 56.【基于深度學習的蔬菜目標檢測與識別系統】 |
57.【基于深度學習的非機動車駕駛員頭盔檢測系統】 | 58.【太基于深度學習的陽能電池板檢測與分析系統】 |
59.【基于深度學習的工業螺栓螺母檢測】 | 60.【基于深度學習的金屬焊縫缺陷檢測系統】 |
61.【基于深度學習的鏈條缺陷檢測與識別系統】 | 62.【基于深度學習的交通信號燈檢測識別】 |
63.【基于深度學習的草莓成熟度檢測與識別系統】 | 64.【基于深度學習的水下海生物檢測識別系統】 |
65.【基于深度學習的道路交通事故檢測識別系統】 | 66.【基于深度學習的安檢X光危險品檢測與識別系統】 |
67.【基于深度學習的農作物類別檢測與識別系統】 | 68.【基于深度學習的危險駕駛行為檢測識別系統】 |
69.【基于深度學習的維修工具檢測識別系統】 | 70.【基于深度學習的維修工具檢測識別系統】 |
71.【基于深度學習的建筑墻面損傷檢測系統】 | 72.【基于深度學習的煤礦傳送帶異物檢測系統】 |
73.【基于深度學習的老鼠智能檢測系統】 | 74.【基于深度學習的水面垃圾智能檢測識別系統】 |
75.【基于深度學習的遙感視角船只智能檢測系統】 | 76.【基于深度學習的胃腸道息肉智能檢測分割與診斷系統】 |
77.【基于深度學習的心臟超聲圖像間隔壁檢測分割與分析系統】 | 78.【基于深度學習的心臟超聲圖像間隔壁檢測分割與分析系統】 |
79.【基于深度學習的果園蘋果檢測與計數系統】 | 80.【基于深度學習的半導體芯片缺陷檢測系統】 |
81.【基于深度學習的糖尿病視網膜病變檢測與診斷系統】 | 82.【基于深度學習的運動鞋品牌檢測與識別系統】 |
83.【基于深度學習的蘋果葉片病害檢測識別系統】 | 84.【基于深度學習的醫學X光骨折檢測與語音提示系統】 |
85.【基于深度學習的遙感視角農田檢測與分割系統】 | 86.【基于深度學習的運動品牌LOGO檢測與識別系統】 |
87.【基于深度學習的電瓶車進電梯檢測與語音提示系統】 | 88.【基于深度學習的遙感視角地面房屋建筑檢測分割與分析系統】 |
89.【基于深度學習的醫學CT圖像肺結節智能檢測與語音提示系統】 | 90.【基于深度學習的舌苔舌象檢測識別與診斷系統】 |
91.【基于深度學習的蛀牙智能檢測與語音提示系統】 | 92.【基于深度學習的皮膚癌智能檢測與語音提示系統】 |
二、機器學習實戰專欄【鏈接】,已更新31期,歡迎關注,持續更新中~~
三、深度學習【Pytorch】專欄【鏈接】
四、【Stable Diffusion繪畫系列】專欄【鏈接】
五、YOLOv8改進專欄【鏈接】,持續更新中~~
六、YOLO性能對比專欄【鏈接】,持續更新中~
《------正文------》
目錄
- 基本功能演示
- 引言
- 研究背景及重要性
- 應用場景
- 項目實現基本步驟
- 1.目標檢測模型訓練
- 2.分割模型訓練
- 3.讀取壓力表讀數
- 4.可視化系統制作
- 目標檢測模型訓練基本流程
- YOLO11簡介
- 模型訓練、評估與推理
- 1. 數據集準備與訓練
- 2.模型訓練
- 3. 訓練結果評估
- 4. 使用模型進行推理
- 總結
- 【獲取方式】
基本功能演示
【CV綜合實戰】基于深度學習的工業壓力表智能檢測與讀數系統【python源碼+Pyqt5界面+數據集+訓練代碼】
摘要:在工業環境中,壓力表作為關鍵的監控設備,用于實時監測各種系統和流程中的壓力變化,對確保生產安全與效率至關重要。本文基于
YOLO11的深度學習框架
,通過783
張實際場景中拍攝的工業壓力表
相關圖片,訓練了可進行壓力表
目標檢測的模型,然后用Unet網絡,通過414張分圖片
訓練壓力表指針與刻度分割模型,對檢測出的壓力表指針與刻度進行分割,然后通過OpenCV進行后處理的讀數讀取。最終基于以上內容制作了一款帶UI界面的工業壓力表智能檢測與讀數系統
,更便于實際應用。該系統是基于python
與PyQT5
開發的,支持圖片
、視頻
以及攝像頭
進行壓力表數據讀取,并保存檢測結果
。本文提供了完整的Python代碼和使用教程,給感興趣的小伙伴參考學習,完整的代碼資源文件獲取方式見文末。
點擊跳轉至文末《完整相關文件及源碼》獲取
引言
該系列文章主要介紹一個《基于深度學習的工業壓力表智能檢測與讀數系統》
的制作流程:包含了項目所有源碼與模型訓練數據集、訓練代碼與訓練結果等內容
。最終實現效果如下:
該系統制作主要包括以下幾步:
- 壓力表目標檢測模型的訓練,
該項目使用的是YOLO11
; - 壓力表指針與刻度分割模型的訓練,
該項目使用的是Unet
; - OpenCV對分割結果進行后處理,并讀取壓力表讀數;
- 系統軟件界面的制作。
由于項目的內容較多,一篇文章無法介紹完全。本文先介紹第一部分內容:壓力表目標檢測模型的訓練實現。
研究背景及重要性
在工業環境中,壓力表作為關鍵的監控設備,用于實時監測各種系統和流程中的壓力變化,對確保生產安全與效率至關重要。然而,傳統的壓力表讀數依賴于人工檢查,這不僅耗時費力,而且容易出錯,特別是在需要連續監控的情況下。為了解決這些問題,基于YOLO深度學習框架訓練的工業壓力表檢測模型結合Unet模型進行的壓力表指針與刻度分割技術應運而生。該系統能夠自動從圖片或視頻流中識別并定位壓力表,精確分割指針與刻度,并通過Opencv進行后處理以準確讀取壓力表數值。
這種智能檢測與讀數系統的開發,極大地提高了工業監控的自動化水平,減少了人為錯誤,增強了數據獲取的及時性和準確性。
應用場景
- 實時監控與預警:在化工、石油、天然氣等行業的生產過程中,實時監控管道和容器的壓力狀態,快速發現異常情況并發出警報。
- 遠程維護與診斷:允許工程師通過網絡遠程訪問監控畫面,評估設備運行狀態,減少現場檢查的需求,降低維護成本。
- 歷史數據分析:收集并存儲壓力表的歷史讀數,便于后續分析,優化生產流程,預防潛在故障。
- 質量控制:在制造過程中,使用此系統監控生產設備的壓力參數,確保產品質量的一致性和穩定性。
- 教育與培訓:作為技術人員培訓工具,幫助新手更快地掌握壓力表讀數技能,提高工作效率。
項目實現基本步驟
這個工業壓力表智能檢測與讀數系統的實現主要包含一下步驟:
1.目標檢測模型訓練
使用YOLO11訓練壓力表目標檢測模型,用于檢測圖片中的壓力表位置,效果示例如下:
2.分割模型訓練
使用Unet訓練壓力表刻度與指針分割模型,對上述檢測到的壓力表刻度與指針進行分割,效果示例如下:
3.讀取壓力表讀數
通過OpenCV對分割后的結果進行一系列的后處理:腐蝕、極坐標變換等,最終讀取壓力表讀數;示例如下:
4.可視化系統制作
基于上述實現的內容,用Pyqt5開發可視化系統界面,便于使用與展示,示例如下:
目標檢測模型訓練基本流程
本文介紹的第一步中,目標檢測模型的訓練流程如下:
搜集與整理數據集:
搜集整理實際場景中工業壓力表
的相關數據圖片,并進行相應的數據標注與處理,為模型訓練提供訓練數據集;訓練模型:
基于整理的數據集,根據最前沿的YOLOv11目標檢測技術
訓練目標檢測模型,實現對需要檢測的對象進行有效檢測的功能;模型性能評估:對訓練出的模型在驗證集上進行了充分的結果評估和對比分析
,主要目的是為了揭示模型在關鍵指標(如Precision、Recall、mAP50和mAP50-95等指標)上的表現情況
。
YOLO11簡介
YOLO11源碼地址:https://github.com/ultralytics/ultralytics
Ultralytics YOLO11是一款前沿的、最先進的模型,它在之前YOLO版本成功的基礎上進行了構建,并引入了新功能和改進,以進一步提升性能和靈活性。YOLO11設計快速、準確且易于使用,使其成為各種物體檢測和跟蹤、實例分割、圖像分類以及姿態估計任務的絕佳選擇。
YOLO11模型結構如下:
YOLO11創新點如下:
YOLO 11主要改進包括:
增強的特征提取
:YOLO 11采用了改進的骨干和頸部架構,增強了特征提取功能,以實現更精確的目標檢測。
優化的效率和速度
:優化的架構設計和優化的訓練管道提供更快的處理速度,同時保持準確性和性能之間的平衡。
更高的精度,更少的參數
:YOLO11m在COCO數據集上實現了更高的平均精度(mAP),參數比YOLOv8m少22%,使其在不影響精度的情況下提高了計算效率。
跨環境的適應性
:YOLO 11可以部署在各種環境中,包括邊緣設備、云平臺和支持NVIDIA GPU的系統。
廣泛的支持任務
:YOLO 11支持各種計算機視覺任務,如對象檢測、實例分割、圖像分類、姿態估計和面向對象檢測(OBB)。
模型訓練、評估與推理
本文主要基于YOLO11n
模型進行模型訓練,訓練完成后對模型在驗證集上的表現進行全面的性能評估及對比分析。總體流程包括:數據集準備、模型訓練、模型評估。
1. 數據集準備與訓練
通過網絡上搜集關于實際場景中工業壓力表
的相關圖片,并使用Labelimg標注工具對每張圖片進行標注,分1個檢測類別
:['壓力表']
。
最終數據集一共包含783張圖片
,其中訓練集包含725張圖片
,驗證集包含58張圖片
。
部分圖像及標注如下圖所示:
數據集各類別數目分布情況如下:
2.模型訓練
準備好數據集后,將圖片數據以如下格式放置在項目目錄中。在項目目錄中新建datasets
目錄,同時將檢測的圖片分為訓練集與驗證集放入Data
目錄下。
同時我們需要新建一個data.yaml
文件,用于存儲訓練數據的路徑及模型需要進行檢測的類別。YOLOv11在進行模型訓練時,會讀取該文件的信息,用于進行模型的訓練與驗證。data.yaml
的具體內容如下:
train: D:\2MyCVProgram\meter_det\datasets\train\images
val: D:\2MyCVProgram\meter_det\datasets\val\imagesnc: 1
names: ['meter']
注:train與val后面表示需要訓練圖片的路徑,建議直接寫自己文件的絕對路徑。
數據準備完成后,通過調用train.py
文件進行模型訓練,epochs
參數用于調整訓練的輪數,batch
參數用于調整訓練的批次大小【根據內存大小調整,最小為1】,optimizer
設定的優化器為SGD
,訓練代碼如下:
#coding:utf-8
from ultralytics import YOLO
import matplotlib
matplotlib.use('TkAgg')# 模型配置文件
model_yaml_path = "ultralytics/cfg/models/11/yolo11.yaml"
#數據集配置文件
data_yaml_path = 'datasets/Data/data.yaml'
#預訓練模型
pre_model_name = 'yolo11n.pt'if __name__ == '__main__':#加載預訓練模型model = YOLO(model_yaml_path).load(pre_model_name)#訓練模型results = model.train(data=data_yaml_path,epochs=150, # 訓練輪數batch=4, # batch大小name='train_v11', # 保存結果的文件夾名稱optimizer='SGD') # 優化器
模型常用訓練超參數參數說明:
YOLO11 模型的訓練設置包括訓練過程中使用的各種超參數和配置
。這些設置會影響模型的性能、速度和準確性。關鍵的訓練設置包括批量大小、學習率、動量和權重衰減。此外,優化器、損失函數和訓練數據集組成的選擇也會影響訓練過程。對這些設置進行仔細的調整和實驗對于優化性能至關重要。
以下是一些常用的模型訓練參數和說明:
參數名 | 默認值 | 說明 |
---|---|---|
model | None | 指定用于訓練的模型文件。接受指向 .pt 預訓練模型或 .yaml 配置文件。對于定義模型結構或初始化權重至關重要。 |
data | None | 數據集配置文件的路徑(例如 coco8.yaml ).該文件包含特定于數據集的參數,包括訓練數據和驗證數據的路徑、類名和類數。 |
epochs | 100 | 訓練總輪數。每個epoch代表對整個數據集進行一次完整的訓練。調整該值會影響訓練時間和模型性能。 |
patience | 100 | 在驗證指標沒有改善的情況下,提前停止訓練所需的epoch數。當性能趨于平穩時停止訓練,有助于防止過度擬合。 |
batch | 16 | 批量大小,有三種模式:設置為整數(例如,’ Batch =16 ‘), 60% GPU內存利用率的自動模式(’ Batch =-1 ‘),或指定利用率分數的自動模式(’ Batch =0.70 ')。 |
imgsz | 640 | 用于訓練的目標圖像尺寸。所有圖像在輸入模型前都會被調整到這一尺寸。影響模型精度和計算復雜度。 |
device | None | 指定用于訓練的計算設備:單個 GPU (device=0 )、多個 GPU (device=0,1 )、CPU (device=cpu ),或蘋果芯片的 MPS (device=mps ). |
workers | 8 | 加載數據的工作線程數(每 RANK 多 GPU 訓練)。影響數據預處理和輸入模型的速度,尤其適用于多 GPU 設置。 |
name | None | 訓練運行的名稱。用于在項目文件夾內創建一個子目錄,用于存儲訓練日志和輸出結果。 |
pretrained | True | 決定是否從預處理模型開始訓練。可以是布爾值,也可以是加載權重的特定模型的字符串路徑。提高訓練效率和模型性能。 |
optimizer | 'auto' | 為訓練模型選擇優化器。選項包括 SGD , Adam , AdamW , NAdam , RAdam , RMSProp 等,或 auto 用于根據模型配置進行自動選擇。影響收斂速度和穩定性 |
lr0 | 0.01 | 初始學習率(即 SGD=1E-2 , Adam=1E-3 ) .調整這個值對優化過程至關重要,會影響模型權重的更新速度。 |
lrf | 0.01 | 最終學習率占初始學習率的百分比 = (lr0 * lrf ),與調度程序結合使用,隨著時間的推移調整學習率。 |
3. 訓練結果評估
在深度學習中,我們通常用損失函數下降的曲線來觀察模型訓練的情況。YOLOv11在訓練時主要包含三個方面的損失:定位損失(box_loss)、分類損失(cls_loss)和動態特征損失(dfl_loss),在訓練結束后,可以在runs/
目錄下找到訓練過程及結果文件,如下所示:
各損失函數作用說明:
定位損失box_loss
:預測框與標定框之間的誤差(GIoU),越小定位得越準;
分類損失cls_loss
:計算錨框與對應的標定分類是否正確,越小分類得越準;
動態特征損失(dfl_loss)
:DFLLoss是一種用于回歸預測框與目標框之間距離的損失函數。在計算損失時,目標框需要縮放到特征圖尺度,即除以相應的stride,并與預測的邊界框計算Ciou Loss,同時與預測的anchors中心點到各邊的距離計算回歸DFLLoss。
本文訓練結果如下:
我們通常用PR曲線
來體現精確率和召回率的關系,本文訓練結果的PR曲線如下。mAP
表示Precision和Recall作為兩軸作圖后圍成的面積,m表示平均,@后面的數表示判定iou為正負樣本的閾值。mAP@.5:表示閾值大于0.5的平均mAP,可以看到本文目標檢測模型在驗證集上的mAP@0.5
值為0.995
,結果還是十分不錯的。
4. 使用模型進行推理
模型訓練完成后,我們可以得到一個最佳的訓練結果模型best.pt
文件,在runs/train/weights
目錄下。我們可以使用該文件進行后續的推理檢測。
圖片檢測代碼如下:
#coding:utf-8
from ultralytics import YOLO
import cv2# 所需加載的模型目錄
path = 'runs/detect/train_v11/weights/best.pt'
# 需要檢測的圖片地址
img_path = r"datasets/val/images/20190829154802545.jpg"# 加載預訓練模型
model = YOLO(path, task='detect')# 檢測圖片
results = model(img_path)
res = results[0].plot()
# res = cv2.resize(res,dsize=None,fx=0.5,fy=0.5,interpolation=cv2.INTER_LINEAR)
cv2.imshow("Detection Result", res)
cv2.imwrite("result.jpg", res)
cv2.waitKey(0)
執行上述代碼后,會將執行的結果直接標注在圖片上,結果如下:
更多檢測結果示例如下:
總結
本文詳細介紹了《工業壓力表智能檢測與讀數系統》實現的第一步:壓力表目標位置檢測。下一篇文章將詳細介紹如何訓練分割模型,并分割出壓力表的指針與刻度位置。
關于該系統涉及到的完整源碼、UI界面代碼、數據集、訓練代碼、訓練好的模型、測試圖片視頻等相關文件,均已打包上傳,感興趣的小伙伴可以通過下載鏈接自行獲取。
【獲取方式】
關注末尾名片GZH【阿旭算法與機器學習】,發送【源碼】獲取下載方式
本文涉及到的完整全部程序文件:包括python源碼、數據集、訓練好的結果文件、訓練代碼、UI源碼、測試圖片視頻等(見下圖),獲取方式見文末:
注意:該代碼基于Python3.9開發,運行界面的主程序為
MainProgram.py
,其他測試腳本說明見上圖。為確保程序順利運行,請按照程序運行說明文檔txt
配置軟件運行所需環境。
好了,這篇文章就介紹到這里,喜歡的小伙伴感謝給點個贊和關注,更多精彩內容持續更新~~
關于本篇文章大家有任何建議或意見,歡迎在評論區留言交流!