日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁(yè) > 科技  > 軟件

YOLO-NAS:最高效的目標(biāo)檢測(cè)算法之一

來(lái)源: 責(zé)編: 時(shí)間:2023-11-14 09:10:01 290觀看
導(dǎo)讀YOLO-NAS目標(biāo)檢測(cè)介紹YOLO(You Only Look Once)是一種目標(biāo)檢測(cè)算法,它使用深度神經(jīng)網(wǎng)絡(luò)模型,特別是卷積神經(jīng)網(wǎng)絡(luò),來(lái)實(shí)時(shí)檢測(cè)和分類對(duì)象。該算法首次在2016年的論文《You Only Look Once:統(tǒng)一的實(shí)時(shí)目標(biāo)檢測(cè)》被提出。自發(fā)布

gAU28資訊網(wǎng)——每日最新資訊28at.com

YOLO-NAS目標(biāo)檢測(cè)gAU28資訊網(wǎng)——每日最新資訊28at.com

介紹

YOLO(You Only Look Once)是一種目標(biāo)檢測(cè)算法,它使用深度神經(jīng)網(wǎng)絡(luò)模型,特別是卷積神經(jīng)網(wǎng)絡(luò),來(lái)實(shí)時(shí)檢測(cè)和分類對(duì)象。該算法首次在2016年的論文《You Only Look Once:統(tǒng)一的實(shí)時(shí)目標(biāo)檢測(cè)》被提出。自發(fā)布以來(lái),由于其高準(zhǔn)確性和速度,YOLO已成為目標(biāo)檢測(cè)和分類任務(wù)中最受歡迎的算法之一。它在各種目標(biāo)檢測(cè)基準(zhǔn)測(cè)試中實(shí)現(xiàn)了最先進(jìn)的性能。gAU28資訊網(wǎng)——每日最新資訊28at.com

gAU28資訊網(wǎng)——每日最新資訊28at.com

YOLO架構(gòu)gAU28資訊網(wǎng)——每日最新資訊28at.com

就在2023年5月的第一周,YOLO-NAS模型被引入到機(jī)器學(xué)習(xí)領(lǐng)域,它擁有無(wú)與倫比的精度和速度,超越了其他模型如YOLOv7和YOLOv8。gAU28資訊網(wǎng)——每日最新資訊28at.com

gAU28資訊網(wǎng)——每日最新資訊28at.com

YOLO-NAS與其他模型對(duì)比gAU28資訊網(wǎng)——每日最新資訊28at.com

YOLO-NAS模型是在COCO和Objects365等數(shù)據(jù)集上進(jìn)行預(yù)訓(xùn)練的,這使得它適用于現(xiàn)實(shí)世界的應(yīng)用。它目前可以在Deci的SuperGradients上使用,這是一個(gè)基于PyTorch的庫(kù),包含近40個(gè)預(yù)訓(xùn)練模型,用于執(zhí)行不同的計(jì)算機(jī)視覺(jué)任務(wù),如分類、檢測(cè)、分割等。gAU28資訊網(wǎng)——每日最新資訊28at.com

那么,讓我們開始安裝SuperGradients庫(kù),以便開始使用YOLO-NAS吧!gAU28資訊網(wǎng)——每日最新資訊28at.com

# Installing supergradients lib!pip install super-gradients==3.1.0

導(dǎo)入和加載YOLO-NAS

#importing models from supergradients' training modulefrom super_gradients.training import models

下一步是初始化模型。YOLO-NAS有不同的模型可供選擇,對(duì)于本文,我們將使用 yolo_nas_l,其中pretrained_weights = 'coco'gAU28資訊網(wǎng)——每日最新資訊28at.com

你可以在這個(gè)GitHub頁(yè)面上獲取有關(guān)不同模型的更多信息。gAU28資訊網(wǎng)——每日最新資訊28at.com

# Initializing modelyolo_nas = models.get("yolo_nas_l", pretrained_weights = "coco")

模型架構(gòu)

在下面的代碼單元格中,我們使用torchinfo的summary來(lái)獲取YOLO-NAS的架構(gòu),這對(duì)于深入了解模型的運(yùn)作方式非常有用。gAU28資訊網(wǎng)——每日最新資訊28at.com

# Yolo NAS architecture!pip install torchinfofrom torchinfo import summarysummary(model = yolo_nas,       input_size = (16,3,640,640),       col_names = ['input_size',                   'output_size',                   'num_params',                   'trainable'],       col_width = 20,       row_settings = ['var_names'])
=================================================================================================================================================Layer (type (var_name))                                           Input Shape          Output Shape         Param #              Trainable=================================================================================================================================================YoloNAS_L (YoloNAS_L)                                             [16, 3, 640, 640]    [16, 8400, 4]        --                   True├─NStageBackbone (backbone)                                       [16, 3, 640, 640]    [16, 96, 160, 160]   --                   True│    └─YoloNASStem (stem)                                         [16, 3, 640, 640]    [16, 48, 320, 320]   --                   True│    │    └─QARepVGGBlock (conv)                                  [16, 3, 640, 640]    [16, 48, 320, 320]   3,024                True│    └─YoloNASStage (stage1)                                      [16, 48, 320, 320]   [16, 96, 160, 160]   --                   True│    │    └─QARepVGGBlock (downsample)                            [16, 48, 320, 320]   [16, 96, 160, 160]   88,128               True│    │    └─YoloNASCSPLayer (blocks)                              [16, 96, 160, 160]   [16, 96, 160, 160]   758,594              True│    └─YoloNASStage (stage2)                                      [16, 96, 160, 160]   [16, 192, 80, 80]    --                   True│    │    └─QARepVGGBlock (downsample)                            [16, 96, 160, 160]   [16, 192, 80, 80]    351,360              True│    │    └─YoloNASCSPLayer (blocks)                              [16, 192, 80, 80]    [16, 192, 80, 80]    2,045,315            True│    └─YoloNASStage (stage3)                                      [16, 192, 80, 80]    [16, 384, 40, 40]    --                   True│    │    └─QARepVGGBlock (downsample)                            [16, 192, 80, 80]    [16, 384, 40, 40]    1,403,136            True│    │    └─YoloNASCSPLayer (blocks)                              [16, 384, 40, 40]    [16, 384, 40, 40]    13,353,733           True│    └─YoloNASStage (stage4)                                      [16, 384, 40, 40]    [16, 768, 20, 20]    --                   True│    │    └─QARepVGGBlock (downsample)                            [16, 384, 40, 40]    [16, 768, 20, 20]    5,607,936            True│    │    └─YoloNASCSPLayer (blocks)                              [16, 768, 20, 20]    [16, 768, 20, 20]    22,298,114           True│    └─SPP (context_module)                                       [16, 768, 20, 20]    [16, 768, 20, 20]    --                   True│    │    └─Conv (cv1)                                            [16, 768, 20, 20]    [16, 384, 20, 20]    295,680              True│    │    └─ModuleList (m)                                        --                   --                   --                   --│    │    └─Conv (cv2)                                            [16, 1536, 20, 20]   [16, 768, 20, 20]    1,181,184            True├─YoloNASPANNeckWithC2 (neck)                                     [16, 96, 160, 160]   [16, 96, 80, 80]     --                   True│    └─YoloNASUpStage (neck1)                                     [16, 768, 20, 20]    [16, 192, 20, 20]    --                   True│    │    └─Conv (reduce_skip1)                                   [16, 384, 40, 40]    [16, 192, 40, 40]    74,112               True│    │    └─Conv (reduce_skip2)                                   [16, 192, 80, 80]    [16, 192, 80, 80]    37,248               True│    │    └─Conv (downsample)                                     [16, 192, 80, 80]    [16, 192, 40, 40]    332,160              True│    │    └─Conv (conv)                                           [16, 768, 20, 20]    [16, 192, 20, 20]    147,840              True│    │    └─ConvTranspose2d (upsample)                            [16, 192, 20, 20]    [16, 192, 40, 40]    147,648              True│    │    └─Conv (reduce_after_concat)                            [16, 576, 40, 40]    [16, 192, 40, 40]    110,976              True│    │    └─YoloNASCSPLayer (blocks)                              [16, 192, 40, 40]    [16, 192, 40, 40]    2,595,716            True│    └─YoloNASUpStage (neck2)                                     [16, 192, 40, 40]    [16, 96, 40, 40]     --                   True│    │    └─Conv (reduce_skip1)                                   [16, 192, 80, 80]    [16, 96, 80, 80]     18,624               True│    │    └─Conv (reduce_skip2)                                   [16, 96, 160, 160]   [16, 96, 160, 160]   9,408                True│    │    └─Conv (downsample)                                     [16, 96, 160, 160]   [16, 96, 80, 80]     83,136               True│    │    └─Conv (conv)                                           [16, 192, 40, 40]    [16, 96, 40, 40]     18,624               True│    │    └─ConvTranspose2d (upsample)                            [16, 96, 40, 40]     [16, 96, 80, 80]     36,960               True│    │    └─Conv (reduce_after_concat)                            [16, 288, 80, 80]    [16, 96, 80, 80]     27,840               True│    │    └─YoloNASCSPLayer (blocks)                              [16, 96, 80, 80]     [16, 96, 80, 80]     2,546,372            True│    └─YoloNASDownStage (neck3)                                   [16, 96, 80, 80]     [16, 192, 40, 40]    --                   True│    │    └─Conv (conv)                                           [16, 96, 80, 80]     [16, 96, 40, 40]     83,136               True│    │    └─YoloNASCSPLayer (blocks)                              [16, 192, 40, 40]    [16, 192, 40, 40]    1,280,900            True│    └─YoloNASDownStage (neck4)                                   [16, 192, 40, 40]    [16, 384, 20, 20]    --                   True│    │    └─Conv (conv)                                           [16, 192, 40, 40]    [16, 192, 20, 20]    332,160              True│    │    └─YoloNASCSPLayer (blocks)                              [16, 384, 20, 20]    [16, 384, 20, 20]    5,117,700            True├─NDFLHeads (heads)                                               [16, 96, 80, 80]     [16, 8400, 4]        --                   True│    └─YoloNASDFLHead (head1)                                     [16, 96, 80, 80]     [16, 68, 80, 80]     --                   True│    │    └─ConvBNReLU (stem)                                     [16, 96, 80, 80]     [16, 128, 80, 80]    12,544               True│    │    └─Sequential (cls_convs)                                [16, 128, 80, 80]    [16, 128, 80, 80]    147,712              True│    │    └─Conv2d (cls_pred)                                     [16, 128, 80, 80]    [16, 80, 80, 80]     10,320               True│    │    └─Sequential (reg_convs)                                [16, 128, 80, 80]    [16, 128, 80, 80]    147,712              True│    │    └─Conv2d (reg_pred)                                     [16, 128, 80, 80]    [16, 68, 80, 80]     8,772                True│    └─YoloNASDFLHead (head2)                                     [16, 192, 40, 40]    [16, 68, 40, 40]     --                   True│    │    └─ConvBNReLU (stem)                                     [16, 192, 40, 40]    [16, 256, 40, 40]    49,664               True│    │    └─Sequential (cls_convs)                                [16, 256, 40, 40]    [16, 256, 40, 40]    590,336              True│    │    └─Conv2d (cls_pred)                                     [16, 256, 40, 40]    [16, 80, 40, 40]     20,560               True│    │    └─Sequential (reg_convs)                                [16, 256, 40, 40]    [16, 256, 40, 40]    590,336              True│    │    └─Conv2d (reg_pred)                                     [16, 256, 40, 40]    [16, 68, 40, 40]     17,476               True│    └─YoloNASDFLHead (head3)                                     [16, 384, 20, 20]    [16, 68, 20, 20]     --                   True│    │    └─ConvBNReLU (stem)                                     [16, 384, 20, 20]    [16, 512, 20, 20]    197,632              True│    │    └─Sequential (cls_convs)                                [16, 512, 20, 20]    [16, 512, 20, 20]    2,360,320            True│    │    └─Conv2d (cls_pred)                                     [16, 512, 20, 20]    [16, 80, 20, 20]     41,040               True│    │    └─Sequential (reg_convs)                                [16, 512, 20, 20]    [16, 512, 20, 20]    2,360,320            True│    │    └─Conv2d (reg_pred)                                     [16, 512, 20, 20]    [16, 68, 20, 20]     34,884               True=================================================================================================================================================Total params: 66,976,392Trainable params: 66,976,392Non-trainable params: 0Total mult-adds (T): 1.04=================================================================================================================================================Input size (MB): 78.64Forward/backward pass size (MB): 27238.60Params size (MB): 178.12Estimated Total Size (MB): 27495.37=================================================================================================================================================

圖像上的目標(biāo)檢測(cè)

現(xiàn)在我們可以測(cè)試模型在不同圖像上檢測(cè)對(duì)象的能力。gAU28資訊網(wǎng)——每日最新資訊28at.com

在下面的代碼中,我們初始化了一個(gè)名為image的變量,該變量接收包含圖像的URL。然后,我們可以使用predict和show方法來(lái)顯示帶有模型預(yù)測(cè)的圖像。gAU28資訊網(wǎng)——每日最新資訊28at.com

image = "https://i.pinimg.com/736x/b4/29/48/b42948ef9202399f13d6e6b3b8330b20.jpg"yolo_nas.predict(image).show()

gAU28資訊網(wǎng)——每日最新資訊28at.com

yolo_nas.predict(image).show()gAU28資訊網(wǎng)——每日最新資訊28at.com

在上面的圖像中,我們可以看到為每個(gè)對(duì)象做出的檢測(cè)以及模型對(duì)其自身預(yù)測(cè)的置信度分?jǐn)?shù)。例如,我們可以看到模型對(duì)地板上的白色物體是一個(gè)杯子有97%的置信度。然而,這個(gè)圖像中有許多對(duì)象,我們可以看到模型將任天堂64游戲主機(jī)誤認(rèn)為是一輛汽車。gAU28資訊網(wǎng)——每日最新資訊28at.com

我們可以通過(guò)使用conf參數(shù)來(lái)改善結(jié)果,該參數(shù)用作檢測(cè)的閾值。例如,我們可以將此值更改為conf = 0.50,以便模型僅顯示置信度高于50%的檢測(cè)。讓我們?cè)囈辉嚒?span style="display:none">gAU28資訊網(wǎng)——每日最新資訊28at.com

image = "https://i.pinimg.com/736x/b4/29/48/b42948ef9202399f13d6e6b3b8330b20.jpg"yolo_nas.predict(image, conf = 0.50).show()

gAU28資訊網(wǎng)——每日最新資訊28at.com

YOLO-NAS: Object Detection on ImagegAU28資訊網(wǎng)——每日最新資訊28at.com

現(xiàn)在,模型只顯示在其檢測(cè)中至少有50%置信度的對(duì)象,這些對(duì)象是杯子、電視和遙控器。gAU28資訊網(wǎng)——每日最新資訊28at.com

我們可以測(cè)試更多圖像。gAU28資訊網(wǎng)——每日最新資訊28at.com

gAU28資訊網(wǎng)——每日最新資訊28at.com

gAU28資訊網(wǎng)——每日最新資訊28at.com

YOLO-NAS: Object Detection on ImagegAU28資訊網(wǎng)——每日最新資訊28at.com

在視頻上進(jìn)行目標(biāo)檢測(cè)

我們還可以使用YOLO-NAS模型在視頻上執(zhí)行實(shí)時(shí)目標(biāo)檢測(cè)!gAU28資訊網(wǎng)——每日最新資訊28at.com

在下面的代碼中,我使用IPython庫(kù)中的YouTubeVideo模塊選擇并保存任何我喜歡的YouTube視頻。gAU28資訊網(wǎng)——每日最新資訊28at.com

from IPython.display import YouTubeVideo # Importing YouTubeVideo from IPython's display module
video_id = "VtK2ZMlcCQU" # Selecting video IDvideo = YouTubeVideo(video_id) # Loading videodisplay(video) # Displaying video

現(xiàn)在我們已經(jīng)選擇了一個(gè)視頻,我們將使用youtube-dl庫(kù)以.mp4格式下載視頻。gAU28資訊網(wǎng)——每日最新資訊28at.com

完成后,我們將視頻保存到input_video_path變量,該變量將作為我們的模型執(zhí)行檢測(cè)的輸入。gAU28資訊網(wǎng)——每日最新資訊28at.com

# Downloading videovideo_url = f'https://www.youtube.com/watch?v={video_id}'!pip install -U "git+https://github.com/ytdl-org/youtube-dl.git"!python -m youtube_dl -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/mp4' "$video_url"print('Video downloaded')# Selecting input and output pathsinput_video_path = f"/kaggle/working/Golf Rehab 'Short Game' Commercial-VtK2ZMlcCQU.mp4"output_video_path = "detections.mp4"

然后,我們導(dǎo)入PyTorch并啟用GPU。gAU28資訊網(wǎng)——每日最新資訊28at.com

import torchdevice = 'cuda' if torch.cuda.is_available() else "cpu"

然后,我們使用to()方法在GPU上運(yùn)行YOLO-NAS模型,并使用predict()方法在input_video_path變量中存儲(chǔ)的視頻上執(zhí)行預(yù)測(cè)。save()方法用于保存帶有檢測(cè)結(jié)果的視頻,保存路徑由output_video_path指定。gAU28資訊網(wǎng)——每日最新資訊28at.com

yolo_nas.to(device).predict(input_video_path).save(output_video_path) # Running predictions on video
Video downloaded
Predicting Video: 100%|██████████| 900/900 [33:15<00:00,  2.22s/it]

完成后,我們?cè)俅问褂肐Python來(lái)顯示一個(gè)包含以.gif格式下載的視頻的.gif文件,以便在此Kaggle筆記本中查看。gAU28資訊網(wǎng)——每日最新資訊28at.com

from IPython.display import Imagewith open('/kaggle/input/detection-gif/detections.gif','rb') as f:display(Image(data=f.read(), format='png'))

結(jié)論

我們使用新發(fā)布的YOLO-NAS模型執(zhí)行了圖像和視頻上的初始目標(biāo)檢測(cè)任務(wù)。你可以使用自定義數(shù)據(jù)集來(lái)對(duì)該模型進(jìn)行微調(diào),以提高其在某些對(duì)象上的性能。gAU28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-24315-0.htmlYOLO-NAS:最高效的目標(biāo)檢測(cè)算法之一

聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: 現(xiàn)代C++中的decltype(auto):理解與運(yùn)用

下一篇: C 語(yǔ)言編譯器(IDE)初學(xué)者指南:選擇適合你的工具

標(biāo)簽:
  • 熱門焦點(diǎn)
Top 主站蜘蛛池模板: 大冶市| 丹寨县| 阜新| 汉沽区| 左贡县| 鄂温| 嵊泗县| 定陶县| 东莞市| 浑源县| 广元市| 隆德县| 宁波市| 达孜县| 合水县| 舟曲县| 交口县| 南平市| 通城县| 三门峡市| 舒兰市| 杭锦后旗| 册亨县| 栾城县| 磐石市| 内丘县| 平定县| 高邑县| 云南省| 漯河市| 木兰县| 望奎县| 鲜城| 金阳县| 和硕县| 民权县| 三台县| 布尔津县| 九寨沟县| 克山县| 淮安市|