目录

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.代码准备

<yolov5代码下载至本地并上传至mobaxterm:

<文件夹地址:

例:/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:<如图

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

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

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 osdef 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 ydef 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':continuelt, 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 / 2cy = float(ly) + height / 2  # bounding box中心点img = cv2.imread(path + filename)if img is None:  # 自动删除失效图片(下载过程有的图片会存在无法读取的情况)os.remove(os.path.join(path, filename))continuewidth = 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文件夹,复制粘贴图中红色框框文件,修改命名像绿框框一样自己看得懂的名字。

<修改内容如图

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

3.开始炼丹(训练)

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

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

<右键run!开始炼丹

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

3.1 炼丹over

<炼丹结果如图:

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

/home/li/~Pycode/yolov5-master/runs/train/exp30/--------------<be like

3.2炼丹过程tensorboard可视化

3.2.1利用MobaXterm可视化Tensorboard

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

<然后按照如图所示填写

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

<创建好后如图,点击start

3.2.2开启tensorboard

< 输入指令行:

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

< 键入指令行:

tensorboard --logdir="runs/train"

<成功启动

<浏览器(建议chrome

<访问tensorboard

http://127.0.0.1:16006/

-------------------------------------------炼丹至此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~------------------------------------------------------

linux-mobaxterm-yolov5训练数据集ccpd--无数踩雷后相关推荐

  1. YOLOV5训练数据集P、R、mAP等均为0的解决方案

    使用YOLOV5训练数据集时,P.R等值均为0 最近在用YOLOV5训练自己的数据集,执行了十几个epochs之后,epoch的主要参数,比如box,obj,cls,labels等均为nan或0,即没 ...

  2. 基于深度学习的农作物叶片病害检测系统(UI界面+YOLOv5+训练数据集)

    摘要:农作物叶片病害检测系统用于智能检测常见农作物叶片病害情况,自动化标注.记录和保存病害位置和类型,辅助作物病害防治以增加产值.本文详细介绍基于YOLOv5深度学习模型的农作物叶片病害检测系统,在介 ...

  3. 基于深度学习的瓶子检测软件(UI界面+YOLOv5+训练数据集)

    摘要:基于深度学习的瓶子检测软件用于自动化瓶子检测与识别,对于各种场景下的塑料瓶.玻璃瓶等进行检测并计数,辅助计算机瓶子生产回收等工序.本文详细介绍深度学习的瓶子检测软件,在介绍算法原理的同时,给出P ...

  4. 水果新鲜程度检测系统(UI界面+YOLOv5+训练数据集)

    摘要:水果新鲜程度检测软件用于检测水果新鲜程度,利用深度学习技术识别腐败或损坏的水果,以辅助挑拣出新鲜水果,支持实时在线检测.本文详细介绍水果新鲜程度检测系统,在介绍算法原理的同时,给出Python的 ...

  5. YOLOV5训练数据集过程中特殊问题记录

    项目场景: yolov5训练GX数据集 问题描述: 运行train.py Traceback (most recent call last):File "/home/milk/yolov52 ...

  6. 批量下载百度搜索图片+labelimg制作自己的数据集+转换至Yolo-v5训练数据集

    由于课题需要,需要自己制作数据集进行训练,目前是自己制作的第二个数据集,发现有某些细节已经忘记,记录备忘,同时为后来者提供借鉴.文章以car-tank数据集做为例子介绍 整体流程: 1.准备数据:从各 ...

  7. Yolo实用指南(step by step)之三yolov5训练自己的数据集

    关于yolov5训练自己的数据集的文章网上已经有一大把,自己之前也摸索了数据标注有一阵子,可一直迟迟未动手,感觉对原理不熟悉,很多东西浮光掠影有些肤浅,思来想去还是花了整整一天实践一下吧,毕竟这是基础 ...

  8. YOLOV5训练自己的数据集(踩坑经验之谈)

    导言 很惭愧,来csdn已经三年多了,却一直都在"白嫖"各位大神的经验与总结.这几天也一直在csdn里学习YOLOv3与YOLOv5训练数据集的具体步骤,几经波折终于实现了很好的效 ...

  9. YOLOv5训练数据提示No labels found、with_suffix使用、yolov5训练时出现WARNING: Ignoring corrupted image and/or label

    YOLOv5训练数据提示No labels found[亲测yolo加载label文件只需要修改img2label_paths函数改变就可以加载到label文件了] 仔细看下数据加载.处理的文件dat ...

最新文章

  1. Linux下显示前10个占用空间最大的文件或目录命令
  2. 指定位数%-m.nf与%m.nf的异同
  3. java 证书管理系统_JAVA基础应用:单机版管理系统源代码
  4. OpenCASCADE:函数机制的使用
  5. java: command not found_/bin/bash: java: command not found 问题解决
  6. iPhone 的 Push(推送通知)功能原理浅析
  7. 数论一之定理证明——裴蜀/威尔逊/费马/扩展欧几里得/[扩展]欧拉/[扩展]中国剩余定理,欧拉函数,逆元,剩余系,筛法
  8. FD.io VPP 20.05 官方文档 总目录:用户文档+开发文档+命令行
  9. Android开发网
  10. python中startswith()函数的用法
  11. 调用企业微信API发送文本,图片,文件消息
  12. 树莓派zero 2w i2c操作 rda5807收音机芯片记录(电台差转站点远程监听可行性探讨)
  13. [bzoj4453]cys就是要拿英魂!
  14. 10 系统建模语言SysML——参数图
  15. codelite14中文语言包_Windows下CodeLite支持中文的正确设置方法
  16. 从LCN的两阶段提交到TCC补偿事务方案
  17. CRI HITFM 88.7的网络电台
  18. 消息队列应用与原理剖析
  19. 两个正态随机向量不相关就意味着这两个随机向量独立?
  20. chrome打开指定网址

热门文章

  1. JavaScript的三种弹出提示框(alert、confirm、prompt)
  2. LoadRunner11录制无法打开IE的解决办法
  3. 微博评论情感分析(NLP,LSTM)
  4. Warshall算法求有向图的传递闭包
  5. java 打印图片_java实现图片的打印
  6. 日常使用的二维码识别原理
  7. oracle.dataaccess 连接池,Oracle ManagedDataAccess - 连接请求超时 - 合并
  8. c语言如何用串口发送数据类型,串口通信中的int float型数据的处理和发送
  9. JPEG压缩算法步骤原理
  10. [勇者闯LeetCode] 189. Rotate Array