YOLOv5:簡單強悍的機器視覺工具

YOLOv5是一個基於YOLO(You Only Look Once)架構的物體檢測開源項目。由Ultralytics公司開發並在GitHub上發布,YOLOv5以其高效、準確和易用性而聞名。本文將詳細介紹YOLOv5,包括其架構、特性、使用場景和主要功能。

YOLOv5:圖片辨識

YOLOv5架構

YOLOv5繼承了YOLO系列的高效物體檢測理念,並進一步在模型架構上進行了優化。YOLOv5主要由以下幾個部分組成:

  1. Backbone(骨幹網絡)
    YOLOv5的骨幹網絡負責提取圖像的基本特徵。YOLOv5使用了CSP(Cross Stage Partial Networks)架構作為骨幹網絡,這種架構能夠有效地平衡計算成本和檢測精度。CSP通過在每個階段引入部分連接,減少了重複計算,從而提升了網絡的效率。
  2. Neck(頸部網絡)
    頸部網絡用於進一步處理和融合特徵圖。YOLOv5使用了PANet(Path Aggregation Network)結構來增強特徵融合的能力。PANet通過融合不同層次的特徵圖,提高了對物體的檢測精度,特別是在小物體檢測方面。
  3. Head(頭部網絡)
    頭部網絡負責最終的物體檢測和分類。YOLOv5的頭部網絡基於YOLO架構進行設計,包含多個預測層,每個層次負責不同大小的物體檢測。這種多尺度檢測方式使YOLOv5在各種場景中都能保持良好的性能。

YOLOv5特性

YOLOv5相較於前幾代YOLO模型,具有以下特性:

  1. 高效性
    YOLOv5在保持高檢測精度的同時,顯著提升了推理速度。這主要歸功於CSP和PANet等高效架構的應用,使模型能夠在有限的計算資源下實現高性能。
  2. 輕量化
    YOLOv5提供了多個模型變體,包括YOLOv5s(small)、YOLOv5m(medium)、YOLOv5l(large)和YOLOv5x(extra large),用戶可以根據實際需求選擇合適的模型。這些模型在不同的計算資源和應用場景下都能夠靈活運用。
  3. 易用性
    YOLOv5在易用性方面進行了大量優化。Ultralytics提供了詳細的文檔、示例和教程,使開發者能夠輕鬆上手並進行自定義開發。此外,YOLOv5的代碼結構清晰、模塊化程度高,便於擴展和修改。
  4. 多功能性
    YOLOv5支持多種物體檢測任務,包括圖像分類、物體檢測和實例分割等。這使得YOLOv5成為一個功能強大的多用途工具,可以應用於廣泛的計算機視覺任務。

使用場景

YOLOv5可以應用於多種場景,包括但不限於:

  1. 監控系統
    在視頻監控系統中,YOLOv5可以用於實時檢測和追踪特定目標,如行人、車輛等,提高安全性和監控效率。
  2. 自動駕駛
    在自動駕駛技術中,YOLOv5可以用於檢測道路上的各種物體,如行人、車輛、交通標誌等,為自動駕駛系統提供精確的環境感知能力。
  3. 醫療影像
    在醫療領域,YOLOv5可以用於分析醫療影像,檢測特定病變或病灶,如腫瘤檢測、肺炎檢測等,輔助醫生進行診斷。
  4. 零售業
    在零售行業中,YOLOv5可以用於智能貨架管理、顧客行為分析等,提高運營效率和顧客服務質量。
  5. 農業
    在農業應用中,YOLOv5可以用於植物病蟲害檢測、農作物生長狀況監測等,幫助農民提高農業生產效率。

主要功能

YOLOv5具備豐富的功能,支持各種物體檢測需求。以下是YOLOv5的一些主要功能:

  1. 多尺度檢測
    YOLOv5通過多個預測層進行多尺度檢測,能夠同時檢測不同大小的物體,提高了檢測的全面性和準確性。
  2. 數據增強
    YOLOv5內置了多種數據增強技術,如隨機裁剪、隨機翻轉、顏色變換等,增強了模型的泛化能力,減少了過擬合風險。
  3. 自動錨框調整
    YOLOv5支持自動錨框調整功能,根據訓練數據自動生成最佳的錨框參數,提高檢測精度和效率。
  4. 模型剪枝和量化
    YOLOv5支持模型剪枝和量化技術,能夠在保持檢測性能的同時,顯著減少模型大小和計算成本,適合在資源受限的設備上運行。
  5. 實時推理
    YOLOv5具有高效的推理性能,能夠實現實時物體檢測,適用於各種需要即時響應的應用場景。
  6. 可視化工具
    YOLOv5提供了多種可視化工具,如檢測結果的可視化、訓練過程的可視化等,幫助用戶更好地理解和調試模型。
  7. 支持多種數據集
    YOLOv5支持多種常見的物體檢測數據集,如COCO、Pascal VOC等,並且用戶可以方便地使用自己的數據集進行訓練和測試。

YOLOv5安裝步驟

下面是YOLOv5在Windows上的安裝步驟:

1. 確認安裝必要的工具

在安裝YOLOv5之前,請確保已經安裝了以下工具:

2. 安裝Python和pip

如果你還沒有安裝Python,可以從Python官方網站下載並安裝Python。安裝過程中請選中“Add Python to PATH”選項。

安裝完成後,打開命令提示符(cmd)並輸入以下命令來確認安裝:

python --version
pip --version

3. 安裝Git

Git官方網站下載並安裝Git。安裝完成後,打開命令提示符並輸入以下命令來確認安裝:

git --version

4. 克隆YOLOv5倉庫

打開命令提示符,使用以下命令克隆YOLOv5倉庫:

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

5. 創建並激活虛擬環境

為了避免與系統中的其他Python包發生衝突,建議創建一個虛擬環境。使用以下命令創建並激活虛擬環境:

python -m venv venv
venv\Scripts\activate

6. 安裝依賴包

在虛擬環境中,運行以下命令來安裝YOLOv5所需的依賴包:

pip install -r requirements.txt

7. 驗證安裝

安裝完成後,可以通過運行以下命令來驗證YOLOv5是否已成功安裝:

python detect.py --source data/images --weights yolov5s.pt --conf 0.25 --save-txt

這將使用預訓練模型 yolov5s.ptdata/images 文件夾中的圖像上運行物體檢測,並將檢測結果保存到 runs/detect 目錄中。

8. 訓練自定義模型(可選)

如果你需要使用自定義數據集來訓練YOLOv5模型,可以按照以下步驟進行:

  1. 準備數據集
    • 準備好包含標註信息的數據集,標註格式應為YOLO格式(每行包括class x_center y_center width height)。
    • 創建一個數據集配置文件(如data.yaml),定義訓練和驗證數據集的路徑,以及類別數和類別名稱。
  2. 開始訓練
    • 使用以下命令開始訓練自定義模型:
    python train.py --data data.yaml --cfg models/yolov5s.yaml --weights '' --batch-size 16 這將使用data.yaml文件中的數據集配置,並基於yolov5s.yaml模型配置文件進行訓練。
  3. 監控訓練過程
    • 在訓練過程中,可以通過runs/train目錄中的文件來監控訓練過程,包括損失值、準確率和其他指標。

如何使用YOLOv5訓練自訂義模型?

要使用YOLOv5訓練自訂義模型,首先需要準備好資料。這包括收集和標註圖像、組織資料夾結構、編寫資料配置文件。以下是詳細步驟:

1. 收集和標註圖像

首先,你需要準備要用於訓練的圖像並進行標註。YOLOv5使用YOLO格式的標註文件,每個圖像對應一個標註文件,格式如下:

class_id x_center y_center width height
  • class_id:物體的類別ID(從0開始)。
  • x_center:物體中心點的x座標,相對於圖像寬度的比例(0到1之間)。
  • y_center:物體中心點的y座標,相對於圖像高度的比例(0到1之間)。
  • width:物體的寬度,相對於圖像寬度的比例(0到1之間)。
  • height:物體的高度,相對於圖像高度的比例(0到1之間)。

可以使用標註工具如LabelImg或Roboflow來標註圖像。

使用LabelImg進行標註

LabelImg是一款流行的開源圖像標註工具,支持YOLO格式的標註文件。以下是使用LabelImg進行標註的步驟:

  1. 安裝LabelImg 你可以通過以下命令安裝LabelImg: pip install labelImg 安裝完成後,可以通過以下命令啟動LabelImg: labelImg
  2. 打開圖像資料夾 在LabelImg的界面中,點擊「Open Dir」按鈕,選擇包含要標註的圖像的資料夾。
  3. 設置標註格式 在LabelImg的界面中,點擊「YOLO」按鈕,將標註格式設置為YOLO格式。
  4. 開始標註圖像
    • 使用「Create RectBox」工具(快捷鍵W)在圖像上繪製矩形框來標註物體。
    • 輸入物體的類別名稱。對於新類別,LabelImg會自動分配一個類別ID。
    • 完成標註後,點擊「Save」按鈕(快捷鍵Ctrl+S)保存標註文件。
  5. 重複標註 對資料夾中的所有圖像重複以上步驟,確保每個圖像都有對應的標註文件。

2. 組織資料夾結構

將標註好的圖像和標註文件按照以下結構組織:

/path/to/dataset/
    ├── images/
    │   ├── train/
    │   │   ├── image1.jpg
    │   │   ├── image2.jpg
    │   │   └── ...
    │   ├── val/
    │   │   ├── image1.jpg
    │   │   ├── image2.jpg
    │   │   └── ...
    └── labels/
        ├── train/
        │   ├── image1.txt
        │   ├── image2.txt
        │   └── ...
        ├── val/
        │   ├── image1.txt
        │   ├── image2.txt
        │   └── ...
  • images/train/:包含訓練圖像。
  • images/val/:包含驗證圖像。
  • labels/train/:包含與訓練圖像對應的標註文件。
  • labels/val/:包含與驗證圖像對應的標註文件。

3. 編寫資料配置文件

在YOLOv5資料夾中創建一個資料配置文件(如data.yaml),內容如下:

train: /path/to/dataset/images/train
val: /path/to/dataset/images/val

nc: 2  # 類別數量
names: ['class1', 'class2']  # 類別名稱
  • train:訓練圖像的路徑。
  • val:驗證圖像的路徑。
  • nc:類別數量。
  • names:類別名稱列表。

4. 驗證資料準備

在YOLOv5資料夾中運行以下命令,檢查資料是否準備正確:

python train.py --img 640 --batch 16 --epochs 3 --data data.yaml --weights yolov5s.pt --cache

這將加載資料並檢查其格式是否正確。運行成功後,會開始訓練過程。

開始訓練自訂義模型

確認資料準備正確後,可以開始訓練自訂義模型:

python train.py --img 640 --batch 16 --epochs 50 --data data.yaml --weights yolov5s.pt
  • --img:輸入圖像大小,預設為640。
  • --batch:批次大小,根據GPU顯存大小調整。
  • --epochs:訓練回合數。
  • --data:資料配置文件的路徑。
  • --weights:預訓練權重文件的路徑,可以使用yolov5s.pt或自行訓練的模型。

訓練過程會生成模型權重文件,保存在runs/train/exp/weights目錄中。

以上步驟詳細介紹了如何準備資料以訓練YOLOv5自訂義模型,包括使用LabelImg進行標註。通過這些步驟,你可以組織資料、編寫配置文件並開始訓練,以獲得適合你應用場景的物體檢測模型。希望這些步驟能夠幫助你順利進行YOLOv5的自訂義模型訓練。

YOLOv5是一個功能強大且靈活的物體檢測框架,具有高效、準確、易用等特性。無論是在監控系統、自動駕駛、醫療影像還是零售業和農業中,YOLOv5都能夠提供優異的物體檢測能力。隨著深度學習技術的不斷發展,相信YOLOv5將在更多領域發揮其價值,推動計算機視覺技術的進步。