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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > 目标检测 >内容正文

目标检测

YOLO_ Real-Time Object Detection 实时目标检测

發布時間:2024/5/17 目标检测 109 豆豆
生活随笔 收集整理的這篇文章主要介紹了 YOLO_ Real-Time Object Detection 实时目标检测 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

YOLO: Real-Time Object Detection 實時目標檢測

You only look once(YOLO)是一種先進的實時目標檢測系統。在Pascal Titan X上,它以每秒30幀的速度處理圖像,在COCO test-dev上有57.9%的mAP。

與其他探測器的比較

YOLOv3是非??焖俸蜏蚀_的。在0.5 IOU下測得的mAP中,YOLOv3與Focal Loss相當,但速度快了4倍左右。此外,您可以輕松地在速度和精度之間進行折衷,只需更改模型的大小,而無需重新培訓!

![](https://img-blog.csdnimg.cn/img_convert/9124b5d4e166265fdecff2f01f463708.png#align=left&display=inline&height=1087&margin=[object Object]&originHeight=1087&originWidth=1745&size=0&status=done&style=none&width=1745)

COCO數據集上的性能

ModelTrainTestmAPFLOPSFPSCfgWeights
SSD300COCO trainvaltest-dev41.2-46link
SSD500COCO trainvaltest-dev46.5-19link
YOLOv2 608x608COCO trainvaltest-dev48.162.94 Bn40cfgweights
Tiny YOLOCOCO trainvaltest-dev23.75.41 Bn244cfgweights
SSD321COCO trainvaltest-dev45.4-16link
DSSD321COCO trainvaltest-dev46.1-12link
R-FCNCOCO trainvaltest-dev51.9-12link
SSD513COCO trainvaltest-dev50.4-8link
DSSD513COCO trainvaltest-dev53.3-6link
FPN FRCNCOCO trainvaltest-dev59.1-6link
Retinanet-50-500COCO trainvaltest-dev50.9-14link
Retinanet-101-500COCO trainvaltest-dev53.1-11link
Retinanet-101-800COCO trainvaltest-dev57.5-5link
YOLOv3-320COCO trainvaltest-dev51.538.97 Bn45cfgweights
YOLOv3-416COCO trainvaltest-dev55.365.86 Bn35cfgweights
YOLOv3-608COCO trainvaltest-dev57.9140.69 Bn20cfgweights
YOLOv3-tinyCOCO trainvaltest-dev33.15.56 Bn220cfgweights
YOLOv3-sppCOCO trainvaltest-dev60.6141.45 Bn20cfgweights

工作原理

先前的檢測系統重新利用分類器或定位器來執行檢測。它們將模型應用于多個位置和比例的圖像。高得分區域的圖像被認為是檢測。

我們使用完全不同的方法。我們將一個神經網絡應用于整個圖像。該網絡將圖像分為多個區域,并預測每個區域的邊界框和概率。這些邊界框由預測概率加權。

與基于分類器的系統相比,我們的模型有幾個優點。它在測試時查看整個圖像,因此它的預測是由圖像中的全局上下文通知的。它還可以用一個網絡評估來進行預測,不像R-CNN那樣的系統,一張圖像需要數千個網絡評估。這使得它非常快,R-CNN快1000倍以上,比Fast R-CNN快100倍以上。。有關完整系統的詳細信息,請參閱我們的paper。

版本3有什么新功能?

YOLOv3使用了一些技巧來改進訓練和提高性能,包括:多尺度預測、更好的主干分類器等等。全部細節在我們的paper上!

使用預先訓練的模型進行檢測

這篇文章將指導你通過使用一個預先訓練好的模型用YOLO系統檢測物體。如果您還沒有安裝Darknet,應該先安裝。或者不去讀剛才運行的所有內容:

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

Easy!

cfg/子目錄中已經有YOLO的配置文件。你必須在這里下載預先訓練的權重文件(237 MB)。或者運行以下命令:

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

然后啟動探測器!

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

您將看到如下輸出:

layer filters size input output0 conv 32 3 x 3 / 1 416 x 416 x 3 -> 416 x 416 x 32 0.299 BFLOPs1 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 BFLOPs106 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 打印出它檢測到的物體,它的置信度,以及找到它們所花的時間。我們沒有用OpenCV編譯Darknet,所以它不能直接顯示檢測結果。相反,它將它們保存在predictions.png. 您可以打開它來查看檢測到的對象。因為我們在CPU上使用Darknet,所以每個圖像大約需要6-12秒。如果我們使用GPU版本,速度會快得多。

我已經提供了一些例子圖片,以防你需要靈感。試用data/eagle.jpg, data/dog.jpg, data/person.jpg, 或 data/horses.jpg!

detect命令是更通用的命令版本的簡寫。它相當于命令:

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

如果您只想在一個圖像上運行檢測,則不需要知道這一點,但如果您想在網絡攝像頭上運行(稍后將看到)等其他操作,則知道這一點非常有用。

多個圖像

不必在命令行中提供圖像,您可以將其保留為空以嘗試一行中的多個圖像。相反,當配置和權重加載完成時,您將看到一個提示:

./darknet detect cfg/yolov3.cfg yolov3.weights layer filters size input output0 conv 32 3 x 3 / 1 416 x 416 x 3 -> 416 x 416 x 32 0.299 BFLOPs1 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 BFLOPs105 conv 255 1 x 1 / 1 52 x 52 x 256 -> 52 x 52 x 255 0.353 BFLOPs106 detection Loading weights from yolov3.weights...Done! Enter Image Path:

輸入圖像路徑,如data/horses.jpg讓它為那個圖像預測盒子。

一旦完成,它會提示您更多的路徑來嘗試不同的圖像。完成后,使用Ctrl-C退出程序。

更改檢測閾值

默認情況下,YOLO只顯示置信度為.25或更高的對象。您可以通過將-thresh標志傳遞給yolo命令來改變這一點。例如,要顯示所有檢測,可以將閾值設置為0:

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

所以這顯然不是非常有用,但是你可以將它設置為不同的值來控制模型的閾值。

Tiny YOLOv3

我們有一個非常小的模型,也適用于受限環境,yolov3tiny。要使用此模型,請首先下載權重:

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

然后用微小的配置文件和權重運行探測器:

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

網絡攝像頭上的實時檢測

如果看不到結果,那么在測試數據上運行YOLO就不是很有趣了。與其在一堆圖像上運行它,不如在網絡攝像頭的輸入上運行它!

要運行這個演示,你需要用CUDA和OpenCV編譯Darknet。然后運行命令:

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

YOLO將顯示當前FPS和預測類,以及在上面繪制邊界框的圖像。

你需要一個網絡攝像頭連接到OpenCV可以連接到的計算機上,否則它將無法工作。如果您連接了多個網絡攝像頭,并且想要選擇使用哪一個,那么可以傳遞-c標志來選擇(OpenCV默認使用網絡攝像頭0)。

如果OpenCV可以讀取視頻,也可以在視頻文件上運行:

./darknet detector demo cfg/coco.data cfg/yolov3.cfg yolov3.weights <video file>

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

對YOLO進行VOC培訓

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

獲取Pascal VOC數據

為了訓練YOLO,你需要2007年到2012年的所有VOC數據。你可以在這里找到這些數據的鏈接。要獲取所有數據,請創建一個目錄來存儲所有數據,然后從該目錄運行:

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

現在將有一個VOCdevkit/子目錄,其中包含所有VOC訓練數據。

生成VOC標簽

現在我們需要生成Darknet使用的標簽文件。Darknet希望每個圖像都有一個.txt文件,圖像中的每個地面真相對象都有一行,如下所示:

<object-class> <x> <y> <width> <height>

其中x、y、width和height相對于圖像的寬度和高度。為了生成這些文件,我們將運行voc_label.py在Darknet的scripts/目錄中編寫腳本。我們再下載一次吧,因為我們很懶。

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

幾分鐘后,這個腳本將生成所有必需的文件。它通常在VOCdevkit/VOC2007/labels/和VOCdevkit/VOC2012/labels/中生成大量標簽文件。在您的目錄中,您應該看到:

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這樣的文本文件_列車.txt列出當年的圖像文件和圖像集。Darknet需要一個文本文件,其中包含所有要訓練的圖像。在這個例子中,讓我們訓練除了2007測試集之外的所有東西,以便我們可以測試我們的模型。運行:

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

現在我們把2007年的trainval和2012年的trainval都列在一個大名單里。這就是我們要做的數據設置!

修改Pascal數據的Cfg

現在去你的Darknet文件夾。我們得換cfg/voc.data指向數據的配置文件:

1 classes= 202 train = <path-to-voc>/train.txt3 valid = <path-to-voc>2007_test.txt4 names = data/voc.names5 backup = backup

應該將替換為存放voc數據的目錄。

下載預訓練卷積權重

對于訓練,我們使用在Imagenet上預先訓練的卷積權重。我們使用來自 darknet53 模型的權重。你可以在這里下載卷積層的權重(76MB)。

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

訓練模型

現在我們可以訓練了!運行命令:

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

在COCO上訓練YOLO

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

獲取COCO數據

為了訓練YOLO,你需要所有的COCO數據和標簽。腳本scripts/get_coco_dataset.sh我會幫你的。找出要將COCO數據放在何處并下載,例如:

cp scripts/get_coco_dataset.sh data cd data bash get_coco_dataset.sh

現在您應該擁有為Darknet生成的所有數據和標簽。

修改COCO的cfg

現在去你的Darknet文件夾。我們得換cfg/coco.data指向數據的配置文件:

1 classes= 802 train = <path-to-coco>/trainvalno5k.txt3 valid = <path-to-coco>/5k.txt4 names = data/coco.names5 backup = backup

您應該將替換為放置coco數據的目錄。

您還應該修改您的cfg模型以進行培訓而不是測試,cfg/yolo.cfg應該是這樣的:

[net] # Testing # batch=1 # subdivisions=1 # Training batch=64 subdivisions=8 ....

訓練模型

現在我們可以訓練了!運行命令:

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

如果要使用多個GPU,請運行:

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

如果要從檢查點停止并重新啟動培訓:

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

開源圖像數據集上的YOLOv3

wget https://pjreddie.com/media/files/yolov3-openimages.weights./darknet detector test cfg/openimages.data cfg/yolov3-openimages.cfg yolov3-openimages.weights

Old YOLO Site怎么了?

如果您使用的是YOLO版本2,您仍然可以在此處找到該網站:https://pjreddie.com/darknet/yolov2/

引用

如果你在工作中使用YOLOv3,請引用我們的論文!

@article{yolov3,title={YOLOv3: An Incremental Improvement},author={Redmon, Joseph and Farhadi, Ali},journal = {arXiv},year={2018} }

總結

以上是生活随笔為你收集整理的YOLO_ Real-Time Object Detection 实时目标检测的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。