18video性欧美19sex,欧美高清videosddfsexhd,性少妇videosexfreexxx片中国,激情五月激情综合五月看花,亚洲人成网77777色在线播放

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

一個(gè)使用YoloV5的深度指南,使用WBF進(jìn)行性能提升

新機(jī)器視覺 ? 來源:AI公園 ? 作者:AI公園 ? 2021-04-18 10:05 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

導(dǎo)讀

一個(gè)使用YoloV5的深度指南,使用WBF進(jìn)行性能提升。

網(wǎng)上有大量的YoloV5教程,本文的目的不是復(fù)制內(nèi)容,而是對(duì)其進(jìn)行擴(kuò)展。我最近在做一個(gè)目標(biāo)檢測(cè)競(jìng)賽,雖然我發(fā)現(xiàn)了大量創(chuàng)建基線的教程,但我沒有找到任何關(guān)于如何擴(kuò)展它的建議。此外,我想強(qiáng)調(diào)一下YoloV5配置中影響性能的最重要部分,因?yàn)楫吘箶?shù)據(jù)科學(xué)主要是關(guān)于實(shí)驗(yàn)和超參數(shù)調(diào)整。

在這之前,我想說使用目標(biāo)檢測(cè)模型和使用圖像分類模型在框架和庫的工作方式上是不同的。這是我注意到的,我花了很長(zhǎng)時(shí)間才弄明白。大多數(shù)流行的目標(biāo)檢測(cè)模型(如YoloV5、EfficientDet)使用命令行接口來訓(xùn)練和評(píng)估,而不是使用編碼方法。這意味著,你所需要做的就是獲取特定格式的數(shù)據(jù)(COCO或VOC),并將命令指向它。這通常與使用代碼訓(xùn)練和評(píng)估模型的圖像分類模型不同。

數(shù)據(jù)預(yù)處理

YoloV5期望你有兩個(gè)目錄,一個(gè)用于訓(xùn)練,一個(gè)用于驗(yàn)證。在這兩個(gè)目錄中,你需要另外兩個(gè)目錄,“Images”和“Labels”。Images包含實(shí)際的圖像,每個(gè)圖像的標(biāo)簽都應(yīng)該有一個(gè)帶有該圖像標(biāo)注的.txt文件,文本文件應(yīng)該有與其對(duì)應(yīng)的圖像相同的名稱。

標(biāo)注格式如下:

<'class_id'><'x_center'><'y_center'><'height'>

要在代碼中做到這一點(diǎn),你可能需要一個(gè)類似的函數(shù),在原始數(shù)據(jù)幀中有圖像項(xiàng),它們的類id和它們的邊界框:

defcreate_file(df,split_df,train_file,train_folder,fold): os.makedirs('labels/train/',exist_ok=True) os.makedirs('images/train/',exist_ok=True) os.makedirs('labels/val/',exist_ok=True) os.makedirs('images/val/',exist_ok=True) list_image_train=split_df[split_df[f'fold_{fold}']==0]['image_id'] train_df=df[df['image_id'].isin(list_image_train)].reset_index(drop=True) val_df=df[~df['image_id'].isin(list_image_train)].reset_index(drop=True) fortrain_imgintqdm(train_df.image_id.unique()): withopen('labels/train/{train_img}.txt','w+')asf: row=train_df[train_df['image_id']==train_img] [['class_id','x_center','y_center','width','height']].values row[:,1:]/=SIZE#Imagesize,512here row=row.astype('str') forboxinrange(len(row)): text=''.join(row[box]) f.write(text) f.write(' ') shutil.copy(f'{train_img}.png', f'images/train/{train_img}.png') forval_imgintqdm(val_df.image_id.unique()): withopen(f'{labels/val/{val_img}.txt','w+')asf: row=val_df[val_df['image_id']==val_img] [['class_id','x_center','y_center','width','height']].values row[:,1:]/=SIZE row=row.astype('str') forboxinrange(len(row)): text=''.join(row[box]) f.write(text) f.write(' ') shutil.copy(f'{val_img}.png', f'images/val/{val_img}.png')

注意:不要忘記保存在標(biāo)簽文本文件中的邊界框的坐標(biāo)**必須被歸一化(從0到1)。**這非常重要。另外,如果圖像有多個(gè)標(biāo)注,在文本文件中,每個(gè)標(biāo)注(預(yù)測(cè)+邊框)將在單獨(dú)的行上。

在此之后,你需要一個(gè)配置文件,其中包含標(biāo)簽的名稱、類的數(shù)量以及訓(xùn)練和驗(yàn)證的路徑。

importyaml classes=[‘Aorticenlargement’, ‘Atelectasis’, ‘Calcification’, ‘Cardiomegaly’, ‘Consolidation’, ‘ILD’, ‘Infiltration’, ‘LungOpacity’, ‘Nodule/Mass’, ‘Otherlesion’, ‘Pleuraleffusion’, ‘Pleuralthickening’, ‘Pneumothorax’, ‘Pulmonaryfibrosis’] data=dict( train=‘../vinbigdata/images/train’,#trainingimagespath val=‘../vinbigdata/images/val’,#validationimagespath nc=14,#numberofclasses names=classes ) withopen(‘./yolov5/vinbigdata.yaml’,‘w’)asoutfile: yaml.dump(data,outfile,default_flow_style=False)

現(xiàn)在,你需要做的就是運(yùn)行這個(gè)命令:

pythontrain.py—img640—batch16—epochs30—data./vinbigdata.yaml—cfgmodels/yolov5x.yaml—weightsyolov5x.pt

從經(jīng)驗(yàn)中需要注意的事情:

好了,現(xiàn)在我們已經(jīng)瀏覽了基本知識(shí),讓我們來看看重要的東西:

別忘了歸一化坐標(biāo)。

如果你的初始性能比預(yù)期的差得多,那么最可能的原因(我在許多其他參賽者身上看到過這種情況)是你在預(yù)處理方面做錯(cuò)了什么。這看起來很瑣碎,但有很多細(xì)節(jié)你必須注意,特別是如果這是你的第一次。

YoloV5有多種型號(hào)(yolov5s、yolov5m、yolov5l、yolov5x),不要只選擇最大的一個(gè),因?yàn)樗赡軙?huì)過擬合。從一個(gè)基線開始,比如中等大小的,然后試著改善它。

雖然我是在512尺寸的圖像上訓(xùn)練的,但我發(fā)現(xiàn)用640來infer可以提高性能。

不要忘記加載預(yù)訓(xùn)練的權(quán)重(-weights標(biāo)志)。遷移學(xué)習(xí)將大大提高你的性能,并將為你節(jié)省大量的訓(xùn)練時(shí)間(在我的例子中,大約50個(gè)epoch,每個(gè)epoch大約需要20分鐘!)

Yolov5x需要大量的內(nèi)存,當(dāng)訓(xùn)練尺寸為512,批大小為4時(shí),它需要大約14GB的GPU內(nèi)存(大多數(shù)GPU大約8GB內(nèi)存)。

YoloV5已經(jīng)使用了數(shù)據(jù)增強(qiáng),你可以選擇喜歡或不喜歡的增強(qiáng),你所需要做的就是使用yolov5/data/hyp.scratch.yml文件去調(diào)整。

默認(rèn)的yolov5訓(xùn)練腳本使用weights and biases,說實(shí)話,這非常令人印象深刻,它在模型訓(xùn)練時(shí)保存所有度量。但是,如果你想關(guān)閉它,只需在訓(xùn)練腳本標(biāo)記中添加WANDB_MODE= " dryrun "即可。

我希望早就發(fā)現(xiàn)的一件事是,YoloV5將大量有用的指標(biāo)保存到目錄YoloV5 /runs/train/exp/中。訓(xùn)練之后,你可以找到“confusion_matrix.png”和“results.png”,其中的result .png應(yīng)該是這樣的:

729b6c24-9fbb-11eb-8b86-12bb97331649.png

使用WBF預(yù)處理

好了,現(xiàn)在你已經(jīng)調(diào)整了超參數(shù),升級(jí)了你的模型,測(cè)試了多種圖像大小和交叉驗(yàn)證。現(xiàn)在是介紹一些提高性能的技巧的時(shí)候了。

加權(quán)框融合是一種在訓(xùn)練前(清理數(shù)據(jù)集)或訓(xùn)練后(使預(yù)測(cè)更準(zhǔn)確)動(dòng)態(tài)融合框的方法。如果你想知道更多,你可以在這里查看我的文章:

WBF:優(yōu)化目標(biāo)檢測(cè),融合過濾預(yù)測(cè)框 (qq.com)

要使用它對(duì)數(shù)據(jù)集進(jìn)行預(yù)處理,這將大多數(shù)參賽者的性能提高了大約10-20%,你可以這樣使用:

fromensemble_boxesimport* forimage_idintqdm(df['image_id'],leave=False): image_df=df[df['image_id']==image_id].reset_index(drop=True) h,w=image_df.loc[0,['height','width']].values boxes=image_df[['x_min','y_min','x_max','y_max']].values.tolist() #Normalisealltheboundingboxes(bydividingthembysize-1 boxes=[[j/(size-1)forjini]foriinboxes] scores=[1.0]*len(boxes)#setallofthescoresto1sinceweonlyhave1modelhere labels=[float(i)foriinimage_df['class_id'].values] boxes,scores,labels=weighted_boxes_fusion([boxes],[scores],[labels],weights=None,iou_thr=iou_thr, skip_box_thr=skip_box_thr) list_image.extend([image_id]*len(boxes)) list_h.extend([h]*len(boxes)) list_w.extend([w]*len(boxes)) list_boxes.extend(boxes) list_cls.extend(labels.tolist()) #bringtheboundingboxesbacktotheiroriginalsize(bymultiplyingbysize-1)list_boxes=[[int(j*(size-1))forjini]foriinlist_boxes] new_df['image_id']=list_image new_df['class_id']=list_cls new_df['h']=list_h new_df['w']=list_w #Unpackthecoordinatesfromtheboundingboxes new_df['x_min'],new_df['y_min'], new_df['x_max'],new_df['y_max']=np.transpose(list_boxes)

這意味著要在將邊框坐標(biāo)保存到標(biāo)注文件之前完成。你還可以嘗試在用YoloV5以同樣的方式預(yù)測(cè)邊界框之后使用它。

首先,在訓(xùn)練YoloV5之后,運(yùn)行:

!pythondetect.py—weights/runs/train/exp/weights —img640 —conf0.005 —iou0.45 —source$test_dir —save-txt—save-conf—exist-ok

然后提取框、分?jǐn)?shù)和標(biāo)簽:

runs/detect/exp/labels

然后傳遞到:

boxes,scores,labels=weighted_boxes_fusion([boxes],[scores],[labels],weights=None,iou_thr=iou_thr, skip_box_thr=skip_box_thr)

最后的思考

我希望你已經(jīng)學(xué)到了一些關(guān)于擴(kuò)展你的基線YoloV5的知識(shí),我認(rèn)為最重要的事情總是要考慮的是遷移學(xué)習(xí),圖像增強(qiáng),模型復(fù)雜性,預(yù)處理和后處理技術(shù)。這些是你可以輕松控制和使用YoloV5來提高性能的大部分方面。

責(zé)任編輯:lq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 圖像分類
    +關(guān)注

    關(guān)注

    0

    文章

    96

    瀏覽量

    12371
  • 目標(biāo)檢測(cè)
    +關(guān)注

    關(guān)注

    0

    文章

    230

    瀏覽量

    16331
  • 遷移學(xué)習(xí)
    +關(guān)注

    關(guān)注

    0

    文章

    74

    瀏覽量

    5822

原文標(biāo)題:高級(jí)YoloV5指南,使用WBF來提升目標(biāo)檢測(cè)性能

文章出處:【微信號(hào):vision263com,微信公眾號(hào):新機(jī)器視覺】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    技術(shù)分享 | RK3588基于Yolov5的目標(biāo)識(shí)別演示

    YOLO是種基于深度神經(jīng)網(wǎng)絡(luò)的目標(biāo)檢測(cè)算法,用在圖像或視頻中實(shí)時(shí)識(shí)別和定位多個(gè)對(duì)象。在其各個(gè)版本的迭代中,YOLOv5憑借易用性和性能平衡在工業(yè)、醫(yī)療、農(nóng)業(yè)、零售等領(lǐng)域被廣泛的應(yīng)用。
    的頭像 發(fā)表于 09-18 17:27 ?856次閱讀
    技術(shù)分享 | RK3588基于<b class='flag-5'>Yolov5</b>的目標(biāo)識(shí)別演示

    基于瑞芯微RK3576的 yolov5訓(xùn)練部署教程

    的網(wǎng)絡(luò)結(jié)構(gòu)分為輸入端BackboneNeck、Head 四個(gè)部分。 本教程針對(duì)目標(biāo)檢測(cè)算法yolov5的訓(xùn)練和部署到EASY-EAI-Orin-nano(RK3576)進(jìn)行說明,而數(shù)據(jù)標(biāo)注方法可以參考我們往期的文章。
    的頭像 發(fā)表于 09-11 16:43 ?1853次閱讀
    基于瑞芯微RK3576的 <b class='flag-5'>yolov5</b>訓(xùn)練部署教程

    在k230上使用yolov5檢測(cè)圖像卡死,怎么解決?

    0.99以上 模型轉(zhuǎn)換指令 再將該模型放到k230設(shè)備上使用yolo大作戰(zhàn)中yolov5檢測(cè)示例,檢測(cè)就會(huì)卡死,打印出的檢測(cè)結(jié)果會(huì)超過1。 目前無從下手,大佬們求救!
    發(fā)表于 08-11 07:41

    yolov5訓(xùn)練部署全鏈路教程

    m、YOLOv5l、YOLOv5x四個(gè)模型。YOLOv5相比YOLOv4而言,在檢測(cè)平均精度降低不多的基礎(chǔ)上,具有均值權(quán)重文件更小,訓(xùn)練時(shí)間
    的頭像 發(fā)表于 07-25 15:22 ?815次閱讀
    <b class='flag-5'>yolov5</b>訓(xùn)練部署全鏈路教程

    使用yolov5轉(zhuǎn)為kmodel之后,運(yùn)行MicroPython報(bào)錯(cuò)誤:IndexError: index is out of bounds怎么解決?

    ] img,img_ori=read_img(img_path) rgb888p_size=[img.shape[2],img.shape[1]] # 初始化YOLOv5實(shí)例 yolo=YOLOv5
    發(fā)表于 06-06 06:23

    在K230上部署yolov5時(shí) 出現(xiàn)the array is too big的原因?

    重現(xiàn)步驟 1將yolov5的kmodel放入k230的data數(shù)據(jù) 2使用yolo大作戰(zhàn)里的視頻流推理代碼 3運(yùn)行 期待結(jié)果和實(shí)際結(jié)果 期待的結(jié)果 將目標(biāo)檢測(cè)的框圈起來 實(shí)際看到的結(jié)果
    發(fā)表于 05-28 07:47

    RV1126 yolov8訓(xùn)練部署教程

    YOLOv8 是 ultralytics 公司在 2023 年 1月 10 號(hào)開源的基于YOLOV5進(jìn)行更新的 下一個(gè)重大更新版本,目前支持圖像分類、物體檢測(cè)和實(shí)例分割任務(wù),鑒于
    的頭像 發(fā)表于 04-16 14:53 ?965次閱讀
    RV1126 <b class='flag-5'>yolov</b>8訓(xùn)練部署教程

    請(qǐng)問如何在imx8mplus上部署和運(yùn)行YOLOv5訓(xùn)練的模型?

    我正在從事 imx8mplus yocto 項(xiàng)目。我已經(jīng)在自定義數(shù)據(jù)集上的 YOLOv5 上訓(xùn)練了對(duì)象檢測(cè)模型。它在 ubuntu 電腦上運(yùn)行良好。現(xiàn)在我想在我的 imx8mplus 板上運(yùn)行該模型
    發(fā)表于 03-25 07:23

    YOLOv5類中rgb888p_size這個(gè)參數(shù)要與模型推理和訓(xùn)練的尺寸致嗎?致會(huì)達(dá)到更好的效果?

    YOLOv5類中rgb888p_size這個(gè)參數(shù)要與模型推理和訓(xùn)練的尺寸致嗎,致會(huì)達(dá)到更好的效果
    發(fā)表于 03-11 08:12

    yolov5轉(zhuǎn)onnx在cubeAI進(jìn)行部署,部署失敗的原因?

    一個(gè)我是轉(zhuǎn)onnx時(shí) 想把權(quán)重文件變小點(diǎn) 就用了半精度 --half,則說17版本不支持半精度 后面則是沒有縮小的單精度 但是顯示哪里溢出了···· 也不說是哪里、、。。。 到底能不能部署yolov5這種東西???? 也沒看見幾個(gè)部署在這上面..............
    發(fā)表于 03-07 11:38

    【米爾RK3576開發(fā)板評(píng)測(cè)】+項(xiàng)目名稱YOLOV5目標(biāo)檢測(cè)

    /examples/yolov5/model ./download_model.sh 下載的是個(gè)ONNX格式的神經(jīng)網(wǎng)絡(luò)模型,但發(fā)現(xiàn)它無法在瑞芯微系統(tǒng)中直接運(yùn)行。為了解決這個(gè)問題,您計(jì)劃使用特定
    發(fā)表于 02-15 13:24

    什么是YOLO?RK3568+YOLOv5是如何實(shí)現(xiàn)物體識(shí)別的?起來了解下!

    、產(chǎn)品簡(jiǎn)介TL3568-PlusTEB人工智能實(shí)驗(yàn)箱國(guó)產(chǎn)高性能處理器64位4核低功耗2.0GHz超高主頻1T超高算力NPU兼容鴻蒙等國(guó)產(chǎn)操作系統(tǒng)二、實(shí)驗(yàn)?zāi)康?、了解YOLOv5模型的用途及流程;2
    的頭像 發(fā)表于 12-19 19:04 ?1442次閱讀
    什么是YOLO?RK3568+<b class='flag-5'>YOLOv5</b>是如何實(shí)現(xiàn)物體識(shí)別的?<b class='flag-5'>一</b>起來了解<b class='flag-5'>一</b>下!

    在RK3568教學(xué)實(shí)驗(yàn)箱上實(shí)現(xiàn)基于YOLOV5的算法物體識(shí)別案例詳解

    種非常流行的實(shí)時(shí)目標(biāo)檢測(cè)模型,它提供了出色的性能和精度。YOLOv5可以分為三個(gè)部分,分別是: 1、主干特征提取網(wǎng)絡(luò)(Backbone) 2、加強(qiáng)特征提取網(wǎng)絡(luò)(FPN) 3、分類器與回歸器(Yolo
    發(fā)表于 12-03 14:56

    在樹莓派上部署YOLOv5進(jìn)行動(dòng)物目標(biāo)檢測(cè)的完整流程

    卓越的性能。本文將詳細(xì)介紹如何在性能更強(qiáng)的計(jì)算機(jī)上訓(xùn)練YOLOv5模型,并將訓(xùn)練好的模型部署到樹莓派4B上,通過樹莓派的攝像頭進(jìn)行實(shí)時(shí)動(dòng)物目標(biāo)檢測(cè)。
    的頭像 發(fā)表于 11-11 10:38 ?4444次閱讀
    在樹莓派上部署<b class='flag-5'>YOLOv5</b><b class='flag-5'>進(jìn)行</b>動(dòng)物目標(biāo)檢測(cè)的完整流程

    RK3588 技術(shù)分享 | 在Android系統(tǒng)中使用NPU實(shí)現(xiàn)Yolov5分類檢測(cè)

    : NPU幫助機(jī)器完成更高效的翻譯、文本分類和情感分析,推動(dòng)了自然語言處理技術(shù)的發(fā)展。 實(shí)例分享:Yolov5分類檢測(cè) 在RK3588處理器上,不僅可以基于Linux系統(tǒng)使用NPU,也可以
    發(fā)表于 10-24 10:13