国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

基于YOLOv8的攝像頭下鐵路工人安全作業(yè)檢測(工人、反光背心和安全帽)系統(tǒng)

這篇具有很好參考價值的文章主要介紹了基于YOLOv8的攝像頭下鐵路工人安全作業(yè)檢測(工人、反光背心和安全帽)系統(tǒng)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

??????本文摘要:基于YOLOv8的鐵路工人安全作業(yè)檢測系統(tǒng),屬于小目標檢測范疇,并闡述了整個數據制作和訓練可視化過程,

?

博主簡介

AI小怪獸,YOLO骨灰級玩家,1)YOLOv5、v7、v8優(yōu)化創(chuàng)新,輕松漲點和模型輕量化;2)目標檢測、語義分割、OCR、分類等技術孵化,賦能智能制造,工業(yè)項目落地經驗豐富;

基于YOLOv8的攝像頭下鐵路工人安全作業(yè)檢測(工人、反光背心和安全帽)系統(tǒng),深度學習實戰(zhàn)應用案列108篇,人工智能,深度學習,網絡,目標檢測,YOLO,計算機視覺

原創(chuàng)自研系列,?2024年計算機視覺頂會創(chuàng)新點

《YOLOv8原創(chuàng)自研》

《YOLOv5原創(chuàng)自研》

《YOLOv7原創(chuàng)自研》

23年最火系列,內涵80+優(yōu)化改進篇,漲點小能手,助力科研,好評率極高

《YOLOv8魔術師》

?《YOLOv7魔術師》

《YOLOv5/YOLOv7魔術師》

《RT-DETR魔術師》

應用系列篇:

《YOLO小目標檢測》

《深度學習工業(yè)缺陷檢測》

《YOLOv8-Pose關鍵點檢測》

1.YOLOv8介紹

?????????Ultralytics YOLOv8是Ultralytics公司開發(fā)的YOLO目標檢測和圖像分割模型的最新版本。YOLOv8是一種尖端的、最先進的(SOTA)模型,它建立在先前YOLO成功基礎上,并引入了新功能和改進,以進一步提升性能和靈活性。它可以在大型數據集上進行訓練,并且能夠在各種硬件平臺上運行,從CPU到GPU。

具體改進如下:

  1. Backbone:使用的依舊是CSP的思想,不過YOLOv5中的C3模塊被替換成了C2f模塊,實現了進一步的輕量化,同時YOLOv8依舊使用了YOLOv5等架構中使用的SPPF模塊;

  2. PAN-FPN:毫無疑問YOLOv8依舊使用了PAN的思想,不過通過對比YOLOv5與YOLOv8的結構圖可以看到,YOLOv8將YOLOv5中PAN-FPN上采樣階段中的卷積結構刪除了,同時也將C3模塊替換為了C2f模塊;

  3. Decoupled-Head:是不是嗅到了不一樣的味道?是的,YOLOv8走向了Decoupled-Head;

  4. Anchor-Free:YOLOv8拋棄了以往的Anchor-Base,使用了Anchor-Free的思想;

  5. 損失函數:YOLOv8使用VFL Loss作為分類損失,使用DFL Loss+CIOU Loss作為分類損失;

  6. 樣本匹配:YOLOv8拋棄了以往的IOU匹配或者單邊比例的分配方式,而是使用了Task-Aligned Assigner匹配方式

基于YOLOv8的攝像頭下鐵路工人安全作業(yè)檢測(工人、反光背心和安全帽)系統(tǒng),深度學習實戰(zhàn)應用案列108篇,人工智能,深度學習,網絡,目標檢測,YOLO,計算機視覺?

框架圖提供見鏈接:Brief summary of YOLOv8 model structure · Issue #189 · ultralytics/ultralytics · GitHub

2.鐵路工人安全作業(yè)檢測數據集介紹

該數據集用于正確檢測工人、他們的反光背心和安全帽。該數據集有3222張圖片,其中包含三個標簽:工人、反光背心和安全帽。

用途舉例:

  1. 可以判斷是否有工人正在鐵路上作業(yè);
  2. 可以判斷工人是否正確佩戴反光背心和安全帽規(guī)范作業(yè)。

部分數據集圖片如下:

基于YOLOv8的攝像頭下鐵路工人安全作業(yè)檢測(工人、反光背心和安全帽)系統(tǒng),深度學習實戰(zhàn)應用案列108篇,人工智能,深度學習,網絡,目標檢測,YOLO,計算機視覺

下圖可以看出識別對象為小目標檢測?

基于YOLOv8的攝像頭下鐵路工人安全作業(yè)檢測(工人、反光背心和安全帽)系統(tǒng),深度學習實戰(zhàn)應用案列108篇,人工智能,深度學習,網絡,目標檢測,YOLO,計算機視覺

?

2.1?split_train_val.py

# coding:utf-8
 
import os
import random
import argparse
 
parser = argparse.ArgumentParser()
#xml文件的地址,根據自己的數據進行修改 xml一般存放在Annotations下
parser.add_argument('--xml_path', default='Annotations', type=str, help='input xml label path')
#數據集的劃分,地址選擇自己數據下的ImageSets/Main
parser.add_argument('--txt_path', default='ImageSets/Main', type=str, help='output txt label path')
opt = parser.parse_args()
 
trainval_percent = 0.9
train_percent = 0.8
xmlfilepath = opt.xml_path
txtsavepath = opt.txt_path
total_xml = os.listdir(xmlfilepath)
if not os.path.exists(txtsavepath):
    os.makedirs(txtsavepath)
 
num = len(total_xml)
list_index = range(num)
tv = int(num * trainval_percent)
tr = int(tv * train_percent)
trainval = random.sample(list_index, tv)
train = random.sample(trainval, tr)
 
file_trainval = open(txtsavepath + '/trainval.txt', 'w')
file_test = open(txtsavepath + '/test.txt', 'w')
file_train = open(txtsavepath + '/train.txt', 'w')
file_val = open(txtsavepath + '/val.txt', 'w')
 
for i in list_index:
    name = total_xml[i][:-4] + '\n'
    if i in trainval:
        file_trainval.write(name)
        if i in train:
            file_train.write(name)
        else:
            file_val.write(name)
    else:
        file_test.write(name)
 
file_trainval.close()
file_train.close()
file_val.close()
file_test.close()

2.2?voc_label.py生成適合YOLOv8訓練的txt

# -*- coding: utf-8 -*-
import xml.etree.ElementTree as ET
import pickle
import os
from os import listdir, getcwd
from os.path import join
sets = ['train','val','test']
classes = ['vest','helmet','worker']

def convert(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)
def convert_annotation(image_id):
    in_file = open('Annotations/%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)
    for obj in root.iter('object'):
        difficult = obj.find('difficult').text
        cls = obj.find('name').text
        if cls not in classes or int(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) for a in bb]) + '\n')
wd = getcwd()
print(wd)
for image_set in sets:
    if not os.path.exists('labels/'):
        os.makedirs('labels/')
    image_ids = open('ImageSets/Main/%s.txt' % (image_set)).read().strip().split()
    list_file = open('%s.txt' % (image_set), 'w')
    for image_id in image_ids:
        list_file.write('images/%s.jpg\n' % (image_id))
        convert_annotation(image_id)
    list_file.close()

3.如何訓練YOLOv8

3.1 配置Railroad.yaml

ps:建議填寫絕對路徑


path: F:/ultralytics-RailroadWorkerDetection/data/Railroad # dataset root dir
train: train.txt  # train images (relative to 'path') 118287 images
val: val.txt  # val images (relative to 'path') 5000 images
 
# number of classes
nc: 3
 
# class names
names:
  0: vest
  1: helmet
  2: worker

3.2 如何訓練

import warnings
warnings.filterwarnings('ignore')
from ultralytics import YOLO

if __name__ == '__main__':
    model = YOLO('ultralytics/cfg/models/v8/yolov8.yaml')
    #model.load('yolov8n.pt') # loading pretrain weights
    model.train(data='data/Railroad/Railroad.yaml',
                cache=False,
                imgsz=640,
                epochs=100,
                batch=32,
                workers=0,
                device='0',
                optimizer='SGD', # using SGD
                project='runs/train',
                name='exp',
                )

3.3 訓練可視化結果

F1_curve.png:F1分數與置信度(x軸)之間的關系。F1分數是分類的一個衡量標準,是精確率和召回率的調和平均函數,介于0,1之間。越大越好。

TP:真實為真,預測為真;

FN:真實為真,預測為假;

FP:真實為假,預測為真;

TN:真實為假,預測為假;

精確率(precision)=TP/(TP+FP)

召回率(Recall)=TP/(TP+FN)

F1=2*(精確率*召回率)/(精確率+召回率)

?基于YOLOv8的攝像頭下鐵路工人安全作業(yè)檢測(工人、反光背心和安全帽)系統(tǒng),深度學習實戰(zhàn)應用案列108篇,人工智能,深度學習,網絡,目標檢測,YOLO,計算機視覺

?PR_curve.png :PR曲線中的P代表的是precision(精準率)R代表的是recall(召回率),其代表的是精準率與召回率的關系。

基于YOLOv8的攝像頭下鐵路工人安全作業(yè)檢測(工人、反光背心和安全帽)系統(tǒng),深度學習實戰(zhàn)應用案列108篇,人工智能,深度學習,網絡,目標檢測,YOLO,計算機視覺?

預測結果:?

?

基于YOLOv8的攝像頭下鐵路工人安全作業(yè)檢測(工人、反光背心和安全帽)系統(tǒng),深度學習實戰(zhàn)應用案列108篇,人工智能,深度學習,網絡,目標檢測,YOLO,計算機視覺

關注下方名片點擊關注,源碼獲取途徑。??文章來源地址http://www.zghlxwxcb.cn/news/detail-847768.html

到了這里,關于基于YOLOv8的攝像頭下鐵路工人安全作業(yè)檢測(工人、反光背心和安全帽)系統(tǒng)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • YOLOv5調用IP攝像頭

    YOLOv5調用IP攝像頭

    本文將展示IP攝像頭的調用方法(以調用手機攝像頭為例)。 首先在手機端下載可以聯(lián)網調用手機攝像頭的APP 我用的是這個 勾選RTSP,點擊分享 記下局域網地址,后面代碼中需要對應修改 更改detect.py中\(zhòng)\\'--source\\\'部分默認值,注意格式,然后點擊運行即可 在PC端會出現和實時目

    2024年02月07日
    瀏覽(22)
  • yolov5傻瓜式調用usb攝像頭

    yolov5傻瓜式調用usb攝像頭

    環(huán)境:yolov5 5.0 電腦:戴爾筆記本 當你用requirement下載好yolov5的對應的包后就需要使用detect去檢測圖片了。 在5.0版本中,detect要修改的部分主要是以下部分 其中第一條是你的模型可以自己訓練也可以用它本身自帶的。 我們主要看第二條。 將default改為’0’使用攝像頭。 一般

    2024年02月12日
    瀏覽(18)
  • YOLOv7調用攝像頭檢測報錯解決

    YOLOv7調用攝像頭檢測報錯解決

    yolov7detect.py文件調用本地攝像頭,把source參數設為0 報錯:cv2.error: OpenCV(3.4.2) 一堆地址:The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Carbon support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script in function \\\'cvShowImage\\\' 我原本的環(huán)境

    2024年01月22日
    瀏覽(24)
  • 使用YOLOv5實現多攝像頭實時目標檢測

    使用YOLOv5實現多攝像頭實時目標檢測

    這篇博客將在單攝像頭目標檢測的基礎上,實現單網絡多線程的實時目標檢測。 在detect.py同級目錄下新建streams.txt文件,每個視頻流源單獨成行: 本地攝像頭填0 USB攝像頭填1,2,3… IP攝像頭要根據攝像頭類型,按下面格式填寫(我將在之后的博客中講解實現) 0是電腦自帶攝像

    2024年02月05日
    瀏覽(16)
  • 使用YOLOv5實現單攝像頭實時目標檢測

    使用YOLOv5實現單攝像頭實時目標檢測

    我將在上一節(jié)的基礎上,一步一步展示如何實現單攝像頭實時目標檢測,其中包括我在配置過程中遇到的報錯和解決方法。 將\\\'--source\\\'的默認值改為0 這里的\\\'0\\\'是指系統(tǒng)默認的第一個攝像頭,通常是電腦自帶的攝像頭,所以一定要記得把攝像頭打開再運行代碼(有些電腦會有攝

    2024年02月03日
    瀏覽(24)
  • windows平臺使用CMake工具對darknet的編譯以及安裝過程+yolov3+圖像檢測+攝像頭檢測+視頻檢測+手機作為攝像頭進行檢測(詳解)

    windows平臺使用CMake工具對darknet的編譯以及安裝過程+yolov3+圖像檢測+攝像頭檢測+視頻檢測+手機作為攝像頭進行檢測(詳解)

    目錄 1.編譯和安裝教程 (1)安裝visual studio 2022 (2)CMake下載及安裝 (3)下載darknet.zip文件 (4)安裝OpenCV? (5)修改Makefile文件 (6)修改CMakeLists.txt文件 (7)使用CMake工具 2.yolov3進行測試 (1)單張圖像進行檢測? (2)開啟攝像頭進行檢測 (3) 視頻檢測 (4)使用手機攝

    2024年02月05日
    瀏覽(60)
  • 【學習筆記】Yolov5調用手機攝像頭實時檢測(環(huán)境配置+實現步驟)

    【學習筆記】Yolov5調用手機攝像頭實時檢測(環(huán)境配置+實現步驟)

    我們需要首先從GitHub獲取到y(tǒng)olov5的源碼,直達鏈接如下: https://github.com/ultralytics/yolov5 打開后按照如下步驟下載源碼壓縮包即可 權重文件下載地址:https://download.csdn.net/download/liujiahao123987/87400892 注:我用的iOS,安卓版本沒有\(zhòng)\\"Lite\\\" 需要的就是這個局域網,每個人的都不一樣 需

    2023年04月25日
    瀏覽(43)
  • c++讀取yolov5模型進行目標檢測(讀取攝像頭實時監(jiān)測)

    c++讀取yolov5模型進行目標檢測(讀取攝像頭實時監(jiān)測)

    文章介紹 本文是篇基于yolov5模型的一個工程,主要是利用c++將yolov5模型進行調用并測試,從而實現目標檢測任務 任務過程中主要重點有兩個,第一 版本問題,第二配置問題 一,所需軟件及版本 ? ? ? 訓練部分 pytorch==1.13.0? opencv==3.4.1? ?其他的直接pip即可 ? ? ? c++部署?

    2024年02月07日
    瀏覽(21)
  • 在yolov5的detect中我該如何調用第三方攝像頭?

    要在 YOLOv5 的 detect 中調用第三方攝像頭,你可以使用 OpenCV 庫中的 VideoCapture 類來讀取攝像頭的視頻流。 你可以這樣做: 首先,安裝 OpenCV 庫。 然后,在你的代碼中包含以下頭文件: 接下來,創(chuàng)建一個 VideoCapture 對象,用于獲取攝像頭的視頻流: 然后,打開攝像頭,并檢查

    2024年02月12日
    瀏覽(24)
  • Python+Yolov5+Qt交通標志特征識別窗體界面相片視頻攝像頭

    Python+Yolov5+Qt交通標志特征識別窗體界面相片視頻攝像頭

    程序示例精選 Python+Yolov5+Qt交通標志特征識別窗體界面相片視頻攝像頭 如需安裝運行環(huán)境或遠程調試,見文章底部個人 QQ 名片,由專業(yè)技術人員遠程協(xié)助! 這篇博客針對《Python+Yolov5+Qt交通標志特征識別窗體界面相片視頻攝像頭》編寫代碼,代碼整潔,規(guī)則,易讀。 學習與應

    2024年02月03日
    瀏覽(29)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包