YoloV5 Crack500 裂缝语义识别 训练自己的数据集

本文介绍了如何从GitHub项目中克隆RizwanMunawar的YOLOv7-instancesegmentation代码,并详细说明了在Windows+Anaconda环境中设置开发环境,包括创建虚拟环境、数据集的准备(包括文件结构、配置文件和格式转换)、常见问题及解决方案。
摘要由CSDN通过智能技术生成

简单记录一下,把项目git下来后 :GitHub - RizwanMunawar/yolov7-segmentation: YOLOv7 Instance Segmentation using OpenCV and PyTorchicon-default.png?t=N7T8https://github.com/RizwanMunawar/yolov7-segmentation

0.开发环境

Windows+Anaconda

建立虚拟环境,再装包

1.准备数据集+后续步骤

1.1 文件目录

建一个train,再建一个test文件夹

1.2 yaml配置文件

新建custom.yaml

train: ./data/train/
val: ./data/test/
# number of classes
nc: 2
# class names
names: [ 'background', 'crack' ]

1.3 数据集转格式

将Crack500数据集中的mask.png格式转化为YOLOv8.txt格式工具_mask转化为yolo格式-CSDN博客

Crack500的验证集是图片,Yolo需要txt格式的,转一下

 新建一个convert.py文件,改两处路径

import copy
import cv2
import os
import shutil
import numpy as np

###!!!!!!!改这里1
path = "./data/test/labels"
files = os.listdir(path)
for file in files:
    name = file.split('.')[0]
    file_path = os.path.join(path,name+'.png')
    img = cv2.imread(file_path)
    # img = cv2.imread(path)
    H,W=img.shape[0:2]
    print(H,W)

    #img1 = cv2.imread("F:/Deep_Learning/Model/YOLOv8_Seg/Dataset/images/20160222_080933_361_1.jpg")

    gray_img = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
    ret,bin_img = cv2.threshold(gray_img,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)
    cnt,hit = cv2.findContours(bin_img,cv2.RETR_TREE,cv2.CHAIN_APPROX_TC89_KCOS)

    #cv2.drawContours(img1,cnt,-1,(0,255,0),5)

    cnt = list(cnt)
###!!!!!!!改这里2
    f = open("./data/test/newlabels/{}.txt".format(file.split(".")[0]), "a+")
    for j in cnt:
        result = []
        pre = j[0]
        for i in j:
            if abs(i[0][0] - pre[0][0]) > 1 or abs(i[0][1] - pre[0][1]) > 1:# 在这里可以调整间隔点,我设置为1
                pre = i
                temp = list(i[0])
                temp[0] /= W
                temp[1] /= H
                result.append(temp)

                #cv2.circle(img1,i[0],1,(0,0,255),2)

        print(result)
        print(len(result))

        # if len(result) != 0:

        if len(result) != 0:
            f.write("0 ")
            for line in result:
                line = str(line)[1:-2].replace(",","")
                # print(line)
                f.write(line+" ")
            f.write("\n")
    f.close()

    #cv2.imshow("test",img1)
    # while True:
    #     key = cv2.waitKey(1)  # 等待 1 毫秒,返回键盘按键的 ASCII 值
    #     if key == ord('q'):  # 如果按下 'q' 键,退出循环
    #         break
    #
    # cv2.destroyAllWindows()  # 关闭窗口

1.4 数据集改名字

要求原图和标签图文件名相同,所以要删掉_mask后缀

再新建个delete.py,改一处路径(可能需要用两次)

import os  
  
# 指定要操作的目录路径  
directory_path = './data/test/labels123'  
  
# 遍历目录中的所有文件和子目录  
for filename in os.listdir(directory_path):  
    # 确保是文件而不是目录  
    if os.path.isfile(os.path.join(directory_path, filename)):  
        # 获取文件的基本名和扩展名  
        base, ext = os.path.splitext(filename)  
          
        # 检查文件名长度是否足够删除五个字符  
        if len(base) >= 3:  
            # 删除文件名倒数五个字符  
            new_base = base[:-5]  
            # 构建新的文件名  
            new_filename = new_base + ext  
            # 重命名文件  
            old_file_path = os.path.join(directory_path, filename)  
            new_file_path = os.path.join(directory_path, new_filename)  
            os.rename(old_file_path, new_file_path)  
            print(f"Renamed '{filename}' to '{new_filename}'")  
        else:  
            print(f"Skipping '{filename}' because it's too short to remove 3 characters.")  
  
print("All files have been renamed.")

1.5 照git项目的readme继续步骤就可以了

2.可能的问题

2.1 FreeTypeFont‘ object has no attribute ‘getsize‘报错解决

把Pillow卸载了重装 Pillow 7.1.2

2.2 AttributeError: module ‘numpy‘ has no attribute ‘int‘

把numpy卸载了重装 numpy 1.18.5

2.3 问题总结

在requirements.txt文件中,可以看到安装的时候都是>=,其实可以全改成==就ok了

# Base ----------------------------------------
matplotlib>=3.2.2
numpy>=1.18.5
opencv-python>=4.1.1
Pillow>=7.1.2
PyYAML>=5.3.1
requests>=2.23.0
scipy>=1.4.1
torch>=1.7.0
torchvision>=0.8.1
tqdm>=4.64.0
protobuf<=3.21.6

# Logging -------------------------------------
tensorboard>=2.4.1
# wandb
# clearml

# Plotting ------------------------------------
pandas>=1.1.4
seaborn>=0.11.0

#Tracking .....................................
filterpy
scikit-image

# Export --------------------------------------
# coremltools>=5.2  # CoreML export
# onnx>=1.9.0  # ONNX export
# onnx-simplifier>=0.4.1  # ONNX simplifier
# nvidia-pyindex  # TensorRT export
# nvidia-tensorrt  # TensorRT export
# scikit-learn==0.19.2  # CoreML quantization
# tensorflow>=2.4.1  # TFLite export (or tensorflow-cpu, tensorflow-aarch64)
# tensorflowjs>=3.9.0  # TF.js export
# openvino-dev  # OpenVINO export

# Extras --------------------------------------
ipython  # interactive notebook
psutil  # system utilization
thop>=0.1.1  # FLOPs computation
# albumentations>=1.0.3
# pycocotools>=2.0  # COCO mAP
# roboflow

  • 19
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

做一瓶独立的花露水

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值