色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

YOLOv5實現鋼材表面缺陷檢測

新機器視覺 ? 來源:笑傲算法江湖 ? 2023-02-20 10:14 ? 次閱讀

目前,基于機器視覺的表面缺陷已經在各個工業領域廣泛取代人工視覺檢測,包括3C、汽車、家電、機械制造半導體電子、化工、制藥、航空航天、輕工等行業。許多基于深度學習的缺陷檢測方法也被廣泛應用于各種工業場景。

本文的代碼實戰,是基于YOLOv5目標檢測算法,在NEU表面缺陷數據集上實現鋼材表面缺陷檢測。要求Python>=3.7.0,PyTorch>=1.7。

一、YOLOv5

選取YOLOv5,一方面是因為從最終效果來看YOLOv5已經相當優秀,是發展的比較完備、使用比較廣泛的一個版本;而更重要的是YOLOv5的調用、訓練和預測都十分方便,為初學者提供了良好的練手工具。YOLOv5的另一個特點就是它為不同的設備需求和不同的應用場景提供了大小和參數數量不同的網絡

1395e702-b014-11ed-bfe3-dac502259ad0.png

如圖所示,大一點的模型比如YOLOv5l和YOLOv5x參數更多,在大規模的COCO數據集上有更高的預測準確率;而小模型比如YOLOv5n或YOLOv5s占空間更小,適合部署在移動設備上,且推理速度更快,適合于高幀 率視頻的實時檢測。

13bfeda4-b014-11ed-bfe3-dac502259ad0.png

二、鋼材表面缺陷數據集

東北大學(NEU)表面缺陷數據集,收集了熱軋帶鋼6種典型的表面缺陷,即軋內垢(RS)、斑塊(Pa)、裂紋(Cr)、點蝕面(PS)、夾雜物(In)和劃痕(Sc)。該數據庫包括1800張灰度圖像:6種不同類型的典型表面缺陷各300個樣本。

下圖為6種典型表面缺陷的樣本圖像,每張圖像的原始分辨率為200×200像素。從圖中,我們可以清楚地觀察到類內缺陷在外觀上存在較大差異,例如劃痕(最后一列)可能是水平劃痕、垂直劃痕和傾斜劃痕等。與此同時,類間缺陷也具有相似的特征,如滾積垢、裂紋和坑狀表面。

此外,由于光照和材料變化的影響,類內缺陷圖像的灰度會發生變化。總之,NEU表面缺陷數據庫包含兩個難題,即類內缺陷存在較大外觀差異,類間缺陷具有相似方面,缺陷圖像受到光照和材料變化的影響。

13d023b8-b014-11ed-bfe3-dac502259ad0.png

對于缺陷檢測任務,數據集提供了標注,標注了每個圖像中缺陷的類別和位置。下圖展示了數據集上的一些檢測結果示例。對于每個缺陷,黃色框是表示其位置的邊界框,綠色標簽是類分數。

1429b9a0-b014-11ed-bfe3-dac502259ad0.png

三、YOLOv5數據格式

YOLOv5標簽文件中每一行的數據為class, x, y, w, h,其中class是該物體的類別,x,y是檢測框中心坐標,w,h是檢測框的寬和高。

1482c658-b014-11ed-bfe3-dac502259ad0.png

四、格式轉換voc2yolo

從網上獲取一些目標檢測的數據集資源標簽的格式都是VOC(xml格式)的,而YOLOv5訓練所需要的文件格式是YOLO(txt格式)的,這里就需要對xml格式的標簽文件轉換為txt文件。

同時訓練自己的YOLOv5檢測模型的時候,數據集需要劃分為訓練集和驗證集。這里提供了一份代碼將xml格式的標注文件轉換為txt格式的標注文件,并按比例劃分為訓練集和驗證集。

importxml.etree.ElementTreeasET
importos
fromosimportgetcwd
fromtqdmimporttqdm

classes=["crazing","inclusion","patches","pitted_surface","rolled-in_scale","scratches"]

defconvert(size,box):
dw=1./size[0]
dh=1./size[1]
x=(box[0]+box[1])/2.0
y=(box[2]+box[3])/2.0
w=box[1]-box[0]
h=box[3]-box[2]
x=x*dw
w=w*dw
y=y*dh
h=h*dh
return(x,y,w,h)

defconvert_annotation(image_id):
in_file='./xml/%s.xml'%(image_id)
out_file=open('./labels/%s.txt'%(image_id),'w')
tree=ET.parse(in_file)
root=tree.getroot()
size=root.find('size')
w=int(size.find('width').text)
h=int(size.find('height').text)

forobjinroot.iter('object'):
difficult=obj.find('Difficult').text
cls=obj.find('name').text
ifclsnotinclassesorint(difficult)==1:
continue
cls_id=classes.index(cls)
xmlbox=obj.find('bndbox')
b=(float(xmlbox.find('xmin').text),float(xmlbox.find('xmax').text),float(xmlbox.find('ymin').text),
float(xmlbox.find('ymax').text))
bb=convert((w,h),b)
out_file.write(str(cls_id)+""+"".join([str(a)forainbb])+'
')

if__name__=="__main__":
wd=getcwd()
print(wd)
ifnotos.path.exists('./labels/'):
os.makedirs('./labels/')
image_ids=os.listdir('./datasets')
forimage_idintqdm(image_ids):
convert_annotation(image_id.split('.')[0])

五、訓練

152b38f6-b014-11ed-bfe3-dac502259ad0.png

YOLOv5是通過yaml格式的配置文件來找到對應的訓練測試數據,因此在訓練前需要對該文件進行簡單配置。

我們可以通過修改YOLOv5的配置文件來實現,需要修改的配置文件有兩個,我們先復制一份data/coco.yaml,這里將其重命名為my_coco.yaml

在download前加上一個#注釋掉這段代碼

將train、val、test修改為自己的路徑,以train為例,NEU-DET/train/images/

將nc修改為數據的類別數,如鋼材表面缺陷,故修改為6

將names修改自己數據的類名,如names: ["crazing", "inclusion", "patches", "pitted_surface", "rolled-in_scale", "scratches"]

154ff132-b014-11ed-bfe3-dac502259ad0.png

下一個需要修改的文件為模型配置文件,在models文件夾中有四個模型的配置文件:yolov5s.yaml、yolov5m.yaml、yolov5l.yaml和yolov5x.yaml,可以根據需要選擇相應的模型,這里以yolo5s.yaml為例,打開文件,修改文件中的nc為自己的類別數即可。

158eb21e-b014-11ed-bfe3-dac502259ad0.png

pythontrain.py--weightsweights/yolov5s.pt--cfgmodels/yolov5s.yaml--datadata/my_coco.yaml--epoch30--batch-size32
15e494ea-b014-11ed-bfe3-dac502259ad0.png

六、測試

訓練結束后,在runs/exp0文件夾下會自動生成訓練結果,其中包括模型權重、混淆矩陣、PR曲線等。

進行測試時,打開detect.py文件,修改source為檢測圖片的文件夾,運行之后,在run->detect中輸出檢測結果;或者通過如下方式進行測試。

pythondetect.py--source./data/images/example.jpg--weightsruns/exp0/weights/best.pt--conf-thres0.25
16184420-b014-11ed-bfe3-dac502259ad0.png

16542850-b014-11ed-bfe3-dac502259ad0.png

最終預測的結果如下,可以看出模型缺陷檢測效果。

1675208c-b014-11ed-bfe3-dac502259ad0.png







審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 機器視覺
    +關注

    關注

    162

    文章

    4383

    瀏覽量

    120419
  • Neu
    Neu
    +關注

    關注

    0

    文章

    2

    瀏覽量

    6730
  • python
    +關注

    關注

    56

    文章

    4797

    瀏覽量

    84788
  • voc
    voc
    +關注

    關注

    0

    文章

    105

    瀏覽量

    15695

原文標題:代碼實戰:YOLOv5實現鋼材表面缺陷檢測

文章出處:【微信號:vision263com,微信公眾號:新機器視覺】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    YOLOv5】LabVIEW+YOLOv5快速實現實時物體識別(Object Detection)含源碼

    前面我們給大家介紹了基于LabVIEW+YOLOv3/YOLOv4的物體識別(對象檢測),今天接著上次的內容再來看看YOLOv5。本次主要是和大家分享使用LabVIEW快速
    的頭像 發表于 03-13 16:01 ?2186次閱讀

    Yolov5算法解讀

    yolov5于2020年由glenn-jocher首次提出,直至今日yolov5仍然在不斷進行升級迭代。 Yolov5YOLOv5s、YOLOv5
    的頭像 發表于 05-17 16:38 ?9265次閱讀
    <b class='flag-5'>Yolov5</b>算法解讀

    YOLOv5】LabVIEW+TensorRT的yolov5部署實戰(含源碼)

    今天主要和大家分享在LabVIEW中使用純TensoRT工具包快速部署并實現yolov5的物體識別
    的頭像 發表于 08-21 22:20 ?1332次閱讀
    【<b class='flag-5'>YOLOv5</b>】LabVIEW+TensorRT的<b class='flag-5'>yolov5</b>部署實戰(含源碼)

    龍哥手把手教你學視覺-深度學習YOLOV5

    ,其目標檢測精度達到30%-50%(tensorflow中的ssd約為20%),足以說明該模型的分類檢測能力很強。將yolov5應用于工業外觀檢測將具有極大的前景,例如下圖這種復雜背景
    發表于 09-03 09:39

    怎樣使用PyTorch Hub去加載YOLOv5模型

    在Python>=3.7.0環境中安裝requirements.txt,包括PyTorch>=1.7。模型和數據集從最新的 YOLOv5版本自動下載。簡單示例此示例從
    發表于 07-22 16:02

    使用Yolov5 - i.MX8MP進行NPU錯誤檢測是什么原因?

    的時機(yolov5s 模型,輸入為 448x448 ~ 70ms)。 現在我正在嘗試使用 Yolov5(uint8 量化),但我嘗試使用不同的預訓練模型獲得相同的行為,在 CPU 上進行良好檢測,在
    發表于 03-31 07:38

    如何YOLOv5測試代碼?

    使用文檔“使用 YOLOv5 進行對象檢測”我試圖從文檔第 10 頁訪問以下鏈接(在 i.MX8MP 上部署 yolov5s 的步驟 - NXP 社區) ...但是這樣做時會被拒絕訪問。該文檔沒有說明需要特殊許可才能下載 tes
    發表于 05-18 06:08

    基于YOLOv5的目標檢測文檔進行的時候出錯如何解決?

    你好: 按Milk-V Duo開發板實戰——基于YOLOv5的目標檢測 安裝好yolov5環境,在執行main.py的時候會出錯,能否幫忙看下 main.py: import torch
    發表于 09-18 07:47

    YOLOv5 7.0版本下載與運行測試

    支持實例分割了,從此YOLOv5實現了圖像分類、對象檢測、實例分割三個支持,從訓練到部署。
    的頭像 發表于 11-30 15:55 ?3845次閱讀

    使用旭日X3派的BPU部署Yolov5

    本次主要介紹在旭日x3的BPU中部署yolov5。首先在ubuntu20.04安裝yolov5,并運行yolov5并使用pytoch的pt模型文件轉ONNX。
    的頭像 發表于 04-26 14:20 ?924次閱讀
    使用旭日X3派的BPU部署<b class='flag-5'>Yolov5</b>

    YOLOv8+OpenCV實現DM碼定位檢測與解析

    YOLOv8是YOLO系列模型的最新王者,各種指標全面超越現有對象檢測與實例分割模型,借鑒了YOLOv5YOLOv6、YOLOX等模型的設計優點,全面提升改進
    的頭像 發表于 08-10 11:35 ?1310次閱讀
    <b class='flag-5'>YOLOv</b>8+OpenCV<b class='flag-5'>實現</b>DM碼定位<b class='flag-5'>檢測</b>與解析

    yolov5和YOLOX正負樣本分配策略

    整體上在正負樣本分配中,yolov7的策略算是yolov5和YOLOX的結合。因此本文先從yolov5和YOLOX正負樣本分配策略分析入手,后引入到YOLOv7的解析中。
    發表于 08-14 11:45 ?2305次閱讀
    <b class='flag-5'>yolov5</b>和YOLOX正負樣本分配策略

    YOLOv5網絡結構訓練策略詳解

    前面已經講過了Yolov5模型目標檢測和分類模型訓練流程,這一篇講解一下yolov5模型結構,數據增強,以及訓練策略。
    的頭像 發表于 09-11 11:15 ?2321次閱讀
    <b class='flag-5'>YOLOv5</b>網絡結構訓練策略詳解

    RK3588 技術分享 | 在Android系統中使用NPU實現Yolov5分類檢測-迅為電子

    RK3588 技術分享 | 在Android系統中使用NPU實現Yolov5分類檢測-迅為電子
    的頭像 發表于 08-23 14:58 ?760次閱讀
    RK3588 技術分享 | 在Android系統中使用NPU<b class='flag-5'>實現</b><b class='flag-5'>Yolov5</b>分類<b class='flag-5'>檢測</b>-迅為電子

    在樹莓派上部署YOLOv5進行動物目標檢測的完整流程

    目標檢測在計算機視覺領域中具有重要意義。YOLOv5(You Only Look One-level)是目標檢測算法中的一種代表性方法,以其高效性和準確性備受關注,并且在各種目標檢測
    的頭像 發表于 11-11 10:38 ?1122次閱讀
    在樹莓派上部署<b class='flag-5'>YOLOv5</b>進行動物目標<b class='flag-5'>檢測</b>的完整流程
    主站蜘蛛池模板: 亚洲AV无码久久流水呻蜜桃久色| 国产午夜精品久久理论片| 欧美精品久久久久性色AV苍井 | CHINSEFUCKGAY无套| 亚洲精品久久无码AV片WWW| 欧美人与动牲交A免费| 久久精品免费电影| 国产在线AV一区二区香蕉| 百度影音第四色| 中文人妻熟妇精品乱又伦| 亚洲AV成人片色在线观看网站| 人妻少妇偷人精品无码洋洋AV| 老湿影院色情a| 久久re视频这里精品一本到99| 国产精品乱人无码伦AV在线A| xxx粗大长欧美| 97视频视频人人碰视频| 伊人青青草原| 亚洲精品无码成人AAA片| 婷婷精品国产亚洲AV在线观看| 鸥美一级黄色片| 男人的天堂久久精品激情a| 久久精品亚洲国产AV涩情| 和老外3p爽粗大免费视频| 国产精品久久人妻无码蜜 | 艳照门在线观看| 亚洲成人综合在线| 性夜影院午夜看片| 无码国产成人午夜在线观看不卡| 日本亚洲欧洲免费旡码| 漂亮的av女演员| 欧美深夜0000XXXX疯狂| 男生在床上脱美女 胸| 美女扒开腿让男人桶个爽| 美女挑战50厘米长的黑人| 久久综合久久鬼| 龙广在线收听| 嗯呐啊唔高H兽交| 欧美2019高清hd巨大| 欧美黑人经典片免费观看| 欧美性最猛xxxx在线观看视频|