訂閱
糾錯
加入自媒體

如何使用 Yolo v5 對象檢測算法進行自定義對象檢測

介紹

在本文中,將向你解釋如何使用 Yolo v5 算法檢測和分類60+個不同類型的道路交通標志。

我們將從非;A的開始,涵蓋每個步驟,如準備數(shù)據(jù)集、訓練和測試等。在本文中,我們將使用 Windows 10系統(tǒng)。

讓我們更多地討論 YOLO 及其架構。

YOLO 是You Only Look Once的首字母縮寫。我們使用的是Ultralytics于2020年6月推出的版本 5,它是目前可用的最先進的目標識別算法。

YOLOv5 是一種新穎的卷積神經(jīng)網(wǎng)絡(CNN),可以非常準確地實時檢測對象。這種方法使用單個神經(jīng)網(wǎng)絡來處理整個圖片,然后將其分成多個部分并預測每個部分的邊界框和概率。這些邊界框由預期概率加權。

該方法“只看一次”圖像,因為它僅在一次前向傳播通過神經(jīng)網(wǎng)絡后進行預測。然后在非最大抑制之后傳遞檢測到的項目(這確保對象檢測算法只識別每個對象一次)。

它的架構主要由三部分組成,即:

1. Backbone: Backbone 主要用于從輸入圖像中提取關鍵特征。CSP(Cross Stage Partial Networks)在 YOLO v5 中用作主干,以從輸入圖像中提取豐富的有用特征。

2. Neck: Neck 主要用于創(chuàng)建特征金字塔。當涉及到對象縮放時,特征金字塔有助于模型泛化。它有助于識別不同大小和比例的同一物體。特征金字塔在幫助模型有效地處理之前看不見的數(shù)據(jù)方面是非常有益的。其他模型,如FPN、BiFPN和PANet,使用各種各樣的特征金字塔方法。PANet 在 YOLO v5 中用作 Neck 來獲取特征金字塔。

3. Head: 模型Head主要負責最后的檢測步驟。它使用錨框來構建具有類別概率、對象性分數(shù)和邊界框的最終輸出向量。

YOLO v5 模型的頭部與之前的 YOLO V3 和 V4 版本相同。

Yolo v5 的優(yōu)缺點

· 它比 YOLOv4 小 88%(27 MB vs 244 MB)

· 它比 YOLOv4 快 180%(140 FPS vs 50 FPS)

· 它在同一任務上大致與 YOLOv4 一樣準確(0.895 mAP vs 0.892 mAP)

· 但主要的問題是YOLOv5沒有像其他YOLO版本一樣發(fā)布官方論文。此外,YOLO v5 仍在開發(fā)中,我們會經(jīng)常收到Ultralytics 的更新,未來開發(fā)者可能會更新一些設置。

目錄

1.在 Windows 10 中設置虛擬環(huán)境。

2.克隆 Yolo v5 的 GitHub 倉庫。

3.數(shù)據(jù)集的準備和預處理。

4.訓練模型。

5.預測和現(xiàn)場測試。

創(chuàng)建虛擬環(huán)境

我們將首先通過在 Windows 命令提示符中運行該命令來設置虛擬環(huán)境

1.安裝Virtualenv(運行以下命令安裝虛擬環(huán)境)

$ pip install virtualenv

2.創(chuàng)建環(huán)境(運行以下命令創(chuàng)建虛擬環(huán)境)

$ py -m venv YoloV5_VirEnv

3.使用該命令激活它(運行以下命令以激活該環(huán)境)

$ YoloV5_VirEnvScriptsactivate

你也可以使用停用它(如果要停用該環(huán)境,請運行以下命令)

$ deactivate

設置 YOLO

激活虛擬環(huán)境后,克隆這個由Ultralytics創(chuàng)建和維護的 GitHub 存儲庫:

$ git clone https://github.com/ultralytics/yolov5

$ cd yolov5

目錄結構

yolov5/

.github/

data/

models/

utils/

.dockerignore

.gitattributes

.gitignore

.pre-commit-config.yaml

CONTRIBUTING.md

detect.py

Dockerfileexport.py

hubconf.py

LICENSE

README.md

requirements.txt

setup.cfg

train.py

tutorial.ipynb

val.py

安裝必要的庫:首先,我們將安裝做圖像處理所需的所有必要的庫(OpenCV &Pillow),圖像分類 (Tensorflow&PyTorch) , 進行矩陣操作(Numpy)

$ pip install -r requirements.txt

數(shù)據(jù)集的準備

從該鏈接下載完整的標記數(shù)據(jù)集:

image.png

然后解壓 zip 文件并將其移動到 yolov5/ 目錄。

1144images_dataset/

train/

test/

在yolov5/目錄中創(chuàng)建一個名為 data.yaml 的文件 ,并將以下代碼粘貼到其中。

該文件將包含你的標簽以及訓練和測試數(shù)據(jù)集的路徑。

image.png

image.png

image.png

我們將使用總共 77 個不同的類

使用 Yolo v5 訓練模型

現(xiàn)在,運行該命令以最終訓練你的數(shù)據(jù)集。你可以根據(jù) PC 的規(guī)格更改批次大小。訓練時間將取決于你電腦的性能,最好使用 Google Colab。

你還可以訓練不同版本的 YOLOv5 算法,

所有這些都將采用不同的計算能力,并提供 FPS(每秒幀數(shù))和精度的不同組合。

在本文中,我們將使用YOLOv5s版本,因為它是最簡單的。

$ python train.py --data data.yaml --cfg yolov5s.yaml --batch-size 8 --name Model

現(xiàn)在內部運行 runs/train/Model/,你將找到最終訓練好的模型。

image.png

best.pt 包含用于最終檢測和分類的最終模型。

results.txt 文件將包含你在每個時期實現(xiàn)的準確度和損失的摘要。

其他圖像包含一些繪圖和圖表,可用于更多分析。

Model Yolo v5 的測試

將你的 yolov5/目錄移到別處,并克隆那個存儲庫。

$ git clone https://github.com/aryan0141/RealTime_Detection-And-Classification-of-TrafficSigns

$ cd RealTime_Detection-And-Classification-of-TrafficSigns

目錄結構

image.png

現(xiàn)在復制我們在上面訓練的模型并將其粘貼到此目錄中。

注意:我已經(jīng)在Model/目錄中包含了一個經(jīng)過訓練的模型,但你也可以將其替換為經(jīng)過訓練的模型。移動到代碼所在的目錄中。

$ cd Codes/

將你的視頻圖像放在**Test*目錄中。我還提供了一些示例視頻和圖像供你參考。

用于測試圖像

$ python detect.py --source ../Test/test1.jpeg --weights ../Model/weights/best.pt

用于測試視頻

$ python detect.py --source ../Test/vidd1.mp4 --weights ../Model/weights/best.pt

對于網(wǎng)絡攝像頭

$ python detect.py --source 0 --weights ../Model/weights/best.pt

你的最終圖像和視頻存儲在Results/目錄中。

示例圖像

每秒幀數(shù)(FPS)取決于你使用的 GPU。我在 Nvidia MX 350 2GB 顯卡上獲得了大約 50FPS

GitHub

這是 Github, 可以找到本文中使用的完整代碼。

image.png


       原文標題 : 如何使用 Yolo v5 對象檢測算法進行自定義對象檢測

聲明: 本文由入駐維科號的作者撰寫,觀點僅代表作者本人,不代表OFweek立場。如有侵權或其他問題,請聯(lián)系舉報。

發(fā)表評論

0條評論,0人參與

請輸入評論內容...

請輸入評論/評論長度6~500個字

您提交的評論過于頻繁,請輸入驗證碼繼續(xù)

暫無評論

暫無評論

人工智能 獵頭職位 更多
掃碼關注公眾號
OFweek人工智能網(wǎng)
獲取更多精彩內容
文章糾錯
x
*文字標題:
*糾錯內容:
聯(lián)系郵箱:
*驗 證 碼:

粵公網(wǎng)安備 44030502002758號