前言:
隨著自動(dòng)駕駛技術(shù)的不斷發(fā)展,汽車目標(biāo)檢測(cè)成為了研究的熱點(diǎn)。本文將介紹公開(kāi)+自定義的yolov5汽車目標(biāo)檢測(cè)數(shù)據(jù)集以及用linux操作系統(tǒng)訓(xùn)練yolov5。
先展示一下推理結(jié)果:
?GPU在13.2ms每幀,基本滿足項(xiàng)目需要。
一、數(shù)據(jù)集簡(jiǎn)介
前段時(shí)間跟朋友一起整理了一個(gè)汽車目標(biāo)的數(shù)據(jù)集,主要包括UA-DETRAC車輛檢測(cè)數(shù)據(jù)集和自定義數(shù)據(jù)集。
1.UA-DETRAC車輛檢測(cè)數(shù)據(jù)集
UA-DETRAC車輛檢測(cè)數(shù)據(jù)集是一個(gè)具有挑戰(zhàn)性的真實(shí)世界多目標(biāo)檢測(cè)和多目標(biāo)跟蹤基準(zhǔn)。該數(shù)據(jù)集是由北京智能車聯(lián)科技有限公司(簡(jiǎn)稱“智車科技”)開(kāi)發(fā)并維護(hù)的,旨在為自動(dòng)駕駛和智能交通領(lǐng)域的研究人員提供一個(gè)真實(shí)、豐富且具有挑戰(zhàn)性的測(cè)試平臺(tái)。
該數(shù)據(jù)集包括在中國(guó)北京和天津的24個(gè)不同地點(diǎn)使用Cannon EOS 550D相機(jī)拍攝的10小時(shí)視頻。這些視頻主要拍攝于道路過(guò)街天橋(京津冀場(chǎng)景),覆蓋了各種復(fù)雜的道路條件和交通場(chǎng)景。為了確保數(shù)據(jù)集的真實(shí)性和多樣性,研究人員需要手動(dòng)標(biāo)注8250個(gè)車輛和121萬(wàn)目標(biāo)對(duì)象外框。這一過(guò)程需要對(duì)每個(gè)目標(biāo)進(jìn)行詳細(xì)的分類和邊界框標(biāo)注,以確保模型能夠在各種實(shí)際場(chǎng)景中表現(xiàn)出良好的性能。
UA-DETRAC數(shù)據(jù)集包含了大量的車輛和行人目標(biāo),涵蓋了多種類型和大小的目標(biāo)。這使得研究人員能夠在訓(xùn)練和評(píng)估自動(dòng)駕駛算法時(shí),更好地理解和處理現(xiàn)實(shí)世界中的復(fù)雜交通場(chǎng)景。此外,該數(shù)據(jù)集還提供了一些輔助數(shù)據(jù),如語(yǔ)義分割圖、車道線標(biāo)注等,以幫助研究人員更全面地理解場(chǎng)景信息,從而提高模型的性能。
官方網(wǎng)站:https://detrac-db.rit.albany.edu/
?2.自定義數(shù)據(jù)集
采集道路視頻,并對(duì)視頻進(jìn)行抽幀,得到:
再使用labelimg標(biāo)注工具對(duì)目標(biāo)進(jìn)行標(biāo)注,得到標(biāo)簽的txt格式文件。
二.模型訓(xùn)練
由于作者使用的是linux服務(wù)器字符操作界面對(duì)yolov5進(jìn)行訓(xùn)練,這方面的資料比較少,作者將詳細(xì)介紹。
1.準(zhǔn)備工作
(1).yolov5代碼庫(kù)
yolov5的代碼庫(kù):https://github.com/ultralytics/yolov5/tree/v5.0
首先打開(kāi)上述官網(wǎng),點(diǎn)擊右上角"Code"(或克隆),點(diǎn)擊"ZIP"下載壓縮包。
?
(2).安裝anaconda
可觀看此視頻(來(lái)自b站):?https://b23.tv/YPCL0Ks
輸入`conda`后,返回結(jié)果如下,說(shuō)明安裝成功
(3).配置各種環(huán)境
首先創(chuàng)建運(yùn)行yolov5的虛擬環(huán)境,conda命令為:
conda create -n?<你自己定義一個(gè)名字>
進(jìn)入環(huán)境:
conda activate <你自己定義的環(huán)境的名字>
其次,配置yolov5的依賴環(huán)境,使用pip安裝即可,安裝命令如下:
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple #由于默認(rèn)下載源過(guò)慢,因此我們使用清華源(也可以用其他源)
只需要在創(chuàng)建的虛擬環(huán)境中執(zhí)行上述命令,我們的依賴環(huán)境便安裝完成。下面進(jìn)行開(kāi)發(fā)環(huán)境的安裝。由于GPU訓(xùn)練過(guò)慢,因此我們安裝CUDA和cuDNN,調(diào)用GPU進(jìn)行訓(xùn)練。另外,我們還需要安裝Pytorch,因?yàn)閥olov5的實(shí)現(xiàn)依賴于Pytorch提供的深度學(xué)習(xí)計(jì)算能力與優(yōu)化工具,同時(shí)yolov5也提供了Pytorch接口方便用戶使用。這里我們選擇用conda安裝,一條命令即可。操作如下:
首先在操作界面輸入:
nvidia-smi
可以看到驅(qū)動(dòng)版本,最高支持的CUDA版本是12.2版本,得到顯卡的最高支持CUDA版本,我們就可以開(kāi)始依據(jù)這個(gè)信息安裝環(huán)境了。
然后,進(jìn)入Pytorch官網(wǎng):https://pytorch.org/
找到你要安裝的版本、所用系統(tǒng)以及要使用操作工具(操作工具我們選擇conda)
我的下載命令是:
conda install pytorch torchvision torchaudio pytorch-cuda=11.7 -c pytorch -c nvidia
靜等安裝完成后,我們要驗(yàn)證能否使用:
在操作界面輸入"Python"啟動(dòng)Python解釋器并進(jìn)入交互式模式,緊接著輸入"import torch"回車,再輸入"torch.cuda.is_available()"回車,返回"True",則說(shuō)明安裝成功并可以使用。
如果安裝錯(cuò)了可以用這個(gè)命令進(jìn)行卸載:
pip uninstall torch torchvision? torchaudio??
(4).準(zhǔn)備數(shù)據(jù)集
作者的數(shù)據(jù)集(含圖片和txt標(biāo)簽)鏈接:
鏈接:https://pan.baidu.com/s/1eCnfjV993Kn2ys-QRNoGtw?
提取碼:8cm1
一共近700張圖片,約8000個(gè)目標(biāo):UA-DETRAC車輛檢測(cè)數(shù)據(jù)集+自定義數(shù)據(jù)集。
當(dāng)然,如果您有自己的數(shù)據(jù)集也可以用,但是要注意源代碼只支持txt格式的標(biāo)簽文件,因此需要將VOC數(shù)據(jù)或其他格式,因此需要轉(zhuǎn)一下格式,以便正常訓(xùn)練。下面是txt標(biāo)簽文件的格式。
(5).準(zhǔn)備配置數(shù)據(jù)文件(.yaml)
以下是作者的配置文件:
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
# 數(shù)據(jù)路徑
path: "/data3/wth/yolov5-master/data/" # dataset root dir
# 注意數(shù)據(jù)路徑分隔符使用【/】,不是【\】
# 項(xiàng)目不要出現(xiàn)含有中文字符的目錄文件或路徑
train:"images/train"
val:?"images/val"
#也可以將圖片路徑匯總到一個(gè)txt文件中,將train或val的路徑修改為"images/train.txt"即可(例子)
test: # test images (optional)
# 設(shè)置類別個(gè)數(shù),和要訓(xùn)練的類別名稱,ID號(hào)從0開(kāi)始遞增
nc: 1# number of classes
names: { 'car': 0?}
#1.作者僅設(shè)置一個(gè)標(biāo)簽?zāi)繕?biāo),若多個(gè)目標(biāo)可仿照如下設(shè)置:
#nc: 4 # number of classes
#names: { 'car': 0, 'bus': 1, 'van': 2,'others': 3 }
# 2.若合并幾個(gè)類別進(jìn)行訓(xùn)練,比如將'[car','bus','van']看作一類,others看作另一類,則
#nc: 2 # number of classes
#names: { 'car': 0, 'bus': 0, 'van': 0,'others': 1 }
# 3.若合并所有類別為一個(gè)大類,進(jìn)行訓(xùn)練: unique表示合并所有類為單獨(dú)一個(gè)類別
#nc: 1 # number of classes
#names: { "unique": 0 }
將yaml放到y(tǒng)olov5的源代碼庫(kù)中。
2.開(kāi)始訓(xùn)練
進(jìn)入環(huán)境:
conda activate yolo#我的環(huán)境的名字
進(jìn)入yolov5-master的目錄:
cd yolov5-master
訓(xùn)練命令:
python train.py?--img 640 --batch 160--epochs 300 --data data/car.yaml --cfg models/yolov5l.yaml --weights '' --device 0
下面是上述訓(xùn)練命令各個(gè)參數(shù)的含義:
- `--img`: 輸入圖像的大小,這里設(shè)置為640。
- `--batch`: 每個(gè)批次的樣本數(shù)量,這里設(shè)置為16。
- `--epochs`: 訓(xùn)練的總輪數(shù)(iterations),這里設(shè)置為300。
- `--data`: 數(shù)據(jù)集配置文件的路徑,這里使用上述提及的數(shù)據(jù)集,對(duì)應(yīng)的配置文件為`car.yaml`。
- `--cfg`: 模型配置文件的路徑,這里使用yolov5l模型的配置文件,對(duì)應(yīng)的文件路徑為`models/yolov5l.yaml`。
- `--weights`: 預(yù)訓(xùn)練權(quán)重文件的路徑,這里不使用預(yù)權(quán)重文件。-`--device`:使用的顯卡的編號(hào),這里使用的是編號(hào)為0的顯卡。
這些參數(shù)都是用來(lái)配置訓(xùn)練過(guò)程的,可以根據(jù)實(shí)際需求進(jìn)行調(diào)整。
命令執(zhí)行后可以看到以下畫面
?若中途不小心退出,可以在上述訓(xùn)練命令的基礎(chǔ)上在末尾加上`--resume`參數(shù)并將`--weights ''`更替為`--weights runs/train/exp/weights/last.pt`。
?訓(xùn)練結(jié)束后我們可以看到權(quán)重文件保存的位置在本文件夾的runs/train/exp14/weights路徑下。
在此文件夾中還包括模型訓(xùn)練后的各種信息:
?1.F1-curve顯示了模型在不同閾值下的精確率和召回率之間的關(guān)系。?在F1-curve中,橫軸表示召回率,縱軸表示精確率。當(dāng)精確率和召回率都很高時(shí),F(xiàn)1-score也會(huì)很高。
2.P-curve顯示了模型在不同閾值下的精確率和召回率之間的關(guān)系。?在P-curve中,橫軸表示召回率,縱軸表示精確率。當(dāng)精確率和召回率都很高時(shí),P-score也會(huì)很高。
3.PR-curve顯示了模型在不同閾值下的精確率和召回率之間的關(guān)系。?在PR-curve中,橫軸表示召回率,縱軸表示精確率。當(dāng)精確率和召回率都很高時(shí),P-score也會(huì)很高。
4.R-curve顯示了模型在不同閾值下的召回率和精確率之間的關(guān)系。?TPR曲線顯示了模型在不同閾值下的真正例率和假正例率之間的關(guān)系。
3.進(jìn)行推理
?我們用最好的best.pt權(quán)重文件進(jìn)行推理,推理命令如下:
python detect.py --source data/detect.mp4 --weights runs/train/exp7/weights/best.pt
我們可以看到結(jié)果:
作者訓(xùn)練得到的模型以及各種模型信息壓縮包:
鏈接:https://pan.baidu.com/s/1wjnOCCxX0-SqwvAZQYqrxw?pwd=2654?
提取碼:2654
好了,基本上就完成了,如果想繼續(xù)提高識(shí)別的精確度還需要使用到y(tǒng)olov5的實(shí)現(xiàn)原理以及相關(guān)參數(shù)的設(shè)定技巧。
?
最后覺(jué)得有幫助的,請(qǐng)給我個(gè)一鍵三連,栓Q!
參考博文:文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-776052.html
作者:AI吃大瓜.深度學(xué)習(xí)目標(biāo)檢測(cè)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-776052.html
到了這里,關(guān)于yolov5汽車檢測(cè)linux字符界面操作全流程,適合上手(含數(shù)據(jù)集近700張圖片8000多個(gè)目標(biāo)+訓(xùn)練好的模型)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!