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