[圖像算法]-YOLOV5測試及訓(xùn)練自己的數(shù)據(jù)集

YOLOV5項目復(fù)現(xiàn)


首先說一下軟硬件配置這一塊:win10 + i7-9700kf + rtx2070Super + cuda10.2 + anaconda


image.png

一肌幽、YOLOv5 實現(xiàn)檢測

1.1 下載源碼

進入官方地址稚瘾,進行源碼下載 https://github.com/ultralytics/yolov5[大概4M左右]

1.2 下載官方模型(.pt文件)

文中作者是把模型都放到了谷歌網(wǎng)盤里了,如果沒有梯子砰诵,訪問會很慢–>>作者給的模型地址

1.3 配置虛擬環(huán)境

虛擬環(huán)境的優(yōu)點不再闡述
創(chuàng)建虛擬環(huán)境:

conda create -n yolov5 python==3.7,**在yolov5中盡量用python3.7**捌显。

進 入 環(huán) 境 :

conda activate yolov5

再安裝所需庫:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt(使用清華鏡像源)

在pip install的時候茁彭,可能會出現(xiàn)read timeout的情況,你需要更換鏡像源扶歪,或者多執(zhí)行幾次pip install理肺,如果還有其他報錯,請留言評論區(qū)善镰,我會及時回復(fù)妹萨,因為我在安裝的時候也報了一些錯,但是都沒有記錄下來

1.4 進行測試

進入到y(tǒng)olov5根目錄下炫欺,我這里是用的powershell乎完,你也可以在控制臺,都是一樣的品洛。
在這里插入圖片描述

運行測試文件: python detect.py --source 0 【0:是指定的本機攝像頭】PS:我特么的竟然一次運行成功树姨,多少是挺失望
下圖是下載pt文件


image.png

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓雷霆嘎巴↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ZBC↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

二摩桶、YOLOV5 實現(xiàn)訓(xùn)練

2.1 首先是準(zhǔn)備數(shù)據(jù)集

★ 數(shù)據(jù)集的準(zhǔn)備工作,我以前的博客有細(xì)寫過帽揪,—>>傳送門
★ 數(shù)據(jù)集準(zhǔn)備好后硝清,一定先確保label和JPEGImages這兩個文件夾在同一目錄里
[圖片上傳失敗...(image-51eb0c-1613616264582)]

2.2 文件修改

2.2.1 修改數(shù)據(jù)集方面的yaml文件

作者是把以前用的.data、.names文件合并到了data/coco.yaml中转晰,打開coco.yaml進行修改

# COCO 2017 dataset http://cocodataset.org
# Download command: bash yolov5/data/get_coco2017.sh
# Train command: python train.py --data ./data/coco.yaml
# Dataset should be placed next to yolov5 folder:
#   /parent_folder
#     /coco
#     /yolov5

# 這些是生成的圖片的路徑文件芦拿,這里是我自己的路徑,需要修改成你自己的路徑挽霉,絕對路徑也ok
train: ../coco/2007_train.txt  # 118k images
val: ../coco/2007_val.txt  # 5k images
test: ../coco/2007_test.txt  # 20k images for submission to https://competitions.codalab.org/competitions/20794

# 你數(shù)據(jù)集的類別數(shù)
nc: 1

# 類別的名稱
names: ['cell phone']

# Print classes
# with open('data/coco.yaml') as f:
#   d = yaml.load(f, Loader=yaml.FullLoader)  # dict
#   for i, x in enumerate(d['names']):
#     print(i, x)

2.2.2 修改網(wǎng)絡(luò)參數(shù)方面的yaml文件

這個相當(dāng)于以前版本的.cfg文件防嗡,在models/yolov3-spp.yaml【當(dāng)然,你想用哪個模型就去修改對應(yīng)的yaml文件】

# parameters
nc: 1  # 數(shù)據(jù)集類別數(shù)
depth_multiple: 1.0  # expand model depth
width_multiple: 1.0  # expand layer channels

# anchors【你也可以使用k-means去產(chǎn)出你自己數(shù)據(jù)集的anchors】
anchors:
  - [10,13, 16,30, 33,23]  # P3/8
  - [30,61, 62,45, 59,119]  # P4/16
  - [116,90, 156,198, 373,326]  # P5/32

# darknet53 backbone
backbone:
  # [from, number, module, args]
  [[-1, 1, Conv, [32, 3, 1]],  # 0
   [-1, 1, Conv, [64, 3, 2]],  # 1-P1/2
   [-1, 1, Bottleneck, [64]],
   [-1, 1, Conv, [128, 3, 2]],  # 3-P2/4
   [-1, 2, Bottleneck, [128]],
   [-1, 1, Conv, [256, 3, 2]],  # 5-P3/8
   [-1, 8, Bottleneck, [256]],
   [-1, 1, Conv, [512, 3, 2]],  # 7-P4/16
   [-1, 8, Bottleneck, [512]],
   [-1, 1, Conv, [1024, 3, 2]], # 9-P5/32
   [-1, 4, Bottleneck, [1024]],  # 10
  ]

# yolov3-spp head
# na = len(anchors[0])
head:
  [[-1, 1, Bottleneck, [1024, False]],  # 11
   [-1, 1, SPP, [512, [5, 9, 13]]],
   [-1, 1, Conv, [1024, 3, 1]],
   [-1, 1, Conv, [512, 1, 1]],
   [-1, 1, Conv, [1024, 3, 1]],
   [-1, 1, nn.Conv2d, [na * (nc + 5), 1, 1]],  # 16 (P5/32-large)

   [-3, 1, Conv, [256, 1, 1]],
   [-1, 1, nn.Upsample, [None, 2, 'nearest']],
   [[-1, 8], 1, Concat, [1]],  # cat backbone P4
   [-1, 1, Bottleneck, [512, False]],
   [-1, 1, Bottleneck, [512, False]],
   [-1, 1, Conv, [256, 1, 1]],
   [-1, 1, Conv, [512, 3, 1]],
   [-1, 1, nn.Conv2d, [na * (nc + 5), 1, 1]],  # 24 (P4/16-medium)

   [-3, 1, Conv, [128, 1, 1]],
   [-1, 1, nn.Upsample, [None, 2, 'nearest']],
   [[-1, 6], 1, Concat, [1]],  # cat backbone P3
   [-1, 1, Bottleneck, [256, False]],
   [-1, 2, Bottleneck, [256, False]],
   [-1, 1, nn.Conv2d, [na * (nc + 5), 1, 1]],  # 30 (P3/8-small)

   [[], 1, Detect, [nc, anchors]],   # Detect(P3, P4, P5)
  ]

2.2.3 修改train.py中的一些參數(shù)

train.py在根目錄里侠坎,修改一些主要的參數(shù)蚁趁,奧利給

parser.add_argument('--epochs', type=int, default=200)  # 訓(xùn)練的epoch
parser.add_argument('--batch-size', type=int, default=16)  # batch_size 顯卡垃圾的話,就調(diào)小點
parser.add_argument('--cfg', type=str, default='models/yolov5s.yaml', help='*.cfg path')
parser.add_argument('--data', type=str, default='data/coco.yaml', help='*.data path')
parser.add_argument('--img-size', nargs='+', type=int, default=[640, 640], help='train,test sizes')

2.3開始訓(xùn)練

直接 python train.py 就Ok了

成功訓(xùn)練如圖所示
[圖片上傳失敗...(image-b97001-1613616264581)]

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓無情哈拉少↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

在這里插入圖片描述
在這里插入圖片描述

2.4 实胸?

等它訓(xùn)練完就沒問題了他嫡,但是還是要時不時看一眼,具體看什么庐完,我也不知道呀钢属,反正是看就完事兒了????????????????????????????????

都訓(xùn)練完了,測試的話门躯,就不用再說的吧淆党,阿sir,

三讶凉、個人對于yolov5的看法

先說一個情況吧染乌,我在復(fù)現(xiàn)yolov4時,使用1080p的攝像頭進行測試的時候懂讯,檢測的幀率只有1.7fps(在我的rtx2070s顯卡上)荷憋,不管我如何調(diào)整cfg文件里的寬高,基本都無濟于事褐望,然后我用480p的攝像頭才可以達到20fps勒庄,不要搞我啊,阿sir,現(xiàn)在攝像頭基本都是在1080p檢測的啊瘫里,480p怎么能滿足J当巍!=鞫痢Q涡搿!我不知道為什么圖像在相同的cfg參數(shù)下,分辨率對檢測速度影響會這么大贼邓。但是阶冈,啊,但是塑径,我在用yolov5的時候女坑,用1080P就可以達到實時,最主要的是yolov5的模型非常小统舀,比yolo的前幾個系列小了大概4倍匆骗,非常適合做嵌入。對于yolov5誉简,雖然是作者自封的碉就,但是非常達到我心里的預(yù)期!C拼瓮钥!,不吹不黑烹吵,yolov5是我遇到最牛啤的目標(biāo)檢測算法碉熄,你說呢,你是不是也這么感覺的呢


在這里插入圖片描述
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末肋拔,一起剝皮案震驚了整個濱河市锈津,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌凉蜂,老刑警劉巖琼梆,帶你破解...
    沈念sama閱讀 211,376評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異窿吩,居然都是意外死亡叮叹,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評論 2 385
  • 文/潘曉璐 我一進店門爆存,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蝗砾,你說我怎么就攤上這事先较。” “怎么了悼粮?”我有些...
    開封第一講書人閱讀 156,966評論 0 347
  • 文/不壞的土叔 我叫張陵闲勺,是天一觀的道長。 經(jīng)常有香客問我扣猫,道長菜循,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,432評論 1 283
  • 正文 為了忘掉前任申尤,我火速辦了婚禮癌幕,結(jié)果婚禮上衙耕,老公的妹妹穿的比我還像新娘。我一直安慰自己勺远,他們只是感情好橙喘,可當(dāng)我...
    茶點故事閱讀 65,519評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著胶逢,像睡著了一般厅瞎。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上初坠,一...
    開封第一講書人閱讀 49,792評論 1 290
  • 那天和簸,我揣著相機與錄音,去河邊找鬼碟刺。 笑死锁保,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的南誊。 我是一名探鬼主播身诺,決...
    沈念sama閱讀 38,933評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼抄囚!你這毒婦竟也來了霉赡?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,701評論 0 266
  • 序言:老撾萬榮一對情侶失蹤幔托,失蹤者是張志新(化名)和其女友劉穎穴亏,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體重挑,經(jīng)...
    沈念sama閱讀 44,143評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡嗓化,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,488評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了谬哀。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片刺覆。...
    茶點故事閱讀 38,626評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖史煎,靈堂內(nèi)的尸體忽然破棺而出谦屑,到底是詐尸還是另有隱情,我是刑警寧澤篇梭,帶...
    沈念sama閱讀 34,292評論 4 329
  • 正文 年R本政府宣布氢橙,位于F島的核電站,受9級特大地震影響恬偷,放射性物質(zhì)發(fā)生泄漏悍手。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,896評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望坦康。 院中可真熱鬧竣付,春花似錦、人聲如沸涝焙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽仑撞。三九已至赤兴,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間隧哮,已是汗流浹背桶良。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留沮翔,地道東北人陨帆。 一個月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像采蚀,于是被迫代替她去往敵國和親疲牵。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,494評論 2 348

推薦閱讀更多精彩內(nèi)容