小白的第一篇csdn...最近在準(zhǔn)備小論文,大概率是目標(biāo)檢測(cè)方向了,沒經(jīng)驗(yàn),慢慢學(xué),本文只是跟著b站的天才up主一起訓(xùn)練和復(fù)現(xiàn),這里只是我記錄yolov5的學(xué)習(xí)歷程,都是大白話,沒有專業(yè)術(shù)語(yǔ),肯定也會(huì)說(shuō)錯(cuò)很多東西,但是我都想記錄在這里,這樣就不會(huì)忘記啦,如果有幸被人刷到我的博客,也請(qǐng)多多指點(diǎn),多多交流!
one step: 先去github上把官方的yolov5的代碼都拉下來(lái)了? 鏈接如下:GitHub - ultralytics/yolov5: YOLOv5 ?? in PyTorch > ONNX > CoreML > TFLite
一、幾種數(shù)據(jù)增強(qiáng)的方法
正文之前:? 提一下rectangular
up主解釋了一下,這是yolov5中為了加快模型訓(xùn)練而采取的一種策略
在原來(lái)的訓(xùn)練數(shù)據(jù)過(guò)程中,由于每張圖片寬和高不相同,而我們會(huì)將每張圖片shape到一個(gè)固定的大小,這樣一來(lái),不同尺寸的圖片就可以丟到同一個(gè)batch中進(jìn)行訓(xùn)練了。但是有些圖片進(jìn)行resize后會(huì)出現(xiàn)黑邊,這種黑邊會(huì)影響我們訓(xùn)練和預(yù)測(cè)的速度。
基于原來(lái)的現(xiàn)象,在yolov5中進(jìn)行了改進(jìn),也就是說(shuō)在同一個(gè)batch里面盡可能的保證每張圖片保留自己的shape(寬高),滿足這個(gè)batch中的所有圖片都會(huì)有較小的黑邊,如最后一張狗狗圖,它在某一個(gè)batch中最后的shape是520*640,這樣一來(lái),它能減少的計(jì)算量是非??捎^的。
這里不得不說(shuō),up主真的很良心,把所有的數(shù)據(jù)增強(qiáng)的實(shí)例都放在這個(gè)這個(gè)jupyter上面,大家可以去這個(gè)github上自行搜索一下:yolov5_in_tf2_keras/data at master · yyccR/yolov5_in_tf2_keras · GitHub
?配合up主的講解食用效果更佳~:2. 數(shù)據(jù)增強(qiáng)細(xì)節(jié)_嗶哩嗶哩_bilibili
ok 寫到這里,我突然發(fā)現(xiàn)這個(gè)up主講的我有些聽不懂了,于是我又去尋覓一個(gè)講的更接地氣一點(diǎn)的up主:我是土堆? 突然發(fā)現(xiàn)從一開始 他就真的講的好細(xì)致,推薦推薦推薦!!!! 不過(guò)上述講解數(shù)據(jù)增強(qiáng)的部分還是很值得一聽的,多學(xué)點(diǎn)東西肯定沒壞處。
為什么我說(shuō)土堆細(xì)呢,是因?yàn)橐婚_始他就解決了困擾我很久的問(wèn)題,也就是我們經(jīng)常在視頻中看到的從github上下載下來(lái)的代碼跟我們實(shí)際自己拉下來(lái)的代碼不一樣,這是因?yàn)樽髡邥?huì)對(duì)代碼進(jìn)行更新,解決辦法就是我們可以自行選擇作者上傳的版本....(也許很多人已經(jīng)知道了,但也不妨礙還有很多人不知道,比如我...)
?二、環(huán)境的配置問(wèn)題
首先,找到這個(gè)項(xiàng)目的requirements.txt文件,一般來(lái)說(shuō)我們只用執(zhí)行上面的pip指令,就能夠?qū)⑦@個(gè)項(xiàng)目所需要的包下載到自己的pytorch環(huán)境中。(注意,要從base環(huán)境轉(zhuǎn)到自己的pytorch環(huán)境中哦)如果作者沒有寫這個(gè)文件的話,那就只能自己去運(yùn)行的時(shí)候,根據(jù)報(bào)錯(cuò)來(lái)安裝缺少的包了。
?三、如何利用yolov5進(jìn)行預(yù)測(cè)
?即開源作者為我們提供了訓(xùn)練好的模型,我們?nèi)绾斡眠@個(gè)模型在實(shí)際場(chǎng)景中進(jìn)行應(yīng)用,看一下在不同場(chǎng)景中它的檢測(cè)效果如何。
3.1? README.md中有什么
?首先對(duì)模型做了一個(gè)簡(jiǎn)單的對(duì)比 我們會(huì)發(fā)現(xiàn)右邊有YOLOv5s6---x6 越往下代表模型結(jié)構(gòu)越復(fù)雜。
其次,作者還放上了一些教程,比如如何訓(xùn)練自己的數(shù)據(jù)集,如果想訓(xùn)練出好的結(jié)果,作者給出的相關(guān)建議和日志等等。
最后來(lái)看一下Inference,講解的是如何利用已經(jīng)訓(xùn)練好的模型進(jìn)行網(wǎng)絡(luò)預(yù)測(cè)。
?3.2 我在運(yùn)行detect.py時(shí)遇到的各種問(wèn)題
可以參考這個(gè)博客,我報(bào)錯(cuò)的問(wèn)題跟里面是一模一樣的,如果有小伙伴也是這種問(wèn)題,直接跟著操作一遍就ok。
yolov5 5.0 報(bào)錯(cuò)日常Can‘t get attribute ‘SPPF‘ on <module ‘models.common‘ from ‘D:\\Pycharm\\Code\\yolov5_:)?東東要拼命的博客-CSDN博客
3.3 現(xiàn)在來(lái)記錄一下各種參數(shù)的意義和作用?
關(guān)于YOLOv5-p5和YOLOv6-p6
我們?cè)谳斎胍粡垐D片的時(shí)候,會(huì)將其resize到我們指定的圖片大小,那么問(wèn)題就來(lái)了,輸出的時(shí)候我們的圖片大小是不是就變了?答案是否定的
我們輸出的圖片大小依然與輸入圖片大小保持一致,只是在網(wǎng)絡(luò)訓(xùn)練的過(guò)程中把尺寸進(jìn)行縮放。
?
?NMS:非極大值抑制
?在檢測(cè)過(guò)程中,會(huì)圈出不同的區(qū)域,我們就要想辦法從這些框中選擇最優(yōu)框,NMS就是用來(lái)解決這個(gè)問(wèn)題的。
這種情況下,我們采用的是IOU的方法
什么是IOU呢?-----即兩個(gè)區(qū)域的交并比
?
?在圖片中我已經(jīng)記錄了detect.py文件中每個(gè)參數(shù)的意義和作用,上述所創(chuàng)建的參數(shù),最后都會(huì)被保存在opt這個(gè)變量中。
?四、訓(xùn)練yolov5模型(開始煉丹了...)
在開始之前,up主分兩種情況講解了煉丹的過(guò)程,分別是在自己電腦的CPU上 or 在云端GPU上,我用的是實(shí)驗(yàn)室的服務(wù)器,應(yīng)該沒什么大問(wèn)題,簡(jiǎn)單記錄一下,如果up主有詳解代碼的部分,我會(huì)直接將視頻鏈接貼在下方,大家可以自行觀看。如果我的訓(xùn)練過(guò)程除了啥問(wèn)題,我也會(huì)記錄下來(lái),希望我能夠順暢的煉完丹!!!!!
跑模型時(shí)遇見的問(wèn)題記錄:
1.module 'distutils' has no attribute 'version'??
問(wèn)題出現(xiàn)的原因:setuptools的版本太高導(dǎo)致
問(wèn)題解決:
1.pip uninstall setuptools 記住,一定不可以使用conda uninstall? 原因我這個(gè)小白也不是很清楚 我搜索的時(shí)候得到的答案是說(shuō) 因?yàn)閏onda在卸載的時(shí)候會(huì)自動(dòng)分析與其相關(guān)的庫(kù) 然后全部刪除,這樣的話,可能很多你本來(lái)不想刪除的東西都被刪除了...
2.pip或者conda install setuptools==58.0.4 (如果你安裝的是59的版本 很可能安裝不上 因?yàn)楝F(xiàn)在的setuptools版本已經(jīng)更新到67了吧 很多老版本只是部分保留下來(lái)了 anyway 如果58這個(gè)版本能裝就裝這個(gè)?。?/p>
2.Dataset autodownload failure
這個(gè)錯(cuò)誤是發(fā)生在自動(dòng)下載COCO數(shù)據(jù)集前128張圖片時(shí)出現(xiàn)的,下載到94%的時(shí)候跟我說(shuō)下載失敗....服咯??
解決辦法呢 就是自己點(diǎn)開這個(gè)下載網(wǎng)址,下載解壓以后一定要放到和yolov5同一級(jí)目錄下,如果跟我一樣用服務(wù)器的話,必須要上傳到服務(wù)器里才可以,不能放到y(tǒng)olov5文件夾下面,要和它是同一級(jí)才可以!!!!
?五、如何制作和訓(xùn)練自己的數(shù)據(jù)集
1.如果我們有數(shù)據(jù)集,那么要對(duì)其進(jìn)行標(biāo)注
2.如果沒有數(shù)據(jù)集,要根據(jù)自己的需要獲得數(shù)據(jù)集,進(jìn)行人工標(biāo)注
3.自己獲得數(shù)據(jù)集,半人工標(biāo)注(利用已經(jīng)訓(xùn)練好的網(wǎng)絡(luò),對(duì)數(shù)據(jù)集進(jìn)行簡(jiǎn)單的標(biāo)注,然后自己進(jìn)行微調(diào))
4.仿真數(shù)據(jù)集(GAN,數(shù)字圖像處理的方式)
假設(shè)我們要做與汽車相關(guān)的數(shù)據(jù)集:
1.首先去搜索有關(guān)汽車的圖片,或者自己拍下來(lái)的汽車圖片,保存到電腦中
2.使用Make Sense在線標(biāo)注工具創(chuàng)建標(biāo)簽
?
如何導(dǎo)出數(shù)據(jù)?
?這樣就可以下載下來(lái)了
?標(biāo)注工作和下載工作我們都做好了,接下來(lái)要去建立我們的數(shù)據(jù)集文件夾了。
在我們編譯器中的yolov5項(xiàng)目里新建一個(gè)數(shù)據(jù)集文件夾,名字自己取。
?
然后我們需要?jiǎng)?chuàng)建一個(gè)mydata.yaml文件,用來(lái)指定我們的數(shù)據(jù)集。
?然后就可以愉快的跑自己數(shù)據(jù)集的代碼了,最后可以用detect.py測(cè)試一下~
注意:
1.正常情況下是不能拿訓(xùn)練集的數(shù)據(jù)來(lái)進(jìn)行測(cè)試的,up主這里只是簡(jiǎn)單演示一下
2.一般,作者都會(huì)把數(shù)據(jù)集放在項(xiàng)目的外面,或者將數(shù)據(jù)集標(biāo)注成excluded
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-686736.html
到這里,yolov5就告一段落了,后續(xù)還會(huì)繼續(xù)記錄俺的學(xué)習(xí)歷程的,加油加油!文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-686736.html
到了這里,關(guān)于yolov5解讀,訓(xùn)練,復(fù)現(xiàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!