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.代码准备
<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--无数踩雷后相关推荐
- YOLOV5训练数据集P、R、mAP等均为0的解决方案
使用YOLOV5训练数据集时,P.R等值均为0 最近在用YOLOV5训练自己的数据集,执行了十几个epochs之后,epoch的主要参数,比如box,obj,cls,labels等均为nan或0,即没 ...
- 基于深度学习的农作物叶片病害检测系统(UI界面+YOLOv5+训练数据集)
摘要:农作物叶片病害检测系统用于智能检测常见农作物叶片病害情况,自动化标注.记录和保存病害位置和类型,辅助作物病害防治以增加产值.本文详细介绍基于YOLOv5深度学习模型的农作物叶片病害检测系统,在介 ...
- 基于深度学习的瓶子检测软件(UI界面+YOLOv5+训练数据集)
摘要:基于深度学习的瓶子检测软件用于自动化瓶子检测与识别,对于各种场景下的塑料瓶.玻璃瓶等进行检测并计数,辅助计算机瓶子生产回收等工序.本文详细介绍深度学习的瓶子检测软件,在介绍算法原理的同时,给出P ...
- 水果新鲜程度检测系统(UI界面+YOLOv5+训练数据集)
摘要:水果新鲜程度检测软件用于检测水果新鲜程度,利用深度学习技术识别腐败或损坏的水果,以辅助挑拣出新鲜水果,支持实时在线检测.本文详细介绍水果新鲜程度检测系统,在介绍算法原理的同时,给出Python的 ...
- YOLOV5训练数据集过程中特殊问题记录
项目场景: yolov5训练GX数据集 问题描述: 运行train.py Traceback (most recent call last):File "/home/milk/yolov52 ...
- 批量下载百度搜索图片+labelimg制作自己的数据集+转换至Yolo-v5训练数据集
由于课题需要,需要自己制作数据集进行训练,目前是自己制作的第二个数据集,发现有某些细节已经忘记,记录备忘,同时为后来者提供借鉴.文章以car-tank数据集做为例子介绍 整体流程: 1.准备数据:从各 ...
- Yolo实用指南(step by step)之三yolov5训练自己的数据集
关于yolov5训练自己的数据集的文章网上已经有一大把,自己之前也摸索了数据标注有一阵子,可一直迟迟未动手,感觉对原理不熟悉,很多东西浮光掠影有些肤浅,思来想去还是花了整整一天实践一下吧,毕竟这是基础 ...
- YOLOV5训练自己的数据集(踩坑经验之谈)
导言 很惭愧,来csdn已经三年多了,却一直都在"白嫖"各位大神的经验与总结.这几天也一直在csdn里学习YOLOv3与YOLOv5训练数据集的具体步骤,几经波折终于实现了很好的效 ...
- YOLOv5训练数据提示No labels found、with_suffix使用、yolov5训练时出现WARNING: Ignoring corrupted image and/or label
YOLOv5训练数据提示No labels found[亲测yolo加载label文件只需要修改img2label_paths函数改变就可以加载到label文件了] 仔细看下数据加载.处理的文件dat ...
最新文章
- Linux下显示前10个占用空间最大的文件或目录命令
- 指定位数%-m.nf与%m.nf的异同
- java 证书管理系统_JAVA基础应用:单机版管理系统源代码
- OpenCASCADE:函数机制的使用
- java: command not found_/bin/bash: java: command not found 问题解决
- iPhone 的 Push(推送通知)功能原理浅析
- 数论一之定理证明——裴蜀/威尔逊/费马/扩展欧几里得/[扩展]欧拉/[扩展]中国剩余定理,欧拉函数,逆元,剩余系,筛法
- FD.io VPP 20.05 官方文档 总目录:用户文档+开发文档+命令行
- Android开发网
- python中startswith()函数的用法
- 调用企业微信API发送文本,图片,文件消息
- 树莓派zero 2w i2c操作 rda5807收音机芯片记录(电台差转站点远程监听可行性探讨)
- [bzoj4453]cys就是要拿英魂!
- 10 系统建模语言SysML——参数图
- codelite14中文语言包_Windows下CodeLite支持中文的正确设置方法
- 从LCN的两阶段提交到TCC补偿事务方案
- CRI HITFM 88.7的网络电台
- 消息队列应用与原理剖析
- 两个正态随机向量不相关就意味着这两个随机向量独立?
- chrome打开指定网址
热门文章
- JavaScript的三种弹出提示框(alert、confirm、prompt)
- LoadRunner11录制无法打开IE的解决办法
- 微博评论情感分析(NLP,LSTM)
- Warshall算法求有向图的传递闭包
- java 打印图片_java实现图片的打印
- 日常使用的二维码识别原理
- oracle.dataaccess 连接池,Oracle ManagedDataAccess - 连接请求超时 - 合并
- c语言如何用串口发送数据类型,串口通信中的int float型数据的处理和发送
- JPEG压缩算法步骤原理
- [勇者闯LeetCode] 189. Rotate Array