最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

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

學(xué)習(xí)筆記-YOLOV5目標(biāo)檢測(cè)初步了解記錄

2023-03-21 14:56 作者:Erromana  | 我要投稿

吐槽:無(wú)奈,好好的?markdown文本一到b站,啥排版都沒了,只能手動(dòng)再調(diào)整。也不知道以后會(huì)不會(huì)支持md格式。似乎有人開發(fā)了轉(zhuǎn)換插件,也不知好不好用。到底還是對(duì)口的網(wǎng)站更對(duì)口些。

大體上對(duì)yolov5模型有了初步了解。模型是類似于應(yīng)用程序的模板,程序員拿過來(lái)改一改就能弄出自己需求功能應(yīng)用。上手只需要修改需要的幾個(gè)參數(shù)或位置,即可拿來(lái)跑出自己的模型權(quán)重,來(lái)用于后期的部署。以下是使用yolov5前基本的了解與熟悉過程的記錄,非教程。

tips:不管是前期配置pytorch環(huán)境,還是之后git yolo本體或pt文件,都最好備著個(gè)代理,不然真是會(huì)被網(wǎng)速折磨的夠嗆。

官方例程運(yùn)行:

detect.py使用yolov5s.pt權(quán)重:

使用了了官方的yolov5s.pt權(quán)重,可以識(shí)別80類物品:

'person','bicycle','car','motorcycle', 'airplane','bus','train', 'truck','boat', 'traffic light'……

運(yùn)行起來(lái),看著還不錯(cuò),蠻有意思的。不過整體置信率都不高。

yolov5m.pt權(quán)重:

換成了更大的yolov5m.pt,卡頓了不少,置信率整體上高了一些。連把書識(shí)別成laptop都更自信了。

實(shí)時(shí)識(shí)別效果:

train.py使用yolov5s.pt訓(xùn)練

數(shù)據(jù)集為coco128,雖然只有128張圖,但也只淺淺地跑了5輪。畢竟我的小筆記本只是1660ti,還是不要為難它了。得到了best.pt。

使用best.pt效果

乍一看其實(shí)也還可以,就是為我們的實(shí)驗(yàn)室新添了個(gè)TV。


好了,玩了好一陣,確實(shí)很有趣,不過接下來(lái)要開始干正事了。


項(xiàng)目結(jié)構(gòu):基本完成

要學(xué)習(xí)一個(gè)項(xiàng)目,項(xiàng)目結(jié)構(gòu)是必須先了解的。一個(gè)不錯(cuò)的詳解學(xué)習(xí)文章:

https://blog.csdn.net/weixin_43334693/article/details/129356033

通過此博客,基本了解yolov5項(xiàng)目結(jié)構(gòu),知道大體上文件及文件夾作用,知道首先需要注意哪幾個(gè)文件及文件夾。下圖顯示了我們初學(xué)者主要需要關(guān)注的文件或文件夾:

tips:聽到某個(gè)人說數(shù)據(jù)集本體最好放在根目錄下,不要放在data文件夾下。

文件結(jié)構(gòu)基本清楚了,繼續(xù)下一步吧。讀源碼,也是根據(jù)此人的博客。


源碼閱讀:

由于源碼中存在注釋,在記錄中只標(biāo)記代碼段功能,不再額外引用代碼。有一說一,看代碼確實(shí)是個(gè)令人頭禿的活計(jì)。

detect.py:基本完成

https://blog.csdn.net/weixin_43334693/article/details/129349094

基本配置:

  1. 首先導(dǎo)入包,不必多提

  2. 獲取文件路徑,將當(dāng)前.py文件所在項(xiàng)目文件夾添加到python環(huán)境中,使得其可以調(diào)用同一個(gè)文件夾下的其他模塊。

  3. 加載自定義模塊中的類,由于有第2步,所以這一步可以導(dǎo)入。

執(zhí)行main函數(shù):

在命令行中中進(jìn)入對(duì)用根目錄,輸入:>python detect.py --source 0,即可運(yùn)行detect.py去采集攝像頭視頻幀進(jìn)行識(shí)別并輸出結(jié)果。

detect.py最后,

if __name__ == "__main__":

opt = parse_opt() # 接收命令行傳來(lái)的參數(shù)到opt中

main(opt) # 用opt參數(shù)去執(zhí)行主函數(shù)

if行只有命令行調(diào)用時(shí)執(zhí)行,與作為模塊調(diào)用執(zhí)行相比,多了個(gè)接受命令行參數(shù)的步驟。

設(shè)置opt參數(shù):

這段代碼是一個(gè) Python 腳本中的一個(gè)函數(shù),用于解析命令行參數(shù)并返回這些參數(shù)的值。

  1. --data:yolov5官方模板指向data/coco128.yaml文件。此yaml文件包括coco128數(shù)據(jù)集路徑;該路徑下的train、val以及test集的劃分路徑。還有coco128數(shù)據(jù)集的標(biāo)簽總數(shù)類別。還有數(shù)據(jù)集下載url 。有人說可以不用管。

  2. --weights: ?訓(xùn)練的權(quán)重路徑,可以使用自己訓(xùn)練的權(quán)重,也可以使用官網(wǎng)提供的權(quán)重。默認(rèn)官網(wǎng)的權(quán)重yolov5s.pt(yolov5n.pt/yolov5s.pt/yolov5m.pt/yolov5l.pt/yolov5x.pt/區(qū)別在于網(wǎng)絡(luò)的寬度和深度以此增加)

  3. --source: ?測(cè)試數(shù)據(jù),可以是圖片/視頻路徑,也可以是'0'(電腦自帶攝像頭),也可以是rtsp等視頻流, 默認(rèn)data/images

  4. --imgsz: ?預(yù)測(cè)時(shí)網(wǎng)絡(luò)輸入圖片的尺寸,默認(rèn)值為 [640]

  5. --conf-thres: ?置信度閾值,默認(rèn)為 0.50

  6. ……

執(zhí)行run函數(shù):

  1. 載入?yún)?shù)。

  2. 初始化配置。這段代碼主要用于處理輸入來(lái)源。定義了一些布爾值區(qū)分輸入是圖片、視頻、網(wǎng)絡(luò)流還是攝像頭。

  3. 保存結(jié)果。這段代碼主要是用于創(chuàng)建保存輸出結(jié)果的目錄。創(chuàng)建一個(gè)新的文件夾exp(在runs文件夾下)來(lái)保存運(yùn)行的結(jié)果。

  4. 加載模型。這段代碼主要是用于選擇設(shè)備、初始化模型和檢查圖像大小

  5. 加載數(shù)據(jù)。這段代碼是根據(jù)輸入的 source 參數(shù)來(lái)判斷是否是通過 webcam 攝像頭捕捉視頻流。

  6. 推理部分
    熱身部分,對(duì)每張圖片/視頻進(jìn)行前向推理,NMS除去多余的框(這段代碼是執(zhí)行
    非最大值抑制(NMS)的步驟,用于篩選預(yù)測(cè)結(jié)果,預(yù)測(cè)過程(這段代碼使用了一個(gè)循環(huán)來(lái)遍歷檢測(cè)結(jié)果列表中的每個(gè)物體并對(duì)每個(gè)物體進(jìn)行處理),打印目標(biāo)檢測(cè)結(jié)果,在窗口中實(shí)時(shí)查看檢測(cè)結(jié)果,設(shè)置保存結(jié)果

  7. 在終端里打印出運(yùn)行的結(jié)果

train.py:存疑/未完成

https://blog.csdn.net/weixin_43334693/article/details/129460666

  1. 導(dǎo)包和基本配置,分布式訓(xùn)練初始化(如果具有多GPU)。大體同detect.py。

  2. 執(zhí)行main()函數(shù):
    檢查分布式訓(xùn)練環(huán)境。
    判斷是否斷點(diǎn)續(xù)訓(xùn)。
    判斷是否分布式訓(xùn)練。
    判斷是否進(jìn)化訓(xùn)練。

  3. 設(shè)置opt參數(shù)。

  4. 執(zhí)行train()函數(shù):
    加載參數(shù)和初始化配置信息。
    加載網(wǎng)絡(luò)模型。
    加載數(shù)據(jù)集。
    訓(xùn)練過程。
    打印消息釋放緩存。

  5. 執(zhí)行run()函數(shù)。類似于命令行支持函數(shù),可以使得別的模塊導(dǎo)入train.py后,通過run調(diào)用執(zhí)行訓(xùn)練過程。

有一說一,train.py的閱讀過程極其艱難與痛苦,大部分的原因還是長(zhǎng)期積累缺失導(dǎo)致的各類專有名詞與python基礎(chǔ)代碼實(shí)現(xiàn)的不認(rèn)識(shí)/不熟練,以至于能不能說讀完了讀完源碼都得打個(gè)大大的問號(hào)。不過,基本的功能對(duì)應(yīng)的代碼位置確定了,至于別的更細(xì)的,說到底是個(gè)水磨工夫,慢慢來(lái)吧。


總結(jié):

到目前為止,yolov5的初步使用所需的應(yīng)該具備了,準(zhǔn)備開始嘗試訓(xùn)練自己的小玩意吧。


學(xué)習(xí)筆記-YOLOV5目標(biāo)檢測(cè)初步了解記錄的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
吴旗县| 延庆县| 天津市| 河曲县| 澎湖县| 岑巩县| 鹤山市| 清丰县| 南陵县| 石泉县| 连云港市| 十堰市| 天台县| 禄丰县| 景东| 东阳市| 赣榆县| 宿州市| 北碚区| 曲松县| 天峻县| 桃园市| 新沂市| 通辽市| 沂源县| 灵宝市| 舞阳县| 马山县| 余姚市| 淮南市| 韶关市| 尼玛县| 大方县| 揭西县| 和静县| 乐都县| 潮安县| 同德县| 长春市| 江达县| 阿拉善左旗|