目标检测算法——YOLOv7训练自己的数据集(保姆级教程)
>>>深度學習Tricks,第一時間送達<<<
目錄
YOLOv7訓練自己的數據集(保姆級教程):
一、YOLOv7源代碼下載
二、安裝深度學習環境
三、準備自己的數據集
(一)創建數據集
(二)轉換數據集格式
(三)配置相關文件
四、YOLOv7模型訓練
接下來,小伙伴們就可以訓練自己的數據集啦!!!
論文題目: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可以很好地平衡速度與精度。與現有的通用GPU和移動GPU的目標檢測模型進行比較,YOLOv7在速度(FPS)和精度(AP)均超過其他目標檢測模型。
YOLOv7訓練自己的數據集(保姆級教程):
一、YOLOv7源代碼下載
本人下載的是YOLOv7-0.1版本代碼,地址如下:
二、安裝深度學習環境
本文安裝的pytorch版本是1.9.0,torchvision版本是0.10.0,python是3.8.10,其他的依賴庫按照requirements.txt文件安裝即可。
三、準備自己的數據集
本人之前一直使用YOLOv5算法,所以標注的數據格式是VOC(xml文件),且YOLOv7能夠直接使用的是YOLO格式的數據。
下面主要演示如何將自己的數據集轉換成YOLOv7訓練格式(小白直接上手訓練!!!)。
(一)創建數據集
在Pycharm中打開YOLOv7文件夾,在data目錄下創建ZY_data文件夾(具體名字可自定義)。然后在ZY_data文件夾目錄下創建dataSet、images以及xml文件夾(并在dataSet目錄下創建Main文件夾)
dataSet/Main———用于自動生成train.txt,val.txt,test.txt和trainval.txt四個文件,存放存放訓練集、測試集以及驗證集圖片的序號
images———用于存放數據集圖片
xml———用于存放與圖片相對應的xml文件
1.images文件夾下具體內容:
2.xml文件夾下具體內容:
3.dataSet/Main文件夾下存放train.txt,val.txt,test.txt和trainval.txt四個文件(訓練集、驗證集、測試集的劃分劃分比例),需要通過腳本生成。具體操作流程:在ZY_data文件夾(可以是自定義的文件夾)下創建train_val.py文件,代碼如下:
# coding:utf-8import os import random import argparseparser = argparse.ArgumentParser() # xml文件的地址,根據自己的數據進行修改 xml一般存放在Annotations下 parser.add_argument('--xml_path', default='xml', type=str, help='input xml label path') # 數據集的劃分,地址選擇自己數據下的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文檔:
(二)轉換數據集格式
把數據集格式由VOC轉換成YOLO的txt格式,即將每個xml標注提取bbox信息為txt格式,訓練過程需要使用。
?具體操作流程:在data文件夾下創建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()(三)配置相關文件
1.在data文件夾下創建ZYdata.yaml文件(可自定義命名),具體內容如下:
2.選擇YOLOv7模型文件
在cfg/deploy文件夾下選擇合適的模型配置文件,作者提供了yolov7、yolov7-d6、yolov7-e6、yolov7-e6e、yolov7-tiny-silu、yolov7-w6、yolov7x等多個版本。
以yolov7.yaml為例,只需修改一個參數,將nc修改成自己的類別數即可。
至此,準備自己的數據集的工作已全部結束,下面就可以訓練自己的數據集了。
四、YOLOv7模型訓練
預訓練模型可從源代碼地址下載,也可以從頭開始訓練。
主要修改紅色方框里面的內容,更改為自己的路徑即可。
接下來,小伙伴們就可以訓練自己的數據集啦!!!
🚀🏆🍀【算法創新&算法訓練&論文投稿】相關鏈接👇👇👇
??【YOLO創新算法嘗新系列】?
🏂?美團出品 | YOLOv6 v3.0 is Coming(超越YOLOv7、v8)
🏂?官方正品 | Ultralytics YOLOv8算法來啦(尖端SOTA模型)
——————————🌴【重磅干貨來襲】🎄——————————
🚀一、主干網絡改進(持續更新中)🎄🎈
1.目標檢測算法——YOLOv5/YOLOv7改進之結合ConvNeXt結構(純卷積|超越Swin)
2.目標檢測算法——YOLOv5/YOLOv7改進之結合MobileOne結構(高性能骨干|僅需1ms)
3.目標檢測算法——YOLOv5/YOLOv7改進之結合Swin Transformer V2(漲點神器)
4.目標檢測算法——YOLOv5/YOLOv7改進結合BotNet(Transformer)
5.目標檢測算法——YOLOv5/YOLOv7改進之GSConv+Slim Neck(優化成本)
6.目標檢測算法——YOLOv5/YOLOv7改進結合新神經網絡算子Involution(CVPR 2021)
7.目標檢測算法——YOLOv7改進|增加小目標檢測層
8.目標檢測算法——YOLOv5改進|增加小目標檢測層
🌴 持續更新中……
🚀二、輕量化網絡(持續更新中)🎄🎈
1.目標檢測算法——YOLOv5/YOLOv7改進之結合?RepVGG(速度飆升)
2.目標檢測算法——YOLOv5/YOLOv7改進之結合?PP-LCNet(輕量級CPU網絡)
3.目標檢測算法——YOLOv5/YOLOv7改進之結合輕量化網絡MobileNetV3(降參提速)
4.目標檢測算法——YOLOv5/YOLOv7改進|結合輕量型網絡ShuffleNetV2
5.目標檢測算法——YOLOv5/YOLOv7改進結合輕量型Ghost模塊
🌴 持續更新中……
🚀三、注意力機制(持續更新中)🎄🎈
1.目標檢測算法——YOLOv5改進之結合CBAM注意力機制
2.目標檢測算法——YOLOv7改進之結合CBAM注意力機制
3.目標檢測算法——YOLOv5/YOLOv7之結合CA注意力機制
4.目標檢測算法——YOLOv5/YOLOv7改進之結合ECA注意力機制
5.目標檢測算法——YOLOv5/YOLOv7改進之結合NAMAttention(提升漲點)
6.目標檢測算法——YOLOv5/YOLOv7改進之結合GAMAttention
7.目標檢測算法——YOLOv5/YOLOv7改進之結合無參注意力SimAM(漲點神器)
8.目標檢測算法——YOLOv5/YOLOv7改進之結合Criss-Cross Attention
9.?目標檢測算法——YOLOv5/YOLOv7改進之結合?SOCA(單幅圖像超分辨率)
🌴 持續更新中……
🚀四、檢測頭部改進(持續更新中)🎄🎈
1.魔改YOLOv5/v7高階版(魔法搭配+創新組合)——改進之結合解耦頭Decoupled_Detect
2.目標檢測算法——YOLOv5/YOLOv7改進結合漲點Trick之ASFF(自適應空間特征融合)
🌴 持續更新中……
🚀五、空間金字塔池化(持續更新中)🎄🎈
1.目標檢測算法——YOLOv5/YOLOv7改進之結合?ASPP(空洞空間卷積池化金字塔)
2.目標檢測算法——YOLOv5/YOLOv7改進之結合特征提取網絡RFBNet(漲點明顯)
🌴 持續更新中……
🚀六、損失函數及NMS改進(持續更新中)🎄🎈
1.目標檢測算法——YOLOv5/YOLOv7改進|將IOU Loss替換為EIOU Loss
2.目標檢測算法——助力漲點 | YOLOv5改進結合Alpha-IoU
3.目標檢測算法——YOLOv5/YOLOv7改進之結合SIoU
4.目標檢測算法——YOLOv5將NMS替換為DIoU-NMS
🌴 持續更新中……
🚀七、其他創新改進項目(持續更新中)🎄🎈
1.手把手教你搭建屬于自己的PyQt5-YOLOv5目標檢測平臺(保姆級教程)
2.YOLO算法改進之結合GradCAM可視化熱力圖(附詳細教程)
3.目標檢測算法——YOLOv5/YOLOv7改進之結合SPD-Conv(低分辨率圖像和小目標漲點明顯)
4.目標檢測算法——YOLOv5/YOLOv7改進之更換FReLU激活函數
5.目標檢測算法——YOLOv5/YOLOv7改進之結合BiFPN
🌴 持續更新中……
🚀八、算法訓練相關項目(持續更新中)🎄🎈
1.目標檢測算法——YOLOv7訓練自己的數據集(保姆級教程)
2.人工智能前沿——玩轉OpenAI語音機器人ChatGPT(中文版)
3.深度學習之語義分割算法(入門學習)
4.知識經驗分享——YOLOv5-6.0訓練出錯及解決方法(RuntimeError)
5.目標檢測算法——將xml格式轉換為YOLOv5格式txt
6.目標檢測算法——YOLOv5/YOLOv7如何改變bbox檢測框的粗細大小
7.人工智能前沿——6款AI繪畫生成工具
8.YOLOv5結合人體姿態估計
9.超越YOLOv5,0.7M超輕量,又好又快(PP-YOLOE&PP-PicoDet)
10.目標檢測算法——收藏|小目標檢測的定義(一)
11.目標檢測算法——收藏|小目標檢測難點分析(二)
12.目標檢測算法——收藏|小目標檢測解決方案(三)
🌴 持續更新中……
🚀九、數據資源相關項目(持續更新中)🎄🎈
1.目標檢測算法——小目標檢測相關數據集(附下載鏈接)
2.目標檢測算法——3D公共數據集匯總(附下載鏈接)
3.目標檢測算法——3D公共數據集匯總 2(附下載鏈接)
4.目標檢測算法——行人檢測&人群計數數據集匯總(附下載鏈接)
5.目標檢測算法——遙感影像數據集資源匯總(附下載鏈接)
6.目標檢測算法——自動駕駛開源數據集匯總(附下載鏈接)
7.目標檢測算法——自動駕駛開源數據集匯總 2(附下載鏈接)
8.目標檢測算法——圖像分類開源數據集匯總(附下載鏈接)
9.目標檢測算法——醫學圖像開源數據集匯總(附下載鏈接)
10.目標檢測算法——工業缺陷數據集匯總1(附下載鏈接)
11.目標檢測算法——工業缺陷數據集匯總2(附下載鏈接)
12.目標檢測算法——垃圾分類數據集匯總(附下載鏈接)
13.目標檢測算法——人臉識別數據集匯總(附下載鏈接)
14.目標檢測算法——安全帽識別數據集(附下載鏈接)
15.目標檢測算法——人體姿態估計數據集匯總(附下載鏈接)
16.目標檢測算法——人體姿態估計數據集匯總 2(附下載鏈接)
17.目標檢測算法——車輛牌照識別數據集匯總(附下載鏈接)
18.目標檢測算法——車輛牌照識別數據集匯總 2(附下載鏈接)
19.收藏 | 機器學習公共數據集集錦(附下載鏈接)
20.目標檢測算法——圖像分割數據集匯總(附下載鏈接)
21.目標檢測算法——圖像分割數據集匯總 2(附下載鏈接)
22.收藏 | 自然語言處理(NLP)數據集匯總(附下載鏈接)
23.自然語言處理(NLP)數據集匯總 2(附下載鏈接)
24.自然語言處理(NLP)數據集匯總 3(附下載鏈接)
25.自然語言處理(NLP)數據集匯總 4(附下載鏈接)
🌴 持續更新中……
🚀十、論文投稿相關項目(持續更新中)🎄🎈
1.論文投稿指南——收藏|SCI論文投稿注意事項(提高命中率)
2.論文投稿指南——收藏|SCI論文怎么投?(Accepted)
3.論文投稿指南——收藏|SCI寫作投稿發表全流程
4.論文投稿指南——收藏|如何選擇SCI期刊(含選刊必備神器)
5.論文投稿指南——SCI選刊
6.論文投稿指南——SCI投稿各階段郵件模板
7.人工智能前沿——深度學習熱門領域(確定選題及研究方向)
8.人工智能前沿——2022年最流行的十大AI技術
9.人工智能前沿——未來AI技術的五大應用領域
10.人工智能前沿——無人自動駕駛技術
11.人工智能前沿——AI技術在醫療領域的應用
12.人工智能前沿——隨需應變的未來大腦
13.目標檢測算法——深度學習知識簡要普及
14.目標檢測算法——10種深度學習框架介紹
15.目標檢測算法——為什么我選擇PyTorch?
16.知識經驗分享——超全激活函數解析(數學原理+優缺點)
17.知識經驗分享——卷積神經網絡(CNN)
18.海帶軟件分享——Office 2021全家桶安裝教程(附報錯解決方法)
19.海帶軟件分享——日常辦公學習軟件分享(收藏)
20.論文投稿指南——計算機視覺 (Computer Vision) 頂會歸納
21.論文投稿指南——中文核心期刊
22.論文投稿指南——計算機領域核心期刊
23.論文投稿指南——中文核心期刊推薦(計算機技術)
24.論文投稿指南——中文核心期刊推薦(計算機技術2)
25.論文投稿指南——中文核心期刊推薦(計算機技術3)
26.論文投稿指南——中文核心期刊推薦(電子、通信技術)
27.論文投稿指南——中文核心期刊推薦(電子、通信技術2)
28.論文投稿指南——中文核心期刊推薦(電子、通信技術3)
29.論文投稿指南——中文核心期刊推薦(機械、儀表工業)
30.論文投稿指南——中文核心期刊推薦(機械、儀表工業2)
31.論文投稿指南——中文核心期刊推薦(機械、儀表工業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區)
41.【2】SCI易中期刊推薦——遙感圖像領域(中科院2區)
42.【3】SCI易中期刊推薦——人工智能領域(中科院1區)
43.【4】SCI易中期刊推薦——神經科學研究(中科院4區)
44.【5】SCI易中期刊推薦——計算機科學(中科院2區)
45.【6】SCI易中期刊推薦——人工智能&神經科學&機器人學(中科院3區)
46.【7】SCI易中期刊推薦——計算機 | 人工智能(中科院4區)
47.【8】SCI易中期刊推薦——圖像處理領域(中科院4區)
48.【9】SCI易中期刊推薦——工程技術-計算機:軟件工程(中科院4區)
49.【10】SCI易中期刊推薦——工程技術-計算機:人工智能(中科院2區)
🌴 持續更新中……
關于YOLOv5/v7改進及論文投稿可關注并留言博主的CSDN/QQ
>>>>>>一起交流!互相學習!共同進步!<<<<<<
總結
以上是生活随笔為你收集整理的目标检测算法——YOLOv7训练自己的数据集(保姆级教程)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微信小程序申请地理位置接口wx.getL
- 下一篇: (转)永磁同步电机工作原理(https: