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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

适用于Windows和Linux的Yolo-v3和Yolo-v2(下)

發布時間:2023/11/28 生活经验 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 适用于Windows和Linux的Yolo-v3和Yolo-v2(下) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

適用于Windows和Linux的Yolo-v3和Yolo-v2(下)

如何訓練(檢測自定義對象):

(培養老YOLO V2 yolov2-voc.cfg,yolov2-tiny-voc.cfg,yolo-voc.cfg,yolo-voc.2.0.cfg,… 通過鏈接點擊)

訓練Yolo v3:

  1. 創建yolo-obj.cfg內容與中相同的文件yolov3.cfg(或復制yolov3.cfg到yolo-obj.cfg)和:

將行批次更改為 batch=64
將線路細分更改為 subdivisions=16
將max_batches線更改為(classes*2000但不小于4000),max_batches=6000如果訓練3節課,則為fe
將線路步長更改為max_batches,fe的80%和90% steps=4800,5400
設置網絡大小width=416 height=416或任何32的值的倍數:https : //github.com/AlexeyAB/darknet/blob/0039fd26786ab5f71d5af725fc18b3f521e7acfd/cfg/yolov3.cfg#L8-L9
將行更改classes=80為3 [yolo]層中每層的對象數:

https://github.com/AlexeyAB/darknet/blob/0039fd26786ab5f71d5af725fc18b3f521e7acfd/cfg/yolov3.cfg#L610
https://github.com/AlexeyAB/darknet/blob/0039fd26786ab5f71d5af725fc18b3f521e7acfd/cfg/yolov3.cfg#L696
https://github.com/AlexeyAB/darknet/blob/0039fd26786ab5f71d5af725fc18b3f521e7acfd/cfg/yolov3.cfg#L783

變化[ filters=255在3]到過濾器=(類+ 5)×3 [convolutional]的每個前[yolo]層

https://github.com/AlexeyAB/darknet/blob/0039fd26786ab5f71d5af725fc18b3f521e7acfd/cfg/yolov3.cfg#L603
https://github.com/AlexeyAB/darknet/blob/0039fd26786ab5f71d5af725fc18b3f521e7acfd/cfg/yolov3.cfg#L689
https://github.com/AlexeyAB/darknet/blob/0039fd26786ab5f71d5af725fc18b3f521e7acfd/cfg/yolov3.cfg#L776

當使用[Gaussian_yolo] 層,改變[ filters=57]過濾器=(類+ 9)X3在3 [convolutional]每個前[Gaussian_yolo]層

https://github.com/AlexeyAB/darknet/blob/6e5bdf1282ad6b06ed0e962c3f5be67cf63d96dc/cfg/Gaussian_yolov3_BDD.cfg#L604
https://github.com/AlexeyAB/darknet/blob/6e5bdf1282ad6b06ed0e962c3f5be67cf63d96dc/cfg/Gaussian_yolov3_BDD.cfg#L696
https://github.com/AlexeyAB/darknet/blob/6e5bdf1282ad6b06ed0e962c3f5be67cf63d96dc/cfg/Gaussian_yolov3_BDD.cfg#L789

因此,如果classes=1應該filters=18。如果classes=2再寫filters=21。

(不要寫在cfg文件中:filters =(classs + 5)x3)

(通常filters取決于classes,coords和的數量mask,即filters = (classes +
coords + 1)*,其中maskanchor的索引。如果mask不存在,則filters = (classes +coords + 1)*num)

因此,例如,對于2個對象,文件yolo-obj.cfg應該yolov3.cfg在3個 [yolo]層中的每一行中與以下行不同:

[convolutional]

filters=21

[region]

classes=2

  1. obj.names在目錄中創建文件build\darknet\x64\data\,并帶有對象名稱-每個都在新行中

  2. obj.data在目錄中創建文件build\darknet\x64\data\,其中包含(其中class =對象數):

classes= 2

train = data/train.txt

valid = data/test.txt

names = data/obj.names

backup = backup/

  1. 將對象的圖像文件(.jpg)放在目錄中 build\darknet\x64\data\obj\

  2. 應該在數據集中的圖像上標記每個對象。使用此可視化GUI軟件標記對象的邊界框并為Yolo v2和v3生成注釋文件:https : //github.com/AlexeyAB/Yolo_mark

將.txt為.jpg同一目錄中具有相同名稱但具有.txt-extension的每個-image-file- 創建一個-file ,并將其放置到文件中:該圖像上的對象編號和對象坐標,用于新行中的每個對象:

<x_center>
<y_center>

哪里:

-從0到的整數對象編號(classes-1)
<x_center>
<y_center> -浮動值相對于圖片的寬度和高度,可以等于(0.0 to 1.0]
例如: = <absolute_x> / <image_width>或 =
<absolute_height> / <image_height>
注意:<x_center> <y_center>-矩形的中心(不是左上角)

例如,將為img1.jpg創建img1.txt包含:

1 0.716797 0.395833 0.216406 0.147222

0 0.687109 0.379167 0.255469 0.158333

1 0.420312 0.395833 0.140625 0.166667

  1. train.txt在directory中創建文件build\darknet\x64\data\,其中包含圖像的文件名,每個文件名都換行,并具有相對于的路徑darknet.exe,例如包含:

data/obj/img1.jpg

data/obj/img2.jpg

data/obj/img3.jpg

  1. 下載卷積層的預訓練權重并放入目錄 build\darknet\x64

o for csresnext50-panet-spp.cfg(133 MB):csresnext50-panet-spp.conv.112

o 對于yolov3.cfg, yolov3-spp.cfg(154 MB):darknet53.conv.74

o for yolov3-tiny-prn.cfg
, yolov3-tiny.cfg(6 MB):yolov3-tiny.conv.11

o 對于enet-coco.cfg (EfficientNetB0-Yolov3)(14 MB):enetb0-coco.conv.132

  1. 使用命令行開始訓練: darknet.exe
    detector train data/obj.data yolo-obj.cfg darknet53.conv.74

要在Linux上訓練,請使用以下命令:(./darknet detector train data/obj.data yolo-obj.cfg darknet53.conv.74僅使用./darknet代替darknet.exe)

o (文件每100次迭代yolo-obj_last.weights將保存到中build\darknet\x64\backup\)

o (文件每1000次迭代yolo-obj_xxxx.weights將保存到中build\darknet\x64\backup\)

o (darknet.exe detector train data/obj.data yolo-obj.cfg darknet53.conv.74
-dont_show如果在沒有監視器的計算機(如云EC2)上訓練,則可以禁用Loss-Window的使用)

o (要在沒有GUI的遠程服務器上進行訓練時查看mAP和損失圖,請使用命令,darknet.exe detector train data/obj.data yolo-obj.cfg darknet53.conv.74 -dont_show -mjpeg_port 8090 -map然后http://ip-address:8090在Chrome / Firefox瀏覽器中打開URL )

8.1. 對于每4個紀元(設置valid=valid.txt或train.txt在obj.data文件中)使用mAP(平均平均精度)計算進行訓練并運行:darknet.exe detector train data/obj.data yolo-obj.cfg darknet53.conv.74-map

  1. 訓練完成后- yolo-obj_final.weights從路徑中獲取結果build\darknet\x64\backup\

每進行100次迭代后,可以停止,然后從這一點開始訓練。例如,經過2000次迭代后,可以停止訓練,之后再開始使用以下方法開始訓練:darknet.exe detector train data/obj.data yolo-obj.cfg backup\yolo-obj_2000.weights

(在原始存儲庫https://github.com/pjreddie/darknet中,權重文件每1萬次迭代僅保存一次if(iterations > 1000))

同樣,可以比所有45000次迭代更早地獲得結果。

注意:如果在訓練過程中看到(損失)字段的nan值avg-則訓練有誤,但如果出現nan在其行中-則訓練進行得很好。

注意:如果在cfg文件中更改了width =或height =,則新的寬度和高度必須被32整除。

注意:訓練后,請使用以下命令進行檢測:darknet.exe
detector test data/obj.data yolo-obj.cfg yolo-obj_8000.weights

注意:如果Out of memory發生錯誤,.cfg則應在-file文件中增加subdivisions=1632或64:鏈接

如何訓練tiny-yolo(檢測自定義對象):

執行與上述完整yolo模型相同的所有步驟。除了:

下載yolov3-tiny的默認權重文件:https 😕/pjreddie.com/media/files/yolov3-tiny.weights
yolov3-tiny.conv.15使用以下命令獲取預先訓練的權重:darknet.exe
partial cfg/yolov3-tiny.cfg yolov3-tiny.weights yolov3-tiny.conv.15 15
使自定義模型yolov3-tiny-obj.cfg基于cfg/yolov3-tiny_obj.cfg而不是yolov3.cfg
開始訓練: darknet.exe detector train data/obj.data yolov3-tiny-obj.cfg
yolov3-tiny.conv.15

要基于其模型(DenseNet201-Yolo或ResNet50-Yolo)訓練Yolo,可以下載并獲取此文件中所示的預訓練權重:https : //github.com/AlexeyAB/darknet/blob/master/build/
darknet / x64 / partial.cmd 如果創建的自定義模型不基于其模型,則可以在不預先訓練權重的情況下對其進行訓練,然后將使用隨機初始權重。

什么時候應該停止訓練:

通常,每個類(對象)需要進行2000次迭代,但總計不少于4000次迭代。但是對于何時停止訓練的更精確定義,請使用以下手冊:

  1. 在訓練期間,將看到各種錯誤指示,并且當不再減小0.XXXXXXX avg時應停止:

區域平均IOU:0.798363,類:0.893232,對象:0.700808,無對象:0.004567,平均調用率:1.000000,計數:8區域平均IOU:0.800677,類:0.892181,對象:0.701590,無對象:0.004574,平均調用率:1.000000 ,數:8

9002:0.211667,0.60730 平均,0.001000速率,3.868000秒,576128圖像加載:0.000000秒

9002-迭代編號(批處理數量)
0.60730平均 -平均損失(錯誤)- 越低越好

當發現平均損失0.xxxxxx平均不再在許多次迭代中減少時,應該停止訓練。最終平均損失可能從0.05(對于小模型和簡單數據集)到3.0(對于大模型和困難數據集)之間。

  1. 訓練停止后,應該從中獲取一些最新.weights文件,darknet\build\darknet\x64\backup并從中選擇最好的文件:

例如,在9000次迭代后停止了訓練,但最佳結果可以給出以前的權重之一(7000、8000、9000)。可能由于過度擬合而發生。過度擬合 -這種情況是可以從訓練數據集中檢測圖像上的對象,但無法檢測其圖像上的對象的情況。應該從Early Stopping
Point獲得權重:

要從提前停止點獲取重量:

2.1.首先,obj.data必須在文件中指定驗證數據集的路徑valid =
valid.txt(格式valid.txt為中的train.txt),如果沒有驗證圖像,則只需復制data\train.txt到即可data\valid.txt。

2.2如果在9000次迭代后停止訓練,要驗證以前的權重,請使用以下命令:

(如果使用另一個GitHub存儲庫,請使用darknet.exe detector recall…而不是darknet.exe detector map…)

darknet.exe detector map
data/obj.data yolo-obj.cfg backup\yolo-obj_7000.weights
darknet.exe detector map
data/obj.data yolo-obj.cfg backup\yolo-obj_8000.weights
darknet.exe detector map
data/obj.data yolo-obj.cfg backup\yolo-obj_9000.weights

每個權重(7000、8000、9000)的comapre最后輸出線:

選擇具有最高mAP(平均平均精度)或IoU(與聯合相交)的權重文件

例如,較大的mAP會賦予權重yolo-obj_8000.weights-然后使用此權重進行檢測。

或者只是用-map國旗訓練:

darknet.exe detector train data/obj.data
yolo-obj.cfg darknet53.conv.74 -map

因此,將在“損失圖”窗口中看到“ mAP圖”(紅線)。將使用valid=valid.txt文件中指定的obj.data文件(1 Epoch =
images_in_train_txt / batch迭代)為每個4個時期計算mAP

(將3類的最大x軸值更改max_batches=為-,將參數更改為2000*classesfe max_batches=6000)

自定義對象檢測的示例: darknet.exe detector test data/obj.data yolo-obj.cfg yolo-obj_8000.weights

IoU(聯合上方的相交)-對象聯合上方的平均insectect和檢測到的某個閾值= 0.24 mAP(平均平均精度)- average precisions每個類別的average precision平均值,其中是同一類別的每個可能閾值(每個檢測概率)的PR曲線上11點的平均值(以PascalVOC表示的Precision-Recall,其中Precision = TP /(TP + FP)和Recall = TP /(TP + FN)),第11頁:http://homepages.inf.ed.ac.uk/ckiw/postscript/ijcv_voc09.pdf

mAP是PascalVOC競賽中默認的精度指標,與MS COCO競賽中的AP50指標相同。在Wiki方面,指標Precision和Recall的含義與PascalVOC競賽中的含義略有不同,但是IoU 始終具有相同的含義。

如何在PascalVOC 2007上計算mAP:

  1. 要在PascalVOC-2007-test上計算mAP(平均平均精度):

下載PascalVOC數據集,安裝Python 3.x并按2007_test.txt此處所述獲取文件:https : //github.com/AlexeyAB/darknet#how-to-train-pascal-voc-data
然后將文件https://raw.githubusercontent.com/AlexeyAB/darknet/master/scripts/voc_label_difficult.py下載到dir,build\darknet\x64\data\然后運行voc_label_difficult.py以獲取文件difficult_2007_test.txt
#從此行中刪除符號以取消注釋:https : //github.com/AlexeyAB/darknet/blob/master/build/darknet/x64/data/voc.data#L4
然后,有兩種獲取mAP的方法:

i. 使用Darknet + Python:運行文件build/darknet/x64/calc_mAP_voc_py.cmd-將獲得yolo-voc.cfg模型的mAP,mAP = 75.9%

ii. 使用Darknet的此分支:運行文件build/darknet/x64/calc_mAP.cmd-將獲得yolo-voc.cfg模型的mAP,mAP = 75.8%

(本文指定YOLOv2 416×416:mAP的值為76.8%:https 😕/arxiv.org/pdf/1612.08242v1.pdf 。得出的值較低-可能是由于以下事實:該模型是在與進行檢測的代碼略有不同的源代碼上訓練的)

如果要獲取tiny-yolo-voc.cfg模型的mAP,則在.cmd文件中取消注釋tiny-yolo-voc.cfg的注釋行和yolo-voc.cfg的注釋行
如果Python 2.x的,而不是Python的3.x中,如果使用暗網+ Python的方式來獲得地圖,然后在CMD文件使用reval_voc.py和voc_eval.py替代reval_voc_py3.py,并voc_eval_py3.py從該目錄:https://github.com/
AlexeyAB / darknet / tree / master / scripts

自定義對象檢測:

自定義對象檢測的示例: darknet.exe detector test data/obj.data yolo-obj.cfg yolo-obj_8000.weights

如何改善物體檢測:

  1. 訓練前:

random=1在.cfg-file文件中設置標志-通過訓練Yolo不同的分辨率來提高精度:鏈接
提高網絡分辨率.cfg-file( height=608,width=608或32任何價值倍數) -會增加精度
檢查要檢測的每個對象是否在數據集中被強制標記-數據集中的任何對象都不應沒有標簽。在大多數訓練問題中-數據集中有錯誤的標簽(通過使用某些轉換腳本標記了第三方工具,得到了標簽,…)。始終使用以下方法檢查數據集:https : //github.com/AlexeyAB/Yolo_mark
損失非常高,而mAP卻很低,訓練錯了嗎? -show_imgs在training命令的末尾運行帶有flag的訓練,是否看到正確的有界對象框(在Windows或文件中aug_…jpg)?如果否-訓練數據集有誤。
對于要檢測的每個對象-訓練數據集中必須至少有一個相似的對象,并且形狀大致相同:形狀,對象的側面,相對大小,旋轉角度,傾斜度,照明度。理想的是,訓練數據集應包含不同對象的圖像:比例,旋轉,照明,不同側面,不同背景的圖像-每個班級或以上,最好擁有2000張不同的圖像,并且應訓練2000classes迭代次數或更多
希望訓練數據集包含帶有不想檢測的未標記對象的圖像-無邊界框的負樣本(空.txt文件)-使用與帶有對象的圖像一樣多的負樣本圖像
標記對象的最佳方法是:僅標記對象的可見部分,或標記對象的可見和重疊部分,或標記比整個對象多一點(有一點間隙)?根據需要進行標記-希望如何檢測。
要在每個圖像中使用大量對象進行訓練,請在cfg文件max=200的最后[yolo]一層或最后一層中添加參數或更高的值[region](YoloV3可以檢測到的全局最大對象數0,0615234375
(width*height)是寬度和高度是[net]cfg文件中部分的參數)
用于訓練小對象(將圖像調整為416x416后小于16x16)-設置layers = -1, 11為https://github.com/AlexeyAB/darknet/blob/6390a5a2ab61a0bdf6f1a9a6b4a739c16b36e0d7/cfg/yolov3.cfg#L720而stride=4不是https:
//github.com/AlexeyAB/darknet/blob/6390a5a2ab61a0bdf6f1a9a6b4a739c16b36e0d7/cfg/yolov3.cfg#L717
對于小型和大型物體的訓練,請使用修改后的模型:

完整模型:5個yolo層:https 😕/raw.githubusercontent.com/AlexeyAB/darknet/master/cfg/yolov3_5l.cfg
小模型:3個yolo層:https 😕/raw.githubusercontent.com/AlexeyAB/darknet/master/cfg/yolov3-tiny_3l.cfg
空間完整模型:3個yolo層:https 😕/raw.githubusercontent.com/AlexeyAB/darknet/master/cfg/yolov3-spp.cfg

如果訓練模型以將左對象和右對象區分為單獨的類(左/右手,左/右轉道路標志,…),則用于禁用翻轉數據增強-在flip=0此處添加:https : //github.com
/AlexeyAB/darknet/blob/3d2d0a7c98dbc8923d9ff705b81ff4f7940ea6ff/cfg/yolov3.cfg#L17
一般規則-訓練數據集應包括一組想要檢測的相對大小的對象:

train_network_width
* train_obj_width / train_image_width ~= detection_network_width *
detection_obj_width / detection_image_width
train_network_height
* train_obj_height / train_image_height ~= detection_network_height *
detection_obj_height / detection_image_height

也就是說,對于Test數據集中的每個對象,Training數據集中必須至少有1個對象具有相同的class_id和大約相同的相對大小:

object width in percent from Training dataset ?= object width in
percent from Test dataset

也就是說,如果訓練集中僅存在占圖像80-90%的對象,則受訓練的網絡將無法檢測到占圖像1-10%的對象。

要加快訓練速度(降低檢測精度),請執行“微調”而不是“轉移學習”,請stopbackward=1在此處設置參數:https : //github.com/AlexeyAB/darknet/blob/6d44529cf93211c319813c90e0c1adb34426abe5/cfg/yolov3.cfg#L548 然后執行此命令:./darknet partial
cfg/yolov3.cfg yolov3.weights yolov3.conv.81 81將創建一個文件yolov3.conv.81,然后使用權重文件yolov3.conv.81代替darknet53.conv.74
每個:model of object, side,
illimination, scale, each 30 grad轉角和傾斜角- 從神經網絡的內部角度來看,是不同的對象。因此,要檢測的對象越多,應使用越復雜的網絡模型。
為了使檢測到的邊界框更準確,可以ignore_thresh
= .9 iou_normalizer=0.5 iou_loss=giou在每個[yolo]圖層上添加3個參數并進行訓練,將增加mAP@0.9,但減少mAP@0.5。
僅當是神經檢測網絡專家時-才為cfg文件width和height從cfg文件重新計算數據集的錨點: darknet.exe detector
calc_anchors data/obj.data -num_of_clusters 9 -width 416 -height 416 然后在cfg文件anchors的3 [yolo]層中的每一層都設置相同的9 。但是,應該masks=為每個[yolo]層更改錨點的索引,以便第一個[yolo]層的錨點大于60x60,第二個層大于30x30,剩下第3個。同樣,應該filters=(classes +
5)*在每個[yolo]層之前更改。如果許多計算出的錨不適合在適當的圖層下-則只需嘗試使用所有默認錨即可。

  1. 訓練后-用于檢測:

通過在.cfg-file(height=608和width=608)或(height=832和width=832)或(32的任意倍數)中設置來提高網絡分辨率-這可以提高精度,并可以檢測小對象:link

無需再次訓練網絡,只需使用.weights已針對416x416分辨率進行訓練的-file
但是要獲得更高的精度,應該使用更高分辨率的608x608或832x832進行訓練,請注意:如果Out of memory發生錯誤,.cfg則應在-file文件中增加subdivisions=16,32或64:鏈接

如何標記對象的邊界框并創建注釋文件:

在這里,可以找到帶有GUI軟件的存儲庫,用于標記對象的有界框并為Yolo v2和v3生成注釋文件:https : //github.com/AlexeyAB/Yolo_mark

與示例的:train.txt,obj.names,obj.data,yolo-obj.cfg,air1-6 .txt,bird1-4 .txt為2類的對象(空氣,鳥)和train_obj.cmd與實施例如何培養這個圖像組具有YOLO v2和v3

標記圖像中對象的不同工具:

  1. 在C ++中:https://github.com/AlexeyAB/Yolo_mark

  2. 在Python中:https://github.com/tzutalin/labelImg

  3. 在Python中:https://github.com/Cartucho/OpenLabeling

  4. 在C ++中:https://www.ccoderun.ca/darkmark/

  5. 在JavaScript中:https://github.com/opencv/cvat

使用Yolo9000

同時檢測和分類9000個對象: darknet.exe detector test cfg/combine9k.data cfg/yolo9000.cfg
yolo9000.weights data/dog.jpg

yolo9000.weights-(186 MB Yolo9000型號)需要4 GB GPU-RAM:http://pjreddie.com/media/files/yolo9000.weights
yolo9000.cfg-在Yolo9000的CFG文件,也有路徑的9k.tree和coco9k.maphttps://github.com/AlexeyAB/darknet/blob/617cf313ccb1fe005db3f7d88dec04a04bd97cc2/cfg/yolo9000.cfg#L217-L218

9k.tree- WordTree的9418個范疇-

combine9k.data-數據文件,也有路徑:9k.labels,9k.names,inet9k.map,(改變路徑到combine9k.train.list):https://raw.githubusercontent.com/AlexeyAB/darknet/master/build/darknet/x64/data/combine9k.data

9k.labels-9418個對象的標簽:https://raw.githubusercontent.com/AlexeyAB/darknet/master/build/darknet/x64/data/9k.labels
9k.names-9418個對象的名稱:https://raw.githubusercontent.com/AlexeyAB/darknet/master/build/darknet/x64/data/9k.names
inet9k.map-將200個類別從ImageNet映射到WordTree 9k.tree:https : //raw.githubusercontent.com/AlexeyAB/darknet/master/build/darknet/x64/data/inet9k.map

如何將Yolo用作DLL和SO庫

在Linux上

使用build.sh或
darknet使用cmake或建立
設置LIBSO=1在Makefile做make

在Windows上

使用build.ps1或
darknet使用cmake或建立
編譯build\darknet\yolo_cpp_dll.sln解決方案或build\darknet\yolo_cpp_dll_no_gpu.sln解決方案

有2個API:
C API:https://github.com/AlexeyAB/darknet/blob/master/include/darknet.h

使用C API的Python示例:

https://github.com/AlexeyAB/darknet/blob/master/darknet.py
https://github.com/AlexeyAB/darknet/blob/master/darknet_video.py

C ++ API:https://github.com/AlexeyAB/darknet/blob/master/include/yolo_v2_class.hpp

使用C ++ API的C ++示例:https : //github.com/AlexeyAB/darknet/blob/master/src/yolo_console_dll.cpp

  1. 要將Yolo編譯為C ++ DLL文件yolo_cpp_dll.dll-打開解決方案build\darknet\yolo_cpp_dll.sln,設置x64和Release,然后執行以下操作:Build-> Build yolo_cpp_dll

o 應該已經安裝了CUDA 10.0

o 要使用cuDNN,請執行以下操作:(右鍵單擊項目)->屬性-> C / C +±>預處理程序->預處理程序定義,然后在行的開頭添加: CUDNN;

  1. 要將Yolo用作C ++控制臺應用程序中的DLL文件,請打開解決方案build\darknet\yolo_console_dll.sln,設置x64和Release,然后執行以下操作:構建->構建yolo_console_dll

o 可以build\darknet\x64\yolo_console_dll.exe 使用以下命令從Windows資源管理器運行控制臺應用程序:yolo_console_dll.exe
data/coco.names yolov3.cfg yolov3.weights test.mp4

o 啟動控制臺應用程序并輸入圖像文件名后,將看到每個對象的信息: <obj_id> <left_x> <top_y>

o 要使用簡單的OpenCV-GUI,應該//#define OPENCV在yolo_console_dll.cpp-file:鏈接中取消注釋行

o 可以在視頻文件上看到用于檢測的簡單示例的源代碼:鏈接

yolo_cpp_dll.dll-API:鏈接

struct bbox_t {
unsigned int x, y, w, h; //
(x,y) - top-left corner, (w, h) - width & height of bounded box

float prob; //
confidence - probability that the object was found correctly

unsigned int obj_id; //
class of object - from range [0, classes-1]

unsigned int track_id; //
tracking id for video (0 - untracked, 1 - inf - tracked object)

unsigned int frames_counter;// counter of frames on which the object was
detected

};

class Detector {

public:

Detector(std::string cfg_filename, std::string weight_filename, int
gpu_id = 0);

~Detector();

std::vector<bbox_t> detect(std::string image_filename, float
thresh = 0.2, bool use_mean = false);
std::vector<bbox_t> detect(image_t img, float thresh = 0.2, bool
use_mean = false);
static image_t load_image(std::string image_filename);

static void free_image(image_t m);

#ifdef OPENCV

std::vector<bbox_t> detect(cv::Mat mat, float thresh = 0.2, bool
use_mean = false);
std::shared_ptr<image_t>
mat_to_image_resize(cv::Mat mat) const;

#endif

};

總結

以上是生活随笔為你收集整理的适用于Windows和Linux的Yolo-v3和Yolo-v2(下)的全部內容,希望文章能夠幫你解決所遇到的問題。

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