linux-mobaxterm-yolov5训练数据集ccpd--无数踩雷后

目录

1.代码准备

2.ccpd数据集准备

2.1ccpd数据集源下载至本地(占用12G左右内存,建议下载至D盘或移动硬盘):

2.2在数据集目录下建立两个文件夹test_datasest/ccpd_train:<如图

2.3ccpd转yolov5目标格式

(1)将数据集图片6:2:2分为训练集、验证集、测试集

(2)将x文件夹下图片命名信息提取切割,存储为txt文档,并存储至x文件夹

3.开始炼丹(训练)

3.1 炼丹over

3.2炼丹过程tensorboard可视化

3.2.1利用MobaXterm可视化Tensorboard

3.2.2开启tensorboard

4.用于检测目标


-----------------------------------------------使用mobaxterm!!!----------------------------------------------------

目录

1.代码准备

2.ccpd数据集准备

2.1ccpd数据集源下载至本地(占用12G左右内存,建议下载至D盘或移动硬盘):

2.2在数据集目录下建立两个文件夹images、labels:<如图

2.3ccpd转yolov5目标格式

(1)将数据集图片分为train、val两个文件夹

(2)将x文件夹下图片命名信息提取切割,存储为txt文档,并存储至x文件夹

(3)ccpd文件内txt与jpg文件分割:

(4)删除图片文件夹中生成的.txt文件

(5)最最最后一步!

3.开始炼丹(训练)

3.1 炼丹over

3.2炼丹过程tensorboard可视化

3.2.1利用MobaXterm可视化Tensorboard

3.2.2开启tensorboard

4.用于检测目标


1.代码准备

<文件夹地址:

       例:/home/li/~Pycode/

https://github.com/ultralytics/yolov5(建议进入github)

------<本人常用p/i/g/c/h/a>

2.ccpd数据集准备

2.1ccpd数据集源下载至本地(占用12G左右内存,建议下载至D盘或移动硬盘):

https://github.com/detectRecog/CCPD(建议进入github)

------<本人常用p/i/g/c/h/a>

<数据集在本地解压(本地解压更方便点)

<将解压后数据集文件上传至mobaxterm服务器:

<文件夹地址:

       例:/home/li/~Pycode/yolov5-master/data/

2.2在数据集目录下建立两个文件夹test_datasest/ccpd_train:<如图

linux-mobaxterm-yolov5训练数据集ccpd--无数踩雷后_第1张图片

 在ccpd_train目录下建立两个文件夹images/labels:<如图

linux-mobaxterm-yolov5训练数据集ccpd--无数踩雷后_第2张图片

  <两文件夹下分别创建两个文件夹train、val:<如图

linux-mobaxterm-yolov5训练数据集ccpd--无数踩雷后_第3张图片

2.3ccpd转yolov5目标格式

(1)将数据集图片6:2:2分为训练集、验证集、测试集

----------<修改路径:第六行:os.lisdir:自己的数据集文件夹

-------------------------<第13、14、15行:traindir:images/train所在地址

                      ---------------------------valdir:images/val所在地址

                      ---------------------------detect:检测所用图片所在地址

-------------------------<第16行:同第六行

import shutil
from shutil import copy2
trainfiles = os.listdir("/home/li/~Pycode/yolov5master/data/CCPD2019.tar/ccpd_fn/")
                  #(图片文件夹)
num_train = len(trainfiles)
print( "num_train: " + str(num_train) )
index_list = list(range(num_train))
print(index_list)
random.shuffle(index_list)
num = 0
trainDir = "/home/li/~Pycode/yolov5-master/data/ccpd_train/images/train/"
         #(将图片文件夹中的6份放在这个文件夹下)
validDir = "/home/li/~Pycode/yolov5-master/data/ccpd_train/images/val/"
         #(将图片文件夹中的2份放在这个文件夹下)
detectDir = "/home/li/~Pycode/yolov5-source/data/test_datasets/images/"
         #(将图片文件夹中的2份放在这个文件夹下)
for i in index_list:
    fileName = os.path.join("/home/li/~Pycode/yolov5master/data/CCPD2019.tar/ccpd_fn/", trainfiles[i])
    if num < num_train*0.6:
        print(str(fileName))
        copy2(fileName, trainDir)
    elif num < num_train*0.8:
        print(str(fileName))
        copy2(fileName, detectDir)
    else:
        copy2(fileName, validDir)
    num += 1

(2)将x文件夹下图片命名信息提取切割,存储为txt文档,并存储至x文件夹

---------<只修改 train/val 路径为图片所在路径!!!!!train、val两个文件夹!!!

import shutil
import cv2
import os

def txt_file(img_path):
    x = img_path.split("/", 9)
    if x[8] == "train":
        y = '/'.join(x[0:7]) + '/labels/' + 'train/'
    else:
        y = '/'.join(x[0:7]) + '/labels/' + 'val/'
    return y


def txt_translate(path, txt_path):
    for filename in os.listdir(path):
        print(filename)

        list1 = filename.split("-", 3)  # 第一次分割,以减号'-'做分割
        subname = list1[2]
        list2 = filename.split(".", 1)
        subname1 = list2[1]
        if subname1 == 'txt':
            continue
        lt, rb = subname.split("_", 1)  # 第二次分割,以下划线'_'做分割
        lx, ly = lt.split("&", 1)
        rx, ry = rb.split("&", 1)
        width = int(rx) - int(lx)
        height = int(ry) - int(ly)  # bounding box的宽和高
        cx = float(lx) + width / 2
        cy = float(ly) + height / 2  # bounding box中心点

        img = cv2.imread(path + filename)
        if img is None:  # 自动删除失效图片(下载过程有的图片会存在无法读取的情况)
            os.remove(os.path.join(path, filename))
            continue
        width = width / img.shape[1]
        height = height / img.shape[0]
        cx = cx / img.shape[1]
        cy = cy / img.shape[0]

        txtname = filename.split(".", 1)
        txtfile = txt_path + txtname[0] + ".txt"
        # 绿牌是第0类,蓝牌是第1类
        with open(txtfile, "w") as f:
            f.write(str(0) + " " + str(cx) + " " + str(cy) + " " + str(width) + " " + str(height))


if __name__ == '__main__':
    # 修改此处地址
    trainDir = "/home/li/~Pycode/yolov5-master/data/ccpd_train/images/train/"
    validDir = "/home/li/~Pycode/yolov5-master/data/ccpd_train/images/val/"
    # 该处修改为图片存储地址
    txt_path1 = txt_file(trainDir)
    txt_path2 = txt_file(validDir)
    txt_translate(trainDir, txt_path1)
    txt_translate(validDir, txt_path2)

最后一步!

<打开yolov5文件夹下data文件夹,复制粘贴图中红色框框文件,修改命名像绿框框一样自己看得懂的名字。

linux-mobaxterm-yolov5训练数据集ccpd--无数踩雷后_第4张图片

 <修改内容如图

linux-mobaxterm-yolov5训练数据集ccpd--无数踩雷后_第5张图片

-----------------------至此!!!!-----------数据集准备完毕---鼓掌鼓掌~--------------------------------------_

3.开始炼丹(训练)

--------<修改如图默认参数,--weights:  default='  '根据需要选择,这里选用yolov5s.pt

-----------<--data : 如图修改   default

linux-mobaxterm-yolov5训练数据集ccpd--无数踩雷后_第6张图片

 <右键run!开始炼丹

linux-mobaxterm-yolov5训练数据集ccpd--无数踩雷后_第7张图片

<这个时候建议去厕所思考会儿人生----<如果网速可以,腿麻的时候回来差不多结束了

3.1 炼丹over

<炼丹结果如图:

linux-mobaxterm-yolov5训练数据集ccpd--无数踩雷后_第8张图片

<炼丹过程自动存储在文件夹路径:

                 /home/li/~Pycode/yolov5-master/runs/train/exp30/--------------

linux-mobaxterm-yolov5训练数据集ccpd--无数踩雷后_第9张图片

3.2炼丹过程tensorboard可视化

3.2.1利用MobaXterm可视化Tensorboard

<如下图,红色箭头Tool -----

linux-mobaxterm-yolov5训练数据集ccpd--无数踩雷后_第10张图片

linux-mobaxterm-yolov5训练数据集ccpd--无数踩雷后_第11张图片

<然后按照如图所示填写

-----------------<本地端号、服务器IP、端号、用户名.........

linux-mobaxterm-yolov5训练数据集ccpd--无数踩雷后_第12张图片

 <创建好后如图,点击start

linux-mobaxterm-yolov5训练数据集ccpd--无数踩雷后_第13张图片

3.2.2开启tensorboard

< 输入指令行:

cd "/home/li/~Pycode/yolov5-master/"

linux-mobaxterm-yolov5训练数据集ccpd--无数踩雷后_第14张图片

< 键入指令行:

tensorboard --logdir="runs/train"

<成功启动

linux-mobaxterm-yolov5训练数据集ccpd--无数踩雷后_第15张图片

<浏览器(建议chrome

<访问tensorboard

http://127.0.0.1:16006/

linux-mobaxterm-yolov5训练数据集ccpd--无数踩雷后_第16张图片

 -------------------------------------------炼丹至此over-----------撒花撒花--------------------------------------------

4.用于检测目标

<将需要检测的图片,在data/images文件夹下保存

<打开yolov5文件夹下的 detect.py文件

  -----------------<--weights:   default=炼丹过程最优结果:

---------------存储地址:"/home/li/~Pycode/yolov5-master/runs/train/exp30/weights/best.pt"

------------------<--source:     default=需要检测的图片路径

<右键run~~~,等待运行结束!

---------------检测结果保存地址:"/home/li/~Pycode/yolov5-master/runs/detect/"

----------------------------------------ccpd-----yolov5-------over~------------------------------------------------------

你可能感兴趣的:(python)