国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

5000字多圖長(zhǎng)文預(yù)警!手把手帶你調(diào)參Yolo v5(一)

2023-03-02 17:53 作者:深度之眼官方賬號(hào)  | 我要投稿

來源:投稿 作者:王同學(xué)
編輯:學(xué)姐

本文篇幅較長(zhǎng),建議同學(xué)收藏起來慢慢看哦~

YOLO系列模型在目標(biāo)檢測(cè)領(lǐng)域有著十分重要的地位,隨著版本不停的迭代,模型的性能在不斷地提升,源碼提供的功能也越來越多,「那么如何使用源碼就顯得十分的重要,接下來我會(huì)通過兩篇文章帶大家手把手去了解Yolov5(v6.1)的每一個(gè)參數(shù)的含義」, 并且通過具體的圖片例子讓大家明白每個(gè)參數(shù)改動(dòng)將會(huì)給網(wǎng)絡(luò)帶來哪些影響。

1. 代碼獲取方式??

項(xiàng)目地址:https://github.com/ultralytics/yolov5

進(jìn)入倉庫點(diǎn)擊tags可以查看項(xiàng)目目前提供的版本

我選擇的代碼是v6.1版本

2. 準(zhǔn)備項(xiàng)目環(huán)境?

在配置Conda環(huán)境后就可以進(jìn)入項(xiàng)目了,可以通過作者提供的requirements.txt文件進(jìn)行快速安裝。

即在終端中鍵入如下指令:

requirements.txt文件里面有一些包被注釋掉了,這些包是做一些額外的操作時(shí)候用的,不安裝并不會(huì)影響訓(xùn)練和測(cè)試;但是有些工具是將.pt文件轉(zhuǎn)換成.onnx時(shí)必須安裝的;以后會(huì)介紹pt怎么轉(zhuǎn)換成onnx,這些用的時(shí)候安裝就可以。

3. YOLOv5命令行預(yù)測(cè)方式介紹??

這里介紹一下官方給提供的預(yù)測(cè)方式,我們平時(shí)都是在Pycharm中點(diǎn)擊“運(yùn)行”按鈕去預(yù)測(cè)模型,其實(shí)還可以通過命令行的方式去預(yù)測(cè),預(yù)測(cè)后的結(jié)果會(huì)自動(dòng)保存到runs/detect路徑下;其實(shí)在這條指令后面還可以加上一些參數(shù),具體怎么加后面會(huì)詳細(xì)說明。

「這里說一下 path/*.jpg ?,這個(gè)意思就是預(yù)測(cè)path文件夾下以.jpg結(jié)尾的文件」

4. detect.py文件解讀??

4.1 檢測(cè)一下看看效果

我們可以直接運(yùn)行detect.py文件試試效果,運(yùn)行后系統(tǒng)會(huì)把檢測(cè)結(jié)果保存在runs\detect\exp2路徑

檢測(cè)效果就是這樣子的

這兩張是項(xiàng)目自帶的圖片,我們也可以把自己想測(cè)試的圖片或者視頻放到這個(gè)路徑下:

4.2 參數(shù)詳解

打開detect.py直接看217行

4.2.1 “weights”

這個(gè)就是指定網(wǎng)絡(luò)權(quán)重的路徑,默認(rèn)是“yolov5s.pt”,官方提供了很多的版本,我們要更換的時(shí)候直接按照Model的名字更換就可以了;例如“yolov5m.pt” “yolov5l.pt”,他會(huì)自動(dòng)的下載對(duì)應(yīng)的權(quán)重,不需要我們?nèi)ithub手動(dòng)下載.(如果下載太慢或者失敗只能去官網(wǎng)下載了,下載好了直接放到根目錄下就可以)

這里說一下“default”:default是默認(rèn)的參數(shù),即使我們?cè)谶\(yùn)行時(shí)不指定具體參數(shù),那么系統(tǒng)也會(huì)執(zhí)行默認(rèn)的值。

4.2.2 “source”

這個(gè)參數(shù)就是指定網(wǎng)絡(luò)輸入的路徑,默認(rèn)指定的是文件夾,也可以指定具體的文件或者擴(kuò)展名等


4.2.3 “data”

這個(gè)就是配置文件的一個(gè)路徑,配置文件里面包含了下載路徑和一些數(shù)據(jù)集基本信息,在訓(xùn)練時(shí)如果不自己指定數(shù)據(jù)集,系統(tǒng)會(huì)自己下載coco128數(shù)據(jù)集



4.2.4 “imgsz, img, img-size”

這個(gè)意思就是模型在檢測(cè)圖片前會(huì)把圖片resize成640的size,然后再喂進(jìn)網(wǎng)絡(luò)里,并不是說會(huì)把們最終得到的結(jié)果resize成640大小。

4.2.5 “conf-thres”

這個(gè)就是置信度的閾值,置信度這個(gè)概念我在我的博文“YOLOv1詳細(xì)解讀”里面詳細(xì)介紹了一下,感興趣的小伙伴可以看一下。

「通俗一點(diǎn)來說就是網(wǎng)絡(luò)對(duì)檢測(cè)目標(biāo)相信的程度,如果這里設(shè)置“0”的話,那么網(wǎng)絡(luò)只要認(rèn)為這他預(yù)測(cè)的這個(gè)目標(biāo)有一點(diǎn)點(diǎn)的概率是正確的目標(biāo),他都會(huì)給框出來,我們可以通過這幾幅圖對(duì)比一下」。

我這里把conf-thres參數(shù)依次設(shè)置成“0”, “0.25”,“0.8”

原圖:

conf-thres=0

conf-thres=0.25

conf-thres=0.8


我覺得還是根據(jù)自己的數(shù)據(jù)集情況自行調(diào)整

4.2.6 “iou-thres”

這個(gè)參數(shù)就是調(diào)節(jié)IoU的閾值,這里簡(jiǎn)單介紹一下NMSIoU

「4.2.6.1 NMS介紹」

在執(zhí)行目標(biāo)檢測(cè)任務(wù)時(shí),算法可能對(duì)同一目標(biāo)有多次檢測(cè)。NMS 是一種讓你確保算法只對(duì)每個(gè)對(duì)象得到一個(gè)檢測(cè)框的方法。

在正式使用NMS之前,通常會(huì)有一個(gè)候選框預(yù)清理的工作(簡(jiǎn)單引入一個(gè)置信度閾值),如下圖所示:

NMS 算法的大致過程:每輪選取置信度最大的 Bounding Box(簡(jiǎn)稱 BBox) 接著關(guān)注所有剩下的BBox中與選取的BBox有著高重疊(IoU)的,它們將在這一輪被抑制。這一輪選取的BBox會(huì)被保留輸出,且不會(huì)在下一輪出現(xiàn)。接著開始下一輪,重復(fù)上述過程:選取置信度最大BBox,抑制高IoU BBox。(關(guān)于Bounding Box Regression的詳細(xì)介紹,我強(qiáng)力推薦我的另一篇博文)

IoU可以理解預(yù)測(cè)框和真實(shí)框的交并比

NMS步驟:

  • 第一步:對(duì) BBox 按置信度排序,選取置信度最高的 BBox(所以一開始置信度最高的 BBox 一定會(huì)被留下來);

  • 第二步:對(duì)剩下的 BBox 和已經(jīng)選取的 BBox 計(jì)算 IOU,淘汰(抑制) IOU 大于設(shè)定閾值的 BBox(在圖例中這些淘汰的 BBox 的置信度被設(shè)定為0)。

  • 第三步:重復(fù)上述兩個(gè)步驟,直到所有的 BBox 都被處理完,這時(shí)候每一輪選取的 BBox 就是最后結(jié)果。

在上面這個(gè)例子中,NMS只運(yùn)行了兩輪就選取出最終結(jié)果:第一輪選擇了紅色BBox,淘汰了粉色BBox;第二輪選擇了黃色BBox,淘汰了紫色 BBox和青色BBox。注意到這里設(shè)定的IoU閾值是0.5,假設(shè)將閾值提高為0.7,結(jié)果又是如何?

可以看到,NMS 用了更多輪次來確定最終結(jié)果,并且最終結(jié)果保留了更多的 BBox,但結(jié)果并不是我們想要的。因此,在使用 NMS 時(shí),IoU 閾值的確定是比較重要的,但一開始我們可以選定 default 值(論文使用的值)進(jìn)行嘗試。

「4.2.6.2 不同閾值例子」如果看不懂的話就直接通過例子來理解一下:

這里我“iou-thres”分別取“0”,“0.45”,“0.9”,“1”

iou-thres=0:

iou-thres=0.45:

iou-thres=0.9:

iou-thres=1:

4.2.7 “max-det”

這個(gè)就是最大檢測(cè)數(shù)量,默認(rèn)是最多檢測(cè)1000個(gè)目標(biāo):

我這里把“max-det”分別設(shè)置成“0”“1”“5”“1000”大家感受一下

max-det=0:

max-det=1:

max-det=5:

max-det=1000:

4.2.8 “device”

這個(gè)參數(shù)意思就是指定GPU數(shù)量,如果不指定的話,他會(huì)自動(dòng)檢測(cè),這個(gè)參數(shù)是給GPU多的土豪準(zhǔn)備的。

4.2.9 “action='store_true'”說明

這個(gè)類型的參數(shù)和之前的有很大區(qū)別,大家可以把他理解成一個(gè)“開關(guān)”,當(dāng)我們運(yùn)行程序的時(shí)候如果指定了帶有action='store_true'類型的參數(shù),那么就相當(dāng)于啟動(dòng)這個(gè)參數(shù)所對(duì)應(yīng)的功能,反之則不。我會(huì)拿下面的舉個(gè)例子。

4.2.10 “view-img”

這個(gè)參數(shù)意思就是檢測(cè)的時(shí)候是否實(shí)時(shí)的把檢測(cè)結(jié)果顯示出來,即我如果在終端中輸入以下指令 :


那么意思就是我在檢測(cè)的時(shí)候系統(tǒng)要把我檢測(cè)的結(jié)果實(shí)時(shí)的顯示出來,假如我文件夾有5張圖片,如果指定了這個(gè)參數(shù)的話,那么模型每檢測(cè)出一張就會(huì)顯示出一張,直到所有圖片檢測(cè)完成。如果我不指定這個(gè)參數(shù),那么模型就不會(huì)一張一張的顯示出來。

4.2.11 “save-txt”

這個(gè)參數(shù)的意思就是是否把檢測(cè)結(jié)果保存成一個(gè).txt的格式,我們來看一下指定了這個(gè)參數(shù)的效果:

終端鍵入:


可以看到輸出結(jié)果多了一個(gè)labels文件夾

打開這個(gè)文件夾我們就可以看到兩個(gè).txt文件

這兩個(gè).txt文件里面保存了一些類別信息和邊框的位置信息

4.2.12 “save-conf”

這個(gè)參數(shù)的意思就是是否以.txt的格式保存目標(biāo)的置信度

如果單獨(dú)指定這個(gè)命令是沒有效果的;


必須和--save-txt配合使用,即:


如果指定了這個(gè)參數(shù)就可以發(fā)現(xiàn),同樣是保存txt格式的文件,這次多了紅色框里面的置信度值。原來每行只有5個(gè)數(shù)字,現(xiàn)在有6個(gè)了。

4.2.13 “save-crop”

這個(gè)參數(shù)的意思就是是否把模型檢測(cè)的物體裁剪下來,如果開啟了這個(gè)參數(shù)會(huì)在crops文件夾下看到幾個(gè)以類別命名的文件夾,里面保存的都是裁剪下來的圖片。

這幾張就是backpack和handbag文件夾下的圖片


4.2.14 “nosave”

開啟這個(gè)參數(shù)就是不保存預(yù)測(cè)的結(jié)果,但是還會(huì)生成exp文件夾,只不過是一個(gè)空的exp

我覺得這個(gè)參數(shù)應(yīng)該是和“--view-img”配合使用的

4.2.15 “classes”

這里又出現(xiàn)了一個(gè)新的參數(shù),這個(gè)的意思就是我們可以給變量指定多個(gè)賦值,也就是說我們可以把“0”賦值給“classes”,也可以把“0”“2”“4”“6”都賦值給“classes”

接下來說classes參數(shù),這里看一下coco128.yaml的配置文件就明白了,比如說我這里給classes指定“0”,那么意思就是只檢測(cè)人這個(gè)類別。

例:鍵入如下指令:


4.2.16 “agnostic-nms”

這個(gè)是增強(qiáng)版的nms,算是一種trick吧,通過一個(gè)例子對(duì)比一下:

啟用后:

然而我并沒有感受到區(qū)別,或許是我用的yolov5s.pt的原因吧

4.2.17 “augment”

這個(gè)參數(shù)也是一種增強(qiáng)的方式

啟用前:

啟用后:

這個(gè)還是有很明顯的區(qū)別的

4.2.18 “visualize”

這個(gè)參數(shù)的意思就是是否把特征圖可視化出來,如果開啟了這和參數(shù)可以看到exp文件夾下又多了一些文件,這里.npy格式的文件就是保存的模型文件,可以使用numpy讀寫,.png就是圖片文件啦。

下面來看一下保存下來的特征圖:

stage0:

stage3:

stage6:

stage23:

4.2.19 “update”

如果指定這個(gè)參數(shù),則對(duì)所有模型進(jìn)行strip_optimizer操作,去除pt文件中的優(yōu)化器等信息。

4.2.20 “project”

這個(gè)就是我們預(yù)測(cè)結(jié)果保存的路徑。

4.2.21 “name”

這個(gè)就是預(yù)測(cè)結(jié)果保存的文件夾名字

4.2.22 “exist-ok”

這個(gè)參數(shù)的意思就是每次預(yù)測(cè)模型的結(jié)果是否保存在原來的文件夾,如果指定了這個(gè)參數(shù)的話,那么本次預(yù)測(cè)的結(jié)果還是保存在上一次保存的文件夾里;如果不指定就是每次預(yù)測(cè)結(jié)果保存一個(gè)新的文件夾下。

4.2.23 “l(fā)ine-thickness”

這個(gè)參數(shù)就是調(diào)節(jié)預(yù)測(cè)框線條粗細(xì)的,因?yàn)橛械臅r(shí)候目標(biāo)重疊太多會(huì)產(chǎn)生遮擋;

終端鍵入:

4.2.24 “hide-labels”

這個(gè)參數(shù)就是隱藏標(biāo)簽的

終端鍵入:

?


4.2.25 “hide-conf”

這個(gè)參數(shù)就是隱藏標(biāo)簽的置信度用的

終端鍵入;

4.2.26 “half”

這個(gè)參數(shù)的意思就是是否使用 FP16 半精度推理,簡(jiǎn)單介紹一下低精度技術(shù):

低精度技術(shù) (high speed reduced precision)。在training階段,梯度的更新往往是很微小的,需要相對(duì)較高的精度,一般要用到FP32以上。在inference的時(shí)候,精度要求沒有那么高,一般F16(半精度)就可以,甚至可以用INT8(8位整型),精度影響不會(huì)很大。同時(shí)低精度的模型占用空間更小了,有利于部署在嵌入式模型里面。

4.2.27 “dnn”

這個(gè)參數(shù)的意思就是是否使用 OpenCV DNN 進(jìn)行 ONNX 推理

DNN即Deep Neural Networks

這個(gè)我并沒有用過,我覺得應(yīng)該和torch.hub比較類似

感興趣的小伙伴可以去opencv文檔看一下

參考文獻(xiàn)

非極大值抑制算法

小彩蛋:??

Pycharm通過點(diǎn)擊“運(yùn)行”按鈕生成exp文件夾的速度要比在終端里鍵入指令生成exp文件夾的速度快。

有問題歡迎大家指正,如果感覺有幫助的話請(qǐng)點(diǎn)贊支持下??????

關(guān)注【學(xué)姐帶你玩AI】公眾號(hào)

回復(fù)“YOLO

論文PDF+代碼數(shù)據(jù)集免費(fèi)領(lǐng)!


5000字多圖長(zhǎng)文預(yù)警!手把手帶你調(diào)參Yolo v5(一)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
西林县| 怀集县| 韩城市| 苏尼特左旗| 隆林| 施甸县| 枝江市| 高清| 调兵山市| 沾益县| 随州市| 桦南县| 禹城市| 乐业县| 浦北县| 洛扎县| 建宁县| 石家庄市| 黄龙县| 淅川县| 平安县| 房山区| 洛宁县| 桃园市| 青岛市| 贺州市| 和政县| 岑巩县| 金沙县| 自贡市| 波密县| 吉木乃县| 通许县| 江门市| 兰州市| 吕梁市| 阿尔山市| 霍邱县| 资中县| 三台县| 莎车县|