一份微調 YOLOv11 的小指南
在一個自動化和實時數據處理日益成為常態的時代,準確檢測和識別車輛牌照的能力是非常寶貴的。從交通管理、收費到執法和停車解決方案,車牌識別系統在各種應用中都扮演著關鍵角色。
在這篇博文中,我們將探討如何微調強大的YOLOv11目標檢測模型,以使用Roboflow準備的自定義數據集來檢測汽車車牌。我們還將集成Gradio以創建一個交互式Web界面,用于實時推理。這種組合為檢測車牌提供了一個健壯且用戶友好的解決方案,可以進一步處理以提取交通違規或車輛跟蹤等場景中的有價值信息。
一、問題陳述
主要目標是開發一個能夠準確檢測圖像中的汽車車牌的系統。這種檢測是自動化流程的第一個關鍵步驟,可以提取車牌信息,例如注冊號,這對于以下方面至關重要:
- 交通違規執法:識別違反交通規則的車輛。
- 自動收費:在沒有人為干預的情況下識別車輛進行收費。
- 停車管理:監控車輛在停車設施的進出。
- 執法:追蹤被盜車輛或涉及犯罪活動的車輛。
通過在專業數據集上微調YOLOv11,我們的目標是提高其在車牌檢測方面的性能,確保高準確度和實時處理能力。
二、背景
1.什么是YOLOv11?
YOLO(You Only Look Once)是一系列實時目標檢測模型,以其速度和準確性而聞名。YOLOv11是最新版本,提供了檢測能力和計算效率的改進。它一次處理圖像,非常適合需要實時目標檢測的應用。
2.為什么要微調YOLOv11?
盡管YOLOv11在覆蓋各種物體的龐大數據集上進行了預訓練,但在特定數據集上對其進行微調——如汽車車牌——允許模型:
- 提高準確性:根據車牌的特定特征定制檢測能力。
- 減少誤報/漏報:通過關注車牌的細微差別,使模型變得更可靠。
- 適應特定環境:考慮到現實世界場景中常見的不同光照條件、角度和遮擋。
三、使用Roboflow準備數據
1.為什么使用Roboflow?
Roboflow是一個強大的工具,它簡化了管理和準備計算機視覺任務數據集的過程。它提供:
- 簡單的注釋:用戶友好的界面用于注釋圖像。
- 數據增強:自動增強數據以提高模型的魯棒性。
- 格式轉換:導出與不同模型兼容的各種格式的數據集。
2.數據準備步驟
- 收集圖像:從各種來源收集包含汽車和車牌的多樣化圖像集。
- 上傳到Roboflow:創建一個新項目并上傳你的圖像。
- 注釋圖像:使用Roboflow的注釋工具標記每張圖像中的車牌。
- 增強數據:應用旋轉、縮放和亮度調整等轉換以增強數據集。
- 導出數據集:選擇YOLOv11格式并導出數據集,包括圖像和相應的注釋文件。
四、微調YOLOv11
1.設置環境
確保已安裝以下內容:
- Python 3.10
- PyTorch
- Ultralytics YOLOv11倉庫
2.微調步驟
克隆YOLOv11倉庫:
git clone https://github.com/sh-aidev/yolo-finetuning.git
cd yolo-finetuning
安裝要求:
python3 -m pip install -r requirements.txt
準備數據集:
將從Roboflow導出的數據集放入YOLOv11倉庫的數據目錄。使用訓練和驗證數據的路徑更新data.yaml文件。
3.配置模型
我修改了config.toml文件以指定:
- 模型參數:輸入圖像大小
- 訓練超參數:學習率、批量大小、訓練周期數量。
- 路徑:數據集目錄和保存模型檢查點的目錄。
下載數據集:
# Download the Roboflow dataset
python scripts/download_data_roboflow.py
在.env文件中創建并設置環境變量:
# ROBOFLOW_API_KEY=<YOUR_ROBOFLOW_API_KEY>
# MODE=train/infer (for training or inference mode)
# ENVIRONMENT=dev/prod (for logging)
開始訓練:
# Train the YOLOv11 model
python main.py
- img:圖像大小。
- batch:批量大小。
- epochs:訓練周期數量。
- data:數據配置文件的路徑。
4.監控訓練
訓練日志和結果保存在runs/train目錄中。使用TensorBoard或其他可視化工具監控性能指標,如損失、精確度和召回率。
5.挑戰和解決方案
- 過擬合:實施數據增強和dropout層等技術以防止過擬合。
- 數據不平衡:確保數據集平衡地代表各種條件,如不同的角度和光照。
- 小目標檢測:車牌相對于圖像大小可能很小。調整錨定框并考慮增加圖像分辨率。
五、使用Gradio實現實時推理
1.Gradio是什么?
Gradio是一個開源的Python庫,允許你快速為你的機器學習模型創建可定制的UI組件。它簡化了部署過程,使你的模型可以通過Web界面訪問。
2.設置Gradio界面
安裝Gradio:
python3 -m pip install gradio
運行推理:
# Run the Gradio application
# To run gradio app, set MODE=infer in .env file and change use_pretrained to True in configs/config.toml
python main.py
訪問界面:打開瀏覽器,導航到http://localhost:7860以使用Web界面。你可以上傳圖像,模型將顯示檢測到的車牌。
3.使用Gradio的好處
- 易用性:無需復雜的Web開發;Gradio處理UI。
- 實時反饋:模型預測的即時可視化。
- 可分享鏈接:輕松與他人分享你的界面,用于演示或測試。
結論
通過使用Roboflow準備的自定義數據集微調YOLOv11,并將其與Gradio一起部署,我們已經開發了一個有效的系統來檢測汽車車牌。這個解決方案能夠實時處理,適合需要即時響應的應用。
未來拓展
- 文本識別:集成OCR(光學字符識別)系統以從檢測到的車牌中提取車牌號碼。
- 視頻處理:擴展模型以處理視頻流,以進行持續監控。
- 邊緣部署:優化模型以在計算資源有限的邊緣設備上部署。