教程参考:
b导:
(52条消息) 睿智的目标检测61——Pytorch搭建YoloV7目标检测平台_pytorch yolov7_Bubbliiiing的博客-CSDN博客Predict-预测过程的前处理以及后处理_哔哩哔哩_bilibili
训练集-测试集-验证集
(23条消息) 训练集,验证集,测试集分别是什么_训练集验证集测试集_又决定放弃的博客-CSDN博客
(23条消息) 【深度学习】训练集、测试集和验证集_训练集测试集验证集_莫克_Cheney的博客-CSDN博客
训练集(Training Set):用于训练模型。
验证集(Validation Set):用于调整和选择模型--调整模型参数
测试集(Test Set):用于评估最终的模型。
卷积-下采样-上采样
(25条消息) 卷积和池化的区别、图像的上采样(upsampling)与下采样(subsampled)_5行5列的原图像怎么子采样池化_liulina603的博客-CSDN博客
锚框-先验框概念及其生成
(25条消息) 锚框(anchor box)/先验框(prior bounding box)概念介绍及其生成_是苍啊!的博客-CSDN博客
(24条消息) 目标检测中的先验框(Anchor)_热血厨师长的博客-CSDN博客
对图像的像素框进行遍历,数据量太大,先进行下采样处理,降低图像的分辨率,得到图像的特征图,对特征图上的每个特征点取三个先验框,通过对先验框中心位置的偏移以及其宽高的变化得到预测框,与目标框对比,通过设定Iou阈值选出预测框,针对一个目标框,我们生成很多预测框并选取了一个IOU最大的预测框。通过分类头对这个先验框的类别做出预测,通过回归头归一化处理对先验框的位置和大小进行修改。
YOLOV7代码中的一些参数
(23条消息) YOLOV7开源代码讲解--训练参数解释_yolov7代码_爱吃肉的鹏的博客-CSDN博客
batch_size
(23条消息) 机器学习中的batch_size是什么?_batch size_勤奋的大熊猫的博客-CSDN博客
(23条消息) Batch Size的理解_Altoria.的博客-CSDN博客
例: 训练集有1000个样本,batch_size=10,那么训练完整个样本集需要:
100次iteration,1次epoch。
batch_size(批大小)即为一次传递给程序用以训练的样本个数
epoch表示训练了多少轮---1个epoch表示将所有的样本训练一轮
iteration表示训练多少batch_size批次的样本--1个iteration等于使用batchsize个样本训练一次;
基于Pytorch搭建YoloV7目标检测平台实验步骤:
参考:
源码下载GIthub地址:https://github.com/bubbliiiing/yolov7-pytorch
博客详解地址:https://blog.csdn.net/weixin_44791964/article/details/125827160
视频详解地址:【Pytorch 搭建自己的YoloV7目标检测平台(Bubbliiiing 源码详解 训练 预测)】 https://www.bilibili.com/video/BV1VG411u79Z/?share_source=copy_web&vd_source=549092901ba1e1ff6d85ee27f379bf95
搭环境--连接服务器
使用WinSCP在服务器与电脑之间进行文件的进行文件的上传和下载
使用电脑系统自带的--远程桌面连接--与服务器连接
搭环境--pycharm安装
使用服务器上的pycharm
搭环境--yolov7项目下载
在github上下载yolov7项目
使用labelimg制作自己的数据集,并添加到项目中
将一个包含JPG和XML的混合文件夹分类成JPG和XML两个单独的子文件夹
说我tensorflow报错,啊。。。。原来我没有显卡
没有显卡,咱用服务器,难不倒咱,哈哈,咱终于克服了服务器的难题
数据集
准备好数据集,并使用labelimg标注
将数据集存放在项目中的VOCdevkit/VOC2007文件下
将原图存放在JPEGImages文件夹中
将标注的xml文件存放在Annotations文件夹中
注:原图和标注的xml文件必须一一对应
跑实验
训练自己的数据集
从根目录下的voc_annotation.py文件中修改参数:
annotation_mode = 0 ---生成ImageSets里面的txt文件,对数据集分类:训练集train.txt,测试集test.txt,验证集val.txt
---以及训练用的2007_train.txt、2007_val.txt
classes_path = 存放数据标注类型的分类(位于model_data文件夹下的新建的cls_classes.txt
在根目录下的train.py中包含各种参数
各种参数的解析:【Pytorch 搭建自己的YoloV7目标检测平台(Bubbliiiing 源码详解 训练 预测)】 https://www.bilibili.com/video/BV1VG411u79Z/?p=10&share_source=copy_web&vd_source=549092901ba1e1ff6d85ee27f379bf95
下载预训练权重文件
在train.py中修改 model_path = 'model_data/yolov7_weights.h5' 表示模型的预训练权重,模型的预训练权重对不同数据集是通用的,因为特征是通用的。在训练的时候使用预训练权重文件,不用的话主干部分的权值太过随机,特征提取效果不明显,网络训练的结果也不会好。
修改训练轮次的参数
Freeze_Epoch = 20
UnFreeze_Epoch = 50
运行voc_annotation.py
生成生成ImageSets里面的txt文件,和2007_train.txt、2007_val.txt
修改根目录下的yolo.py中的参数,利用训练好的模型进行预训练
跑实验后,即运行voc_annotation.py后,在根目录下的logs文件夹中生成训练好的权值文件,
修改model_path参数指向上述权值文件
修改classes_path,使其指向存放数据标注类型的分类文件(位于model_data文件夹下的新建的cls_classes.txt
cuda的参数修改,有无GPU