# coco voc数据集转yolo数据集 **Repository Path**: luodewen/toYolo ## Basic Information - **Project Name**: coco voc数据集转yolo数据集 - **Description**: 本项目的功能是将voc数据集和coco数据集的转化为yolo数据集(仅支持矩形) - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-01-11 - **Last Updated**: 2024-01-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # toYolo 本项目的功能是将voc数据集和coco数据集的转化为yolo数据集(仅支持矩形) 本项目提供源代码可供开发者参考以及在此基础上进行自己的开发,接下来介绍使用方式 ### 使用 1. 先介绍基于本项目打包的可执行文件使用步骤 本项目准备了测试数据,包含一个voc数据集和一个coco数据集,两个数据集类别都为mouse和eyes 以voc数据集为例,请在数据集下新建一个名为classes.txt的文件,并写入类别名称: ![Alt text](md_img/image.png) 请注意mouse后面还有个回车 接着直接将数据集文件夹拖拽到可执行文件上即可: ![Alt text](md_img/image-1.png) 接着就会在相同目录下生成一个带有_yolo后缀的数据集,完成转换 获取该工具的方法是通过下方的收款码进行付款(金额任意但请>3元,备注名称),之后通过bilibili搜索用户“易派森”,私聊发送付款截图,将会获得该工具(百度网盘) ![Alt text](md_img/pay.png) 2. 通过代码执行 同样的方式生成一个classes.txt文件并写入对应内容,接着打开src目录下的main.py文件,修改src_path路径后运行即可 ![Alt text](md_img/image-2.png) ### 如需基于本项目进一步开发,你需要知道的知识 1. yolo数据集: 数据集文件夹中存放图片,label文件(txt格式),和一个classes.txt文件 其中标注文件每一行的含义分别是(每一行代表要给矩形框以及对应类别):类别序号,x_center,y_center, w, h 类别序号从0开始,x_center表示矩形框的中心点x值,y_center表示矩形框的中心点y值,w表示矩形框宽度,h表示矩形框高度。需要注意的是,x_center是以像素为单位的矩形中心x值除以图片宽度得到的,y_center是以像素为单位的矩形中心y值除以图片高度得到的,w,h也分别要除以图片宽度和高度 这四个值最后都是6位小数,如图: ![Alt text](md_img/image-3.png) 2. voc数据集 数据集文件夹中存放图片,label文件(xml格式) 其中label文件如图: ![Alt text](md_img/image-4.png) 其中,每个xml文件都包含着对应图片的宽度和高度,每一个object标签对应着一个矩形框以及对应类别,并且,object标签包含着xmin,ymin,xmax,ymax,分别代表着矩形左上角x,y值和矩形右下角x,y值 3. coco数据集 数据集文件夹存放图片,label文件(json格式),其中label文件如图: ![Alt text](md_img/image-5.png) json文件通常比原图的存储空间更大,因为它包括了标注数据以及原图(以另一种形式的编码放在了json文件中),其中shapes对应着一个列表,这个列表中每个元素代表着一个矩形框,每个元素中label代表类别,每个元素中points代表者一个矩形框的左上角点和右下角点。另外,json文件的最后还有对应图片的宽度,高度 4. 标注工具labelme和labelimg 前者可以用来生成coco数据集,后者可以生成yolo和voc数据集 5. 本项目设计思路 本项目大致思路是json或者xml的左上角点和右下角和类别都提取出,形成数据结构如下的数据: ``` [ {mouse:[p1_x,p1_y,p2_x,p2_y]}, {eyes:[p1_x,p1_y,p2_x,p2_y]}, {eyes:[p1_x,p1_y,p2_x,p2_y]}, {mouse:[p1_x,p1_y,p2_x,p2_y]}, ...... ] ``` 一个列表,其中每个元素分别对应着一张图片的每个框框,元素是一个字典,键代表着类别名称,值代表着左上角x,y值,右下角x,y值 之后结合每张图片的宽高来得到yolo数据集