这篇博文主要记录了将bdd100k数据集整理成yolo模型的要求来训练。这里的数据格式并非官网的darknet格式,而是一般的模型格式:

  1. 以图片名作为TXT名称
  2. 将同一幅图中的label和对应的bounding box整理在同一个txt中。

bdd100k数据集介绍

1.Annotations

1、 道路目标边界框:10万张图片,其中:训练集7万,测试集2万,验证集1万
2、 可行驶区域:10万张图片
3、 车道线标记:10万张图片
4、 全帧实例分割:1万张图片
Annotation包含了被标记对象的源图像的URL、类别标签、大小(起始坐标、结束坐标、宽度和高度)、截断、遮挡和交通灯颜色等信息。

json文件解析(转换成YOLO数据集格式)

转换code

import json
#数据集中包含的10个类别
categorys = ['car', 'bus', 'person', 'bike', 'truck', 'motor', 'train', 'rider', 'traffic sign', 'traffic light']# 图片的分辨率
picture_width = 1282
picture_height = 720def parseJson(jsonFile):'''params:jsonFile -- BDD00K数据集的一个json标签文件return:返回一个列表的列表,存储了一个json文件里面的方框坐标及其所属的类,'''objs = []obj = []info = jsonFilename = info['name']objects = info['labels']for i in objects:if(i['category'] in categorys):obj.append(int(i['box2d']['x1']))obj.append(int(i['box2d']['y1']))obj.append(int(i['box2d']['x2']))obj.append(int(i['box2d']['y2']))obj.append(i['category'])objs.append(obj)obj = []return name, objs#test
file_handle = open('traindata.txt', mode='a')
f = open("/home/violet/Documents/dataset/bdd100k/label/train/bdd100k_labels_images_train.json") # json文件的绝对路径,换成自己的
info = json.load(f)
objects = info
n = len(objects)# 将左上右下坐标转换成 中心x,y以及w  h
def bboxtrans(box_x_min, box_y_min, box_x_max, box_y_max):x_center = (box_x_min + box_x_max) / (2 * picture_width)y_center = (box_y_min + box_y_max) / (2 * picture_height)width = (box_x_max - box_x_min) / (2 * picture_width)height = (box_y_max - box_y_min) / (2 * picture_height)return x_center, y_center, width, heightfor i in range(n):an = ""name, result = parseJson(objects[i])an = "./data/custom/images/train/" + name  # 这里我改成了图片的相对路径for j in range(len(result)):cls_id = categorys.index(result[j][4])x, y, w, h = bboxtrans(result[j][0], result[j][1], result[j][2], result[j][3])an = an + ' ' +str(cls_id) + ' '+str(x)+' '+str(y)+' '+str(w)+' '+str(h)an = an + '\n'file_handle.write(an)print(len(result))print(an)

数据整合code

with open('traindata.txt') as f:line = f.readline()while (line):data = line.strip().split()  # strip(): 删除前后空格、空行wf = open('./data/' + data[0][27:-4]+'.txt', 'a+')numofline = len(data) - 1for i in range(1, numofline, 5):for j in range(0, 5):idx = i + jwf.write(data[idx])  # class_index center_x cnter_y w hwf.write(' ')wf.write('\n')line = f.readline()

bdd100k数据集制作用于YOLOv3训练相关推荐

  1. 使用YOLOV7训练BDD100K数据集(数据格式转化+训练全流程)

    目录 1. 前言 1.1 BDD100K数据集详细介绍(此节可跳过) 1.2 BDD100K数据集简要介绍 1.3 下载必要文件 2. bdd100k转yolo数据集格式 2.1 为什么要转格式 2. ...

  2. VIA标注自己的数据集,用于MASK-RCNN训练

    最近在看MASK-RCNN,想动手训练自己的数据集.话不多说,开工! 第一步:标注数据 这里选择的是VIA,一个网页版的工具,很方面,可以标注掩码.下载点这里. 下载完成后,解压运行via.html ...

  3. BDD100K数据集制作的流程(1)

    第一步:json=>csv 利用json_to_csv.ipynb把路径"G:/Data/bdd100k_info/bdd100k/info/100k/val"和" ...

  4. BDD100k数据集训练YOLOv5

    BDD100k数据集标注转YOLO格式: # -*- coding: utf-8 -*- # @Author: lay # @Time: 2022/3/30 上午12:03""&q ...

  5. ubuntu16.04下使用YOLOV3训练自己做的VOC数据集(VOC数据集制作+模型训练步骤+训练参数解析和问题解决+训练日志可视化(loss、IOU)+模型测试(单张、摄像头、批量测试))

    前序 1.环境配置 请自行参考其他博客 本机环境 ubuntu16.04 python3 英伟达显卡驱动:nvidia-396 OpenCV3.4.5 CUDNN7.0.5 CUDA9.0 2.ubu ...

  6. 【深度学习】制作VOC2007数据集用于Faster-RCNN训练

    制作VOC2007数据集用于Faster-RCNN训练:VOC2007格式是faster-RCNN中官方给出的用于训练的数据集,把它下载下来用frcnn/tool里的训练程序跑一跑就可以得到自己的训练 ...

  7. 建立自己的voc数据集_制作自己的数据集(VOC2007格式)用于Faster-RCNN训练

    一.数据集文件夹 新建一个文件夹,用来存放整个数据集,或者和voc2007一样的名字:VOC2007 然后在文件夹里面新建如下文件夹: 二.将训练图片放到JPEGImages 将所有的训练图片放到该文 ...

  8. yolov3识别探地雷达仿真数据(数据集制作,训练,测试)

    yolov3识别探地雷达仿真数据 利用yolov3目标检测的功能对探地雷达数据进行检测.具有一定的研究意义. 环境准备:ubuntu18.04,darknet平台,python3.7,CUDA10.0 ...

  9. 使用YOLOv3训练BDD100K数据集之标签格式转换

    BDD100K数据集介绍: BDD100K的道路目标检测部分总共有10类:bus,traffic light,traffic sign,person,bike,truck,moter,car,trai ...

最新文章

  1. python类实例化 输入参数名字 下划线_Python 的类的下划线命名有什么不同?
  2. 【转载】用 Pyinstaller 来打包 + 解决打包结果过大问题
  3. Windows 安装 NoneBot2
  4. Uninstall Office 2016 for Mac
  5. PowerShell挂起功能--Confirm参数
  6. 【图文】如何在centos上安装tomcat
  7. APPLE笔记本电脑软件测试,Apple Mac 实验室
  8. 通信服务器系统安装,pxe网络安装操作系统
  9. sql示例_PARSEONLY SQL命令概述和示例
  10. STL源码剖析学习十四:算法之set相关算法
  11. JFinal开发8个常见问题
  12. Java编程思想基本介绍
  13. 【MapGIS必备】常见问题处理(第十四期)
  14. 2G/4G通信网络基本术语
  15. 小程序各领域的代表出来溜大街了
  16. Markdown语法整理(详细版)
  17. 电子电气架构——Vector ODX诊断数据库解决方案和操作指南
  18. 关于移动宽带连不上某些网站的解决办法
  19. 2007热点技术职位排行及点析
  20. SQL Server 安装问题:以前的某个程序安装已在安装计算机上创建挂起的文件操作

热门文章

  1. 福昕阅读器 for Mac官方中文版
  2. Qt QDialog更换图标icon
  3. 如何在ppt中插入另一张ppt 的内容
  4. 春节共享手抄报素材怎么整理?
  5. API 设计好文收集
  6. 如何判断域名是否被墙?域名被墙怎么解决?
  7. oracle crs 0184,CRS-0184: Cannot communicate with the CRS daemon
  8. 万字长文剖析Dapp生态,《2019 Dapp行业报告》重磅发布
  9. cad版本转换器哪个好用?说两种转换思路
  10. 习题 11.1 将例11.1的程序片断补充和改写成一个完整、正确的程序,用公用继承方式。在程序中应包括输入数据的函数,在程序运行时输入num,name,sex,age,addr的值。