目标检测算法——YOLOv7训练自己的数据集(保姆级教程)
>>>深度學(xué)習(xí)Tricks,第一時間送達<<<
目錄
YOLOv7訓(xùn)練自己的數(shù)據(jù)集(保姆級教程):
一、YOLOv7源代碼下載
二、安裝深度學(xué)習(xí)環(huán)境
三、準備自己的數(shù)據(jù)集
(一)創(chuàng)建數(shù)據(jù)集
(二)轉(zhuǎn)換數(shù)據(jù)集格式
(三)配置相關(guān)文件
四、YOLOv7模型訓(xùn)練
接下來,小伙伴們就可以訓(xùn)練自己的數(shù)據(jù)集啦!!!
論文題目:YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors
論文地址:https://arxiv.org/abs/2207.02696
論文代碼:https://github.com/WongKinYiu/yolov7/tree/v0.1
YOLOv7可以很好地平衡速度與精度。與現(xiàn)有的通用GPU和移動GPU的目標檢測模型進行比較,YOLOv7在速度(FPS)和精度(AP)均超過其他目標檢測模型。
YOLOv7訓(xùn)練自己的數(shù)據(jù)集(保姆級教程):
一、YOLOv7源代碼下載
本人下載的是YOLOv7-0.1版本代碼,地址如下:
二、安裝深度學(xué)習(xí)環(huán)境
本文安裝的pytorch版本是1.9.0,torchvision版本是0.10.0,python是3.8.10,其他的依賴庫按照requirements.txt文件安裝即可。
三、準備自己的數(shù)據(jù)集
本人之前一直使用YOLOv5算法,所以標注的數(shù)據(jù)格式是VOC(xml文件),且YOLOv7能夠直接使用的是YOLO格式的數(shù)據(jù)。
下面主要演示如何將自己的數(shù)據(jù)集轉(zhuǎn)換成YOLOv7訓(xùn)練格式(小白直接上手訓(xùn)練!!!)。
(一)創(chuàng)建數(shù)據(jù)集
在Pycharm中打開YOLOv7文件夾,在data目錄下創(chuàng)建ZY_data文件夾(具體名字可自定義)。然后在ZY_data文件夾目錄下創(chuàng)建dataSet、images以及xml文件夾(并在dataSet目錄下創(chuàng)建Main文件夾)
dataSet/Main———用于自動生成train.txt,val.txt,test.txt和trainval.txt四個文件,存放存放訓(xùn)練集、測試集以及驗證集圖片的序號
images———用于存放數(shù)據(jù)集圖片
xml———用于存放與圖片相對應(yīng)的xml文件
1.images文件夾下具體內(nèi)容:
2.xml文件夾下具體內(nèi)容:
3.dataSet/Main文件夾下存放train.txt,val.txt,test.txt和trainval.txt四個文件(訓(xùn)練集、驗證集、測試集的劃分劃分比例),需要通過腳本生成。具體操作流程:在ZY_data文件夾(可以是自定義的文件夾)下創(chuàng)建train_val.py文件,代碼如下:
# coding:utf-8import os import random import argparseparser = argparse.ArgumentParser() # xml文件的地址,根據(jù)自己的數(shù)據(jù)進行修改 xml一般存放在Annotations下 parser.add_argument('--xml_path', default='xml', type=str, help='input xml label path') # 數(shù)據(jù)集的劃分,地址選擇自己數(shù)據(jù)下的ImageSets/Main parser.add_argument('--txt_path', default='dataSet/Main', type=str, help='output txt label path') opt = parser.parse_args()trainval_percent = 1.0 train_percent = 0.9 xmlfilepath = opt.xml_path txtsavepath = opt.txt_path total_xml = os.listdir(xmlfilepath) if not os.path.exists(txtsavepath):os.makedirs(txtsavepath)num = len(total_xml) list_index = range(num) tv = int(num * trainval_percent) tr = int(tv * train_percent) trainval = random.sample(list_index, tv) train = random.sample(trainval, tr)file_trainval = open(txtsavepath + '/trainval.txt', 'w') file_test = open(txtsavepath + '/test.txt', 'w') file_train = open(txtsavepath + '/train.txt', 'w') file_val = open(txtsavepath + '/val.txt', 'w')for i in list_index:name = total_xml[i][:-4] + '\n'if i in trainval:file_trainval.write(name)if i in train:file_train.write(name)else:file_val.write(name)else:file_test.write(name)file_trainval.close() file_train.close() file_val.close() file_test.close()4.運行train_val.py文件后,在dataSet/Main文件夾下生成下面四個txt文檔:
(二)轉(zhuǎn)換數(shù)據(jù)集格式
把數(shù)據(jù)集格式由VOC轉(zhuǎn)換成YOLO的txt格式,即將每個xml標注提取bbox信息為txt格式,訓(xùn)練過程需要使用。
?具體操作流程:在data文件夾下創(chuàng)建voc_label.py文件,代碼如下:
# -*- coding: utf-8 -*- import xml.etree.ElementTree as ET import os from os import getcwdsets = ['train', 'val', 'test'] classes = ["person"] # 改成自己的類別 abs_path = os.getcwd() print(abs_path)def convert(size, box):dw = 1. / (size[0])dh = 1. / (size[1])x = (box[0] + box[1]) / 2.0 - 1y = (box[2] + box[3]) / 2.0 - 1w = box[1] - box[0]h = box[3] - box[2]x = x * dww = w * dwy = y * dhh = h * dhreturn x, y, w, hdef convert_annotation(image_id):in_file = open('ZY_data/xml/%s.xml' % (image_id), encoding='UTF-8')out_file = open('ZY_data/labels/%s.txt' % (image_id), 'w')tree = ET.parse(in_file)root = tree.getroot()size = root.find('size')w = int(size.find('width').text)h = int(size.find('height').text)for obj in root.iter('object'):difficult = obj.find('difficult').text#difficult = obj.find('Difficult').textcls = obj.find('name').textif cls not in classes or int(difficult) == 1:continuecls_id = classes.index(cls)xmlbox = obj.find('bndbox')b = (float(xmlbox.find('xmin').text), float(xmlbox.find('xmax').text), float(xmlbox.find('ymin').text),float(xmlbox.find('ymax').text))b1, b2, b3, b4 = b# 標注越界修正if b2 > w:b2 = wif b4 > h:b4 = hb = (b1, b2, b3, b4)bb = convert((w, h), b)out_file.write(str(cls_id) + " " + " ".join([str(a) for a in bb]) + '\n')wd = getcwd() for image_set in sets:if not os.path.exists('ZY_data/labels/'):os.makedirs('ZY_data/labels/')image_ids = open('ZY_data/dataSet/Main/%s.txt' % (image_set)).read().strip().split()list_file = open('ZY_data/%s.txt' % (image_set), 'w')for image_id in image_ids:list_file.write(abs_path + '/ZY_data/images/%s.jpg\n' % (image_id))convert_annotation(image_id)list_file.close()(三)配置相關(guān)文件
1.在data文件夾下創(chuàng)建ZYdata.yaml文件(可自定義命名),具體內(nèi)容如下:
2.選擇YOLOv7模型文件
在cfg/deploy文件夾下選擇合適的模型配置文件,作者提供了yolov7、yolov7-d6、yolov7-e6、yolov7-e6e、yolov7-tiny-silu、yolov7-w6、yolov7x等多個版本。
以yolov7.yaml為例,只需修改一個參數(shù),將nc修改成自己的類別數(shù)即可。
至此,準備自己的數(shù)據(jù)集的工作已全部結(jié)束,下面就可以訓(xùn)練自己的數(shù)據(jù)集了。
四、YOLOv7模型訓(xùn)練
預(yù)訓(xùn)練模型可從源代碼地址下載,也可以從頭開始訓(xùn)練。
主要修改紅色方框里面的內(nèi)容,更改為自己的路徑即可。
接下來,小伙伴們就可以訓(xùn)練自己的數(shù)據(jù)集啦!!!
🚀🏆🍀【算法創(chuàng)新&算法訓(xùn)練&論文投稿】相關(guān)鏈接👇👇👇
??【YOLO創(chuàng)新算法嘗新系列】?
🏂?美團出品 | YOLOv6 v3.0 is Coming(超越Y(jié)OLOv7、v8)
🏂?官方正品 | Ultralytics YOLOv8算法來啦(尖端SOTA模型)
——————————🌴【重磅干貨來襲】🎄——————————
🚀一、主干網(wǎng)絡(luò)改進(持續(xù)更新中)🎄🎈
1.目標檢測算法——YOLOv5/YOLOv7改進之結(jié)合ConvNeXt結(jié)構(gòu)(純卷積|超越Swin)
2.目標檢測算法——YOLOv5/YOLOv7改進之結(jié)合MobileOne結(jié)構(gòu)(高性能骨干|僅需1ms)
3.目標檢測算法——YOLOv5/YOLOv7改進之結(jié)合Swin Transformer V2(漲點神器)
4.目標檢測算法——YOLOv5/YOLOv7改進結(jié)合BotNet(Transformer)
5.目標檢測算法——YOLOv5/YOLOv7改進之GSConv+Slim Neck(優(yōu)化成本)
6.目標檢測算法——YOLOv5/YOLOv7改進結(jié)合新神經(jīng)網(wǎng)絡(luò)算子Involution(CVPR 2021)
7.目標檢測算法——YOLOv7改進|增加小目標檢測層
8.目標檢測算法——YOLOv5改進|增加小目標檢測層
🌴 持續(xù)更新中……
🚀二、輕量化網(wǎng)絡(luò)(持續(xù)更新中)🎄🎈
1.目標檢測算法——YOLOv5/YOLOv7改進之結(jié)合?RepVGG(速度飆升)
2.目標檢測算法——YOLOv5/YOLOv7改進之結(jié)合?PP-LCNet(輕量級CPU網(wǎng)絡(luò))
3.目標檢測算法——YOLOv5/YOLOv7改進之結(jié)合輕量化網(wǎng)絡(luò)MobileNetV3(降參提速)
4.目標檢測算法——YOLOv5/YOLOv7改進|結(jié)合輕量型網(wǎng)絡(luò)ShuffleNetV2
5.目標檢測算法——YOLOv5/YOLOv7改進結(jié)合輕量型Ghost模塊
🌴 持續(xù)更新中……
🚀三、注意力機制(持續(xù)更新中)🎄🎈
1.目標檢測算法——YOLOv5改進之結(jié)合CBAM注意力機制
2.目標檢測算法——YOLOv7改進之結(jié)合CBAM注意力機制
3.目標檢測算法——YOLOv5/YOLOv7之結(jié)合CA注意力機制
4.目標檢測算法——YOLOv5/YOLOv7改進之結(jié)合ECA注意力機制
5.目標檢測算法——YOLOv5/YOLOv7改進之結(jié)合NAMAttention(提升漲點)
6.目標檢測算法——YOLOv5/YOLOv7改進之結(jié)合GAMAttention
7.目標檢測算法——YOLOv5/YOLOv7改進之結(jié)合無參注意力SimAM(漲點神器)
8.目標檢測算法——YOLOv5/YOLOv7改進之結(jié)合Criss-Cross Attention
9.?目標檢測算法——YOLOv5/YOLOv7改進之結(jié)合?SOCA(單幅圖像超分辨率)
🌴 持續(xù)更新中……
🚀四、檢測頭部改進(持續(xù)更新中)🎄🎈
1.魔改YOLOv5/v7高階版(魔法搭配+創(chuàng)新組合)——改進之結(jié)合解耦頭Decoupled_Detect
2.目標檢測算法——YOLOv5/YOLOv7改進結(jié)合漲點Trick之ASFF(自適應(yīng)空間特征融合)
🌴 持續(xù)更新中……
🚀五、空間金字塔池化(持續(xù)更新中)🎄🎈
1.目標檢測算法——YOLOv5/YOLOv7改進之結(jié)合?ASPP(空洞空間卷積池化金字塔)
2.目標檢測算法——YOLOv5/YOLOv7改進之結(jié)合特征提取網(wǎng)絡(luò)RFBNet(漲點明顯)
🌴 持續(xù)更新中……
🚀六、損失函數(shù)及NMS改進(持續(xù)更新中)🎄🎈
1.目標檢測算法——YOLOv5/YOLOv7改進|將IOU Loss替換為EIOU Loss
2.目標檢測算法——助力漲點 | YOLOv5改進結(jié)合Alpha-IoU
3.目標檢測算法——YOLOv5/YOLOv7改進之結(jié)合SIoU
4.目標檢測算法——YOLOv5將NMS替換為DIoU-NMS
🌴 持續(xù)更新中……
🚀七、其他創(chuàng)新改進項目(持續(xù)更新中)🎄🎈
1.手把手教你搭建屬于自己的PyQt5-YOLOv5目標檢測平臺(保姆級教程)
2.YOLO算法改進之結(jié)合GradCAM可視化熱力圖(附詳細教程)
3.目標檢測算法——YOLOv5/YOLOv7改進之結(jié)合SPD-Conv(低分辨率圖像和小目標漲點明顯)
4.目標檢測算法——YOLOv5/YOLOv7改進之更換FReLU激活函數(shù)
5.目標檢測算法——YOLOv5/YOLOv7改進之結(jié)合BiFPN
🌴 持續(xù)更新中……
🚀八、算法訓(xùn)練相關(guān)項目(持續(xù)更新中)🎄🎈
1.目標檢測算法——YOLOv7訓(xùn)練自己的數(shù)據(jù)集(保姆級教程)
2.人工智能前沿——玩轉(zhuǎn)OpenAI語音機器人ChatGPT(中文版)
3.深度學(xué)習(xí)之語義分割算法(入門學(xué)習(xí))
4.知識經(jīng)驗分享——YOLOv5-6.0訓(xùn)練出錯及解決方法(RuntimeError)
5.目標檢測算法——將xml格式轉(zhuǎn)換為YOLOv5格式txt
6.目標檢測算法——YOLOv5/YOLOv7如何改變bbox檢測框的粗細大小
7.人工智能前沿——6款A(yù)I繪畫生成工具
8.YOLOv5結(jié)合人體姿態(tài)估計
9.超越Y(jié)OLOv5,0.7M超輕量,又好又快(PP-YOLOE&PP-PicoDet)
10.目標檢測算法——收藏|小目標檢測的定義(一)
11.目標檢測算法——收藏|小目標檢測難點分析(二)
12.目標檢測算法——收藏|小目標檢測解決方案(三)
🌴 持續(xù)更新中……
🚀九、數(shù)據(jù)資源相關(guān)項目(持續(xù)更新中)🎄🎈
1.目標檢測算法——小目標檢測相關(guān)數(shù)據(jù)集(附下載鏈接)
2.目標檢測算法——3D公共數(shù)據(jù)集匯總(附下載鏈接)
3.目標檢測算法——3D公共數(shù)據(jù)集匯總 2(附下載鏈接)
4.目標檢測算法——行人檢測&人群計數(shù)數(shù)據(jù)集匯總(附下載鏈接)
5.目標檢測算法——遙感影像數(shù)據(jù)集資源匯總(附下載鏈接)
6.目標檢測算法——自動駕駛開源數(shù)據(jù)集匯總(附下載鏈接)
7.目標檢測算法——自動駕駛開源數(shù)據(jù)集匯總 2(附下載鏈接)
8.目標檢測算法——圖像分類開源數(shù)據(jù)集匯總(附下載鏈接)
9.目標檢測算法——醫(yī)學(xué)圖像開源數(shù)據(jù)集匯總(附下載鏈接)
10.目標檢測算法——工業(yè)缺陷數(shù)據(jù)集匯總1(附下載鏈接)
11.目標檢測算法——工業(yè)缺陷數(shù)據(jù)集匯總2(附下載鏈接)
12.目標檢測算法——垃圾分類數(shù)據(jù)集匯總(附下載鏈接)
13.目標檢測算法——人臉識別數(shù)據(jù)集匯總(附下載鏈接)
14.目標檢測算法——安全帽識別數(shù)據(jù)集(附下載鏈接)
15.目標檢測算法——人體姿態(tài)估計數(shù)據(jù)集匯總(附下載鏈接)
16.目標檢測算法——人體姿態(tài)估計數(shù)據(jù)集匯總 2(附下載鏈接)
17.目標檢測算法——車輛牌照識別數(shù)據(jù)集匯總(附下載鏈接)
18.目標檢測算法——車輛牌照識別數(shù)據(jù)集匯總 2(附下載鏈接)
19.收藏 | 機器學(xué)習(xí)公共數(shù)據(jù)集集錦(附下載鏈接)
20.目標檢測算法——圖像分割數(shù)據(jù)集匯總(附下載鏈接)
21.目標檢測算法——圖像分割數(shù)據(jù)集匯總 2(附下載鏈接)
22.收藏 | 自然語言處理(NLP)數(shù)據(jù)集匯總(附下載鏈接)
23.自然語言處理(NLP)數(shù)據(jù)集匯總 2(附下載鏈接)
24.自然語言處理(NLP)數(shù)據(jù)集匯總 3(附下載鏈接)
25.自然語言處理(NLP)數(shù)據(jù)集匯總 4(附下載鏈接)
🌴 持續(xù)更新中……
🚀十、論文投稿相關(guān)項目(持續(xù)更新中)🎄🎈
1.論文投稿指南——收藏|SCI論文投稿注意事項(提高命中率)
2.論文投稿指南——收藏|SCI論文怎么投?(Accepted)
3.論文投稿指南——收藏|SCI寫作投稿發(fā)表全流程
4.論文投稿指南——收藏|如何選擇SCI期刊(含選刊必備神器)
5.論文投稿指南——SCI選刊
6.論文投稿指南——SCI投稿各階段郵件模板
7.人工智能前沿——深度學(xué)習(xí)熱門領(lǐng)域(確定選題及研究方向)
8.人工智能前沿——2022年最流行的十大AI技術(shù)
9.人工智能前沿——未來AI技術(shù)的五大應(yīng)用領(lǐng)域
10.人工智能前沿——無人自動駕駛技術(shù)
11.人工智能前沿——AI技術(shù)在醫(yī)療領(lǐng)域的應(yīng)用
12.人工智能前沿——隨需應(yīng)變的未來大腦
13.目標檢測算法——深度學(xué)習(xí)知識簡要普及
14.目標檢測算法——10種深度學(xué)習(xí)框架介紹
15.目標檢測算法——為什么我選擇PyTorch?
16.知識經(jīng)驗分享——超全激活函數(shù)解析(數(shù)學(xué)原理+優(yōu)缺點)
17.知識經(jīng)驗分享——卷積神經(jīng)網(wǎng)絡(luò)(CNN)
18.海帶軟件分享——Office 2021全家桶安裝教程(附報錯解決方法)
19.海帶軟件分享——日常辦公學(xué)習(xí)軟件分享(收藏)
20.論文投稿指南——計算機視覺 (Computer Vision) 頂會歸納
21.論文投稿指南——中文核心期刊
22.論文投稿指南——計算機領(lǐng)域核心期刊
23.論文投稿指南——中文核心期刊推薦(計算機技術(shù))
24.論文投稿指南——中文核心期刊推薦(計算機技術(shù)2)
25.論文投稿指南——中文核心期刊推薦(計算機技術(shù)3)
26.論文投稿指南——中文核心期刊推薦(電子、通信技術(shù))
27.論文投稿指南——中文核心期刊推薦(電子、通信技術(shù)2)
28.論文投稿指南——中文核心期刊推薦(電子、通信技術(shù)3)
29.論文投稿指南——中文核心期刊推薦(機械、儀表工業(yè))
30.論文投稿指南——中文核心期刊推薦(機械、儀表工業(yè)2)
31.論文投稿指南——中文核心期刊推薦(機械、儀表工業(yè)3)
32.論文投稿指南——中國(中文EI)期刊推薦(第1期)
33.論文投稿指南——中國(中文EI)期刊推薦(第2期)
34.論文投稿指南——中國(中文EI)期刊推薦(第3期)
35.論文投稿指南——中國(中文EI)期刊推薦(第4期)
36.論文投稿指南——中國(中文EI)期刊推薦(第5期)
37.論文投稿指南——中國(中文EI)期刊推薦(第6期)
38.論文投稿指南——中國(中文EI)期刊推薦(第7期)
39.論文投稿指南——中國(中文EI)期刊推薦(第8期)
40.【1】SCI易中期刊推薦——計算機方向(中科院3區(qū))
41.【2】SCI易中期刊推薦——遙感圖像領(lǐng)域(中科院2區(qū))
42.【3】SCI易中期刊推薦——人工智能領(lǐng)域(中科院1區(qū))
43.【4】SCI易中期刊推薦——神經(jīng)科學(xué)研究(中科院4區(qū))
44.【5】SCI易中期刊推薦——計算機科學(xué)(中科院2區(qū))
45.【6】SCI易中期刊推薦——人工智能&神經(jīng)科學(xué)&機器人學(xué)(中科院3區(qū))
46.【7】SCI易中期刊推薦——計算機 | 人工智能(中科院4區(qū))
47.【8】SCI易中期刊推薦——圖像處理領(lǐng)域(中科院4區(qū))
48.【9】SCI易中期刊推薦——工程技術(shù)-計算機:軟件工程(中科院4區(qū))
49.【10】SCI易中期刊推薦——工程技術(shù)-計算機:人工智能(中科院2區(qū))
🌴 持續(xù)更新中……
關(guān)于YOLOv5/v7改進及論文投稿可關(guān)注并留言博主的CSDN/QQ
>>>>>>一起交流!互相學(xué)習(xí)!共同進步!<<<<<<
總結(jié)
以上是生活随笔為你收集整理的目标检测算法——YOLOv7训练自己的数据集(保姆级教程)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微信小程序申请地理位置接口wx.getL
- 下一篇: 最新目标检测算法回顾2022笔记