日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

AlexeyAB DarkNet YOLOv3框架解析与应用实践(二)

發(fā)布時(shí)間:2023/11/28 生活经验 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 AlexeyAB DarkNet YOLOv3框架解析与应用实践(二) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

AlexeyAB DarkNet YOLOv3框架解析與應(yīng)用實(shí)踐(二)

版本3有什么新功能?

YOLOv3使用了一些技巧來改進(jìn)訓(xùn)練和提高性能,包括:多尺度預(yù)測、更好的主干分類器等等。全部細(xì)節(jié)都在我們的論文上!

使用預(yù)先訓(xùn)練的模型進(jìn)行檢測

這篇文章將指導(dǎo)你通過使用一個(gè)預(yù)先訓(xùn)練好的模型用YOLO系統(tǒng)檢測物體。如果你還沒有安裝Darknet,你應(yīng)該先安裝。或者不去閱讀所有的東西:

git clone https://github.com/pjreddie/darknet

cd darknet

make

容易的!

在cfg/子目錄中已經(jīng)有YOLO的配置文件。你必須在這里下載預(yù)先訓(xùn)練的權(quán)重文件(237MB)。或者運(yùn)行這個(gè):

wget
https://pjreddie.com/media/files/yolov3.weights

將看到如下輸出:

layer
filters size input output

0 conv     32 

3 x 3 / 1 416 x 416 x 3
-> 416 x 416 x 32
0.299 BFLOPs

1 conv     64 

3 x 3 / 2 416 x 416 x 32
-> 208 x 208 x 64
1.595 BFLOPs

.......

105 conv 255
1 x 1 / 1 52 x 52 x 256
-> 52 x 52 x 255
0.353 BFLOPs

106 detection

truth_thresh: Using default ‘1.000000’

Loading weights from yolov3.weights…Done!

data/dog.jpg: Predicted in 0.029329 seconds.

dog: 99%

truck: 93%

bicycle: 99%

Darknet打印出它檢測到的物體,它的可信度,以及找到它們所花的時(shí)間。我們沒有用OpenCV編譯Darknet,因此它不能直接顯示檢測結(jié)果。相反,它將它們保存在predictions.png中。您可以打開它來查看檢測到的對(duì)象。因?yàn)槲覀冊贑PU上使用Darknet,所以每張圖像大約需要6-12秒。如果我們使用GPU版本,速度會(huì)快得多。 已經(jīng)包括了一些例子圖片,以防你需要靈感。嘗試

data/eagle.jpg, data/dog.jpg, data/person.jpg, or data/horses.jpg!

detect命令是命令的更通用版本的簡寫。它相當(dāng)于命令:

./darknet
detector test cfg/coco.data cfg/yolov3.cfg yolov3.weights data/dog.jpg

如果您只想在一個(gè)圖像上運(yùn)行檢測,則不需要知道這一點(diǎn),但知道是否要執(zhí)行其他操作(如在網(wǎng)絡(luò)攝像頭上運(yùn)行)(稍后將看到)會(huì)很有用。

多幀圖像

不要在命令行上提供圖像,您可以將其留空以嘗試一行中的多個(gè)圖像。相反,當(dāng)配置和權(quán)重完成加載時(shí),您將看到一個(gè)提示:

./darknet detect cfg/yolov3.cfg yolov3.weights

layer
filters size input output

0 conv     32 

3 x 3 / 1 416 x 416 x 3
-> 416 x 416 x 32
0.299 BFLOPs

1 conv     64 

3 x 3 / 2 416 x 416 x 32
-> 208 x 208 x 64
1.595 BFLOPs

.......

104 conv 256
3 x 3 / 1 52 x 52 x 128
-> 52 x 52 x 256
1.595 BFLOPs

105 conv 255
1 x 1 / 1 52 x 52 x 256
-> 52 x 52 x 255
0.353 BFLOPs

106 detection

Loading weights from yolov3.weights…Done!

Enter Image Path:

輸入像data/horses.jpg這樣的圖像路徑,讓它為該圖像預(yù)測框。

完成后,它將提示您輸入更多路徑以嘗試不同的圖像。完成后,使用Ctrl-C退出程序。
更改檢測閾值

默認(rèn)情況下,YOLO只顯示置信度為.25或更高的對(duì)象。可以通過將-thresh標(biāo)志傳遞給yolo命令來更改此值。例如,要顯示所有檢測,可以將閾值設(shè)置為0:

./darknet
detect cfg/yolov3.cfg yolov3.weights data/dog.jpg -thresh 0

產(chǎn)生:

![[全部]

所以這顯然不是非常有用,但是可以將其設(shè)置為不同的值來控制模型設(shè)置的閾值。 Tiny YOLOv3

我們有一個(gè)非常小的模型,也適用于約束環(huán)境,yolov3 tiny。要使用此模型,請(qǐng)首先下載權(quán)重:

wget
https://pjreddie.com/media/files/yolov3-tiny.weights

然后使用Tiny配置文件和權(quán)重運(yùn)行檢測:

./darknet
detect cfg/yolov3-tiny.cfg yolov3-tiny.weights data/dog.jpg

網(wǎng)絡(luò)攝像頭的實(shí)時(shí)檢測

如果看不到結(jié)果,在測試數(shù)據(jù)上運(yùn)行YOLO就不是很有趣了。與其在一堆圖片上運(yùn)行,不如在網(wǎng)絡(luò)攝像頭的輸入上運(yùn)行!

要運(yùn)行這個(gè)演示,您需要使用CUDA和OpenCV編譯Darknet。然后運(yùn)行命令:

./darknet detector demo cfg/coco.data cfg/yolov3.cfg
yolov3.weights

YOLO將顯示當(dāng)前FPS和預(yù)測類,以及在其上繪制邊界框的圖像。

你需要一個(gè)網(wǎng)絡(luò)攝像頭連接到OpenCV可以連接到的計(jì)算機(jī),否則它將無法工作。如果您連接了多個(gè)網(wǎng)絡(luò)攝像頭,并且希望選擇要使用的攝像頭,則可以通過-c標(biāo)志進(jìn)行選擇(OpenCV默認(rèn)使用網(wǎng)絡(luò)攝像頭0)。

如果OpenCV可以讀取視頻,也可以在視頻文件上運(yùn)行它:

./darknet
detector demo cfg/coco.data cfg/yolov3.cfg yolov3.weights

這就是我們制作上述YouTube視頻的方式。

在VOC上訓(xùn)練YOLO

如果你想使用不同的訓(xùn)練模式、超參數(shù)或數(shù)據(jù)集,你可以從頭開始訓(xùn)練YOLO。下面是如何讓它在Pascal VOC數(shù)據(jù)集上工作。

獲取Pascal VOC數(shù)據(jù)

要訓(xùn)練YOLO,您需要2007年至2012年的所有VOC數(shù)據(jù)。你可以在這里找到數(shù)據(jù)的鏈接。要獲取所有數(shù)據(jù),請(qǐng)創(chuàng)建一個(gè)目錄來存儲(chǔ)所有數(shù)據(jù),然后從該目錄運(yùn)行:

wget
https://pjreddie.com/media/files/VOCtrainval_11-May-2012.tar

wget
https://pjreddie.com/media/files/VOCtrainval_06-Nov-2007.tar

wget
https://pjreddie.com/media/files/VOCtest_06-Nov-2007.tar

tar xf VOCtrainval_11-May-2012.tar

tar xf VOCtrainval_06-Nov-2007.tar

tar xf VOCtest_06-Nov-2007.tar

現(xiàn)在將有一個(gè)VOCdevkit/子目錄,其中包含所有VOC訓(xùn)練數(shù)據(jù)。

為VOC生成標(biāo)簽

現(xiàn)在我們需要生成Darknet使用的標(biāo)簽文件。Darknet希望為每個(gè)圖像創(chuàng)建一個(gè).txt文件,并為圖像中的每個(gè)真實(shí)值對(duì)象創(chuàng)建一條線,如下所示:

其中x、y、寬度和高度與圖像的寬度和高度相關(guān)。要生成這些文件,我們將在Darknet的script s/目錄中運(yùn)行voc_label.py腳本。我們再下載一次吧,因?yàn)槲覀兒軕小?/p>

wget https://pjreddie.com/media/files/voc_label.py

python voc_label.py

幾分鐘后,此腳本將生成所有必需的文件。它主要在VOCdevkit/VOC2007/labels/和VOCdevkit/VOC2012/labels/中生成大量標(biāo)簽文件。在您的目錄中,您應(yīng)該看到:

ls

2007_test.txt
VOCdevkit

2007_train.txt
voc_label.py

2007_val.txt
VOCtest_06-Nov-2007.tar

2012_train.txt
VOCtrainval_06-Nov-2007.tar

2012_val.txt VOCtrainval_11-May-2012.tar

文本文件如2007_train.txt列出了當(dāng)年的圖像文件和圖像集。Darknet需要一個(gè)文本文件,其中包含所有要訓(xùn)練的圖像。在這個(gè)例子中,讓我們訓(xùn)練除了2007測試集之外的所有東西,以便我們可以測試我們的模型。運(yùn)行:

cat 2007_train.txt
2007_val.txt 2012_*.txt > train.txt

現(xiàn)在我們把2007年的trainval和2012年的trainval都列在一個(gè)大名單上。這就是我們要做的數(shù)據(jù)設(shè)置!

修改Pascal數(shù)據(jù)的Cfg

現(xiàn)在找到的darknet目錄。我們必須更改cfg/voc.data配置文件以指向您的數(shù)據(jù):

1 classes= 20

2 train = /train.txt

3 valid = 2007_test.txt

4 names =
data/voc.names

5 backup =
backup

您應(yīng)該將替換為放置voc數(shù)據(jù)的目錄。

下載預(yù)訓(xùn)練卷積權(quán)重

對(duì)于訓(xùn)練,我們使用在Imagenet上預(yù)先訓(xùn)練的卷積權(quán)重。我們使用darknet53模型的權(quán)重。你可以在這里下載卷積層的權(quán)重(76MB)。

wget https://pjreddie.com/media/files/darknet53.conv.74

訓(xùn)練模型

現(xiàn)在我們可以訓(xùn)練了!運(yùn)行命令:

./darknet detector
train cfg/voc.data cfg/yolov3-voc.cfg darknet53.conv.74

在COCO上訓(xùn)練YOLO

如果你想使用不同的訓(xùn)練模式、超參數(shù)或數(shù)據(jù)集,你可以從頭開始訓(xùn)練YOLO。下面是如何讓它在COCO數(shù)據(jù)集上工作。

獲取COCO數(shù)據(jù)

為了訓(xùn)練YOLO,你需要所有的COCO數(shù)據(jù)和標(biāo)簽。腳本scripts/get_coco_dataset.sh將為您執(zhí)行此操作。找出要將COCO數(shù)據(jù)放在哪里并下載它,例如:

cp scripts/get_coco_dataset.sh data

cd data

bash get_coco_dataset.sh

現(xiàn)在您應(yīng)該擁有為Darknet生成的所有數(shù)據(jù)和標(biāo)簽。

修改COCO的cfg

現(xiàn)在找到darknet目錄。我們必須更改cfg/coco.data配置文件以指向您的數(shù)據(jù):

1 classes= 80

2 train = /trainvalno5k.txt

3 valid = /5k.txt

4 names =
data/coco.names

5 backup =
backup

您應(yīng)該用放置coco數(shù)據(jù)的目錄替換

您還應(yīng)該修改模型cfg以進(jìn)行訓(xùn)練,而不是測試。cfg/yolo.cfg應(yīng)該如下所示:

[net]

Testing

batch=1

subdivisions=1

Training

batch=64

subdivisions=8

訓(xùn)練模型

現(xiàn)在我們可以訓(xùn)練了!運(yùn)行命令:

./darknet
detector train cfg/coco.data cfg/yolov3.cfg darknet53.conv.74

如果要使用多個(gè)GPU運(yùn)行:

./darknet detector train cfg/coco.data cfg/yolov3.cfg
darknet53.conv.74 -gpus 0,1,2,3

如果要從檢查點(diǎn)停止并重新開始訓(xùn)練:

./darknet detector train cfg/coco.data cfg/yolov3.cfg
backup/yolov3.backup -gpus 0,1,2,3

開放圖像數(shù)據(jù)集上的YOLOv3

wget
https://pjreddie.com/media/files/yolov3-openimages.weights

./darknet detector test cfg/openimages.data
cfg/yolov3-openimages.cfg yolov3-openimages.weights

老yolo地址怎么了?

如果您使用的是YOLO版本2,您仍然可以在此處找到該網(wǎng)站:

https://pjreddie.com/darknet/yolov2/

引用

如果你在工作中使用YOLOv3,請(qǐng)引用我們的論文!

@article{yolov3,

title={YOLOv3:
An Incremental Improvement},

author={Redmon, Joseph and Farhadi, Ali},

journal =
{arXiv},

year={2018}

}

總結(jié)

以上是生活随笔為你收集整理的AlexeyAB DarkNet YOLOv3框架解析与应用实践(二)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。