天天看點

YOLO-NAS對象檢測算法再一次颠覆YOLO系列算法——已超越YOLOv8

作者:人工智能研究所
YOLO-NAS對象檢測算法再一次颠覆YOLO系列算法——已超越YOLOv8

對象檢測徹底改變了機器感覺和解釋人類世界的方式。這是計算機視覺中一項特别關鍵的任務,使機器能夠識别和定位圖像或視訊中的物體。如自動駕駛汽車、面部識别系統等。推動對象檢測進步的一個關鍵因素是發明了神經網絡架構。強大的神經網絡推動了對象檢測的進步,增強了計算機視覺的能力。特别是,Faster R-CNN和YOLO等架構在塑造現代物體檢測架構方面發揮了重要作用。

YOLO-NAS對象檢測算法再一次颠覆YOLO系列算法——已超越YOLOv8

YOLO代表You Only Look Once,是最流行和最成功的物體檢測方法之一。YOLO的第一個版本于2016年推出,通過将對象檢測視為單個回歸問題,改變了對象檢測的執行方式。它将圖像劃分為網格,同時預測邊界框和類機率。雖然它比以前的物體檢測方法更快,但YOLOv1在檢測小物體方面有局限性。自從第一個YOLO架構出現以來,已經開發了幾種基于YOLO的架構,YOLOv6、YOLOv7和YOLOv8是YOLO家族目前最先進的型号。

YOLO-NAS對象檢測算法

YOLO-NAS對象檢測算法再一次颠覆YOLO系列算法——已超越YOLOv8

新的YOLO-NAS以無與倫比的精度-速度性能提供最先進的(SOTA)性能,優于YOLOv5、YOLOv6、YOLOv7和YOLOv8等其他型号。現有的YOLO模型面臨限制,如量化支援不足和準确性延遲權衡不足。YOLO-NAS模型在包括COCO、Objects365和Roboflow 100在内的知名資料集上進行了預訓練,使其非常适合生産環境中的下遊對象檢測任務。YOLO-NAS的釋出在對象檢測模型的推理性能和效率方面實作了重大飛躍,解決了傳統模型的局限性,并為各種任務和硬體提供了前所未有的适應性。

YOLO-NAS對象檢測算法再一次颠覆YOLO系列算法——已超越YOLOv8

YOLO-NAS對象檢測算法新功能

  • YOLO-NAS模型的架構是使用Deci的專有NAS技術AutoNAC“發現的”。該引擎用于确定階段的最佳尺寸和結構,包括塊類型、塊數量和每個階段的通道數量。
  • 在整個NAS搜尋空間中,有1014種可能的架構配置。作為硬體和資料感覺,AutoNAC引擎考慮了推理堆棧中的所有元件,包括編譯器和量化,并磨練成一個被稱為“效率前沿”的區域,以找到最佳模型。
  • 在整個NAS過程中,量化感覺RepVGG(QA-RepVGG)塊被納入模型架構,保證模型與訓練後量化(PTQ)的相容性。
  • 使用由QA-RepVGG塊組成的量化感覺“QSP”和“QCI”子產品,提供8位量化和重新參數化的好處是在PTQ期間将精度損失降至最低。
  • 研究人員還使用混合量化方法,選擇性地量化特定層,以優化準确性和延遲權衡,同時保持整體性能。
  • YOLO-NAS模型還使用注意力機制和時間推理參數化來提高物體檢測能力。
YOLO-NAS對象檢測算法再一次颠覆YOLO系列算法——已超越YOLOv8

YOLO-NAS的多階段訓練過程包括關于Object365、COCO僞标簽資料、知識蒸餾(KD)和配置設定焦點損失(DFL)的預訓練。該模型在Objects365上進行了預訓練,Objects365是一個擁有200萬張圖像和365類别的綜合資料集。COCO資料集提供了額外的123k張無标簽圖像,用于生成僞标記資料。在COCO上訓練一個準确模型來标記這些圖像,然後用原始的118k圖像來訓練YOLO-NAS模型。

YOLO-NAS架構還結合了知識蒸餾(KD)和配置設定焦點損失(DFL),以增強其訓練過程。

YOLO-NAS對象檢測算法再一次颠覆YOLO系列算法——已超越YOLOv8

YOLO-NAS對象檢測算法代碼實作

在使用YOLO-NAS前,我們依然按照标準的代碼規範,先安裝第三方庫,主要庫如下

!pip install fastcore -U
!pip install super-gradients==3.1.0
!pip install imutils
!pip install roboflow
!pip install pytube --upgrade           

安裝完成後,我們就可以使用YOLO-NAS來進行對象檢測的操作了。

from super_gradients.training import models

yolo_nas_l = models.get("yolo_nas_l", pretrained_weights="coco")           

然後我們初始化一個對象檢測model,并加載coco預訓練模型,一旦我們配置好了模型,便可以進行對象檢測了,對象檢測可以使用如下類型進行圖檔或者視訊的檢測。

'''
PIL Image
Numpy Image
A path to image file
A path to video file
A path to folder with images
URL (Image only)
'''
yolo_nas_l.predict(url, conf=0.25).show()           

我們可以使用predict方法進行對象檢測,傳遞的參數一個是需要檢測的對象(圖檔,視訊即可,當然也可以是一個URL位址),另外一個是置信度。檢測完成後,最後使用show方法顯示檢測後的結果。

YOLO-NAS對象檢測算法再一次颠覆YOLO系列算法——已超越YOLOv8

模型的檢測主要是如下步驟:

  • 輸入圖像通過預處理管道,其中包括圖像大小調整、标準化和permute操作,以将輸入RGB圖像轉換為tensor張量。
  • 模型推斷
  • 檢測結果的後期處理(非最大抑制,将邊界框調整為原始圖像的大小)
  • 結果的可視化(圖像頂部邊界框的渲染)
YOLO-NAS對象檢測算法再一次颠覆YOLO系列算法——已超越YOLOv8

當然模型同樣支援視訊的檢測,我們隻需要把圖檔的位址換成視訊的位址即可

YOLO-NAS對象檢測算法再一次颠覆YOLO系列算法——已超越YOLOv8
import torch
device = 'cuda' if torch.cuda.is_available()else 'CPU'
yolo_nas_l.to(device).predict('11.mp4').save('22.mp4')
開源位址:
#https://github.com/Deci-AI/super-gradients/blob/master/YOLONAS.md           
YOLO-NAS對象檢測算法再一次颠覆YOLO系列算法——已超越YOLOv8

下表羅列了YOLO系列模型的對比參數,從參數來看,其YOLO-NAS模型的參數量與精度,延遲參數以及AP都是目前最好的。

YOLO-NAS對象檢測算法再一次颠覆YOLO系列算法——已超越YOLOv8

在計算機視覺和深度學習領域的不懈研究和創新的推動下,對象檢測最先進的(SOTA)模型也在不斷發展。雖然目前YOLO系列模型是目前對象檢測算法最好的模型,但是未來随着深度學習架構的不斷發展,相信還會出現越來越多,越來越好的對象檢測模型。

其他YOLO模型文章參考:

YOLO對象檢測算法又又又更新了,YOLOv8橫空出世

高大上的YOLOV3對象檢測算法,使用python也可輕松實作

使用python輕松實作高大上的YOLOV4對象檢測算法

基于python的YOLOV5對象檢測模型實作

人工智能領域也卷了嗎——YOLO系列又被重新整理了,YOLOv7橫空出世

YOLOv7與MediaPipe在人體姿态估計上的對比

YOLO-NAS對象檢測算法再一次颠覆YOLO系列算法——已超越YOLOv8

繼續閱讀