yolov5训练自己的数据集(缺陷检测分类——看了就懂系列)

本文介绍了如何使用Yolov5训练自己的数据集,包括环境配置、数据准备、模型配置、预训练模型下载、训练过程以及推理与可视化。通过修改yaml配置文件、设置训练参数,可以训练针对8类目标的检测模型,并利用tensorboard进行训练过程的可视化。
摘要由CSDN通过智能技术生成

这里记录一下将yolov5用于训练自己的数据集,这里v5的github地址

Environment

本文是直接 pip install -r requirement.txt直接安装成功,如果不容易成功,就一个个安装即可。如果出现报错,多关注一下torch的版本即可。

Data preparation

label的格式:
<object-class> <x_center> <y_center> <width> <height>

举个🌰:
414_735_0.txt

7 0.503 0.499 0.098 0.451
7 0.465 0.633 0.033 0.053

 
 

数据集格式
data
├──coco.yaml
├──coco128.yaml
├──defect_data
   ├──images
      ├──train
      ├──val
   ├──labels
      ├──train
      ├──val
├──…

然后制作自己的defect.yaml配置文件(直接复制coco.yaml修改或者新建一个文件将一下代码copy进去):

train: ./data/defect_data/images/train  # absolute_path_train_img
val: ./data/defect_data/images/val  # absolute_path_val_img

nc: 8 # 类别数量

names: [‘quexian1’, ‘quexian2’, ... ‘quexian8’]

修改models/xxx.yaml,有s, m, l, x四个模型供选择,需要修改类别nc数目;同时最好把anchors也修改为自己数据对应的anchors(需要自己提前聚类),不改也可train。

Pretrained Model

建议爬梯子下载最新的预训练权重,这个repo经常更新,可能和以前的预训练模型不适应。下载好放在weights下,在train.py里修改相应路径。

Training

配置train.py

if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument('--weights', type=str, default='weights/yolov5s.pt', help='initial weights path')
    parser.add_argument('--cfg', type=str, default='models/yolov5s.yaml', help='model.yaml path')
    parser.add_argument('--data', type=str, default='data/defect.yaml', help='data.yaml path')
    parser.add_argument('--epochs', type=int, default=300)
    parser.add_argument('--batch-size', type=int, default=16, help='total batch size for all GPUs')
    parser.add_argument('--img-size', nargs='+', type=int, default=[640, 640], help='[train, test] image sizes')
    parser.add_argument('--device', default='0,1,2,3', help='cuda device, i.e. 0 or 0,1,2,3 or cpu')
    opt = parser.parse_args()

 
 

训练好的模型会被保存在./runs/train/exp3/weights/last.pt和best.pt

Inference

配置detect.py

if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument('--weights', nargs='+', type=str, default='runs/train/exp3/weights/last.pt', help='model.pt path(s)')
    parser.add_argument('--source', type=str, default='data/defect_data/images/val', help='source')  # file/folder, 0 for webcam
    parser.add_argument('--img-size', type=int, default=640, help='inference size (pixels)')
    parser.add_argument('--device', default='0,1,2,3', help='cuda device, i.e. 0 or 0,1,2,3 or cpu')
    opt = parser.parse_args()

 
 

如果需要inference 自己数据集原图大小,需要修改utils/dataset.py中

class LoadImages:  # for inference
		# Padded resize
        img = letterbox(img0, new_shape=self.img_size)[0]

修改为:

class LoadImages:  # for inference
		# Padded resize
        img = letterbox(img0, new_shape=(math.ceil(img0.shape[0]/32)*32, math.ceil(img0.shape[1]/32)*32))[0]

Visualization of Training

利用tensorboard进行可视化,训练开始会在主目录生成一个runs文件,利用tensorboard打开:
tensorboard --logdir=./runs

Thanks

欢迎评论,每天回复☼

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用YOLOv5训练自己的数据集进行缺陷检测,可以按照以下步骤进行操作: 1. 数据集准备:首先,需要准备自己的数据集。这包括收集并标注好的图像和对应的标签。标注可以使用lableimg等标注软件,标签格式可以是xml或其他格式。 2. 模型配置:接下来,需要配置YOLOv5的模型。可以根据自己的需求选择合适的模型结构和超参数。YOLOv5已经基于PyTorch框架实现,可以直接使用其提供的默认配置或进行自定义配置。 3. 数据预处理:在进行模型训练之前,需要对数据进行预处理。这包括对图像进行缩放、裁剪、增强等操作,以及对标签进行转换成模型可接受的格式。 4. 模型训练:使用准备好的数据集和配置好的模型,进行训练。可以使用YOLOv5提供的训练脚本进行训练,根据需要进行迭代训练,调整超参数等操作。训练过程中可以监控模型的性能指标,如损失曲线、PR曲线等。 5. 模型评估与优化:在训练完成后,可以对模型进行评估和优化。可以使用测试集评估模型的性能指标,如准确率、召回率等。如果模型表现不佳,可以尝试调整模型结构、增加训练数据、调整超参数等方法来优化模型的检测精度和效果。 综上所述,要使用YOLOv5训练自己的数据集进行缺陷检测,需要准备数据集,配置模型,进行数据预处理,进行模型训练,以及评估和优化模型的性能。这些步骤可以帮助您实现自己的缺陷检测任务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值