记录贴:将inria行人检测数据集转化为YOLO可以训练的txt格式

inria行人检测数据集解压后有train和test文件,将里面的标注信息提取出来

转化代码

# coding=UTF-8import os
import re
from PIL import Imagesets=['train']
#需要填写变量image_path、annotations_path、full_path
image_path = r"D:\BaiduNetdiskDownload\59_INRIA Person Dataset\shuju1/"                          # 图片存放路径,路径固定
annotations_path = r"D:\BaiduNetdiskDownload\59_INRIA Person Dataset\INRIAPerson\Test\annotations/" #文件夹目录                                          # INRIA标签存放路径
annotations= os.listdir(annotations_path) #得到文件夹下的所有文件名称# 获取文件夹下所有图片的图片名
def get_name(file_dir):list_file=[]for root, dirs, files in os.walk(file_dir):for file in files:# splitext()将路径拆分为文件名+扩展名,例如os.path.splitext(“E:/lena.jpg”)将得到”E:/lena“+".jpg"if os.path.splitext(file)[1] == '.jpg':list_file.append(os.path.join(root, file))return list_file# 在labels目录下创建每个图片的标签txt文档
def text_create(name,bnd):full_path = r"D:\BaiduNetdiskDownload\59_INRIA Person Dataset\labels1/%s.txt"%(name)size = get_size(name + '.png')convert_size = convert(size, bnd)file = open(full_path, 'a')file.write('0 ' + str(convert_size[0]) + ' ' + str(convert_size[1]) + ' ' + str(convert_size[2]) + ' ' + str(convert_size[3]) )file.write('\n')# 获取要查询的图片的w,h
def get_size(image_id):im = Image.open(r'D:\BaiduNetdiskDownload\59_INRIA Person Dataset\INRIAPerson\Test\pos/%s'%(image_id))       # 源图片存放路径size = im.sizew = size[0]h = size[1]return (w,h)# 将Tagphoto的x,y,w,h格式转换成yolo的X,Y,W,H
def convert(size, box):dw = 1./size[0]dh = 1./size[1]x = (box[0] + box[2])/2.0y = (box[1] + box[3])/2.0w = box[2] - box[0]h = box[3] - box[1]x = x*dww = w*dwy = y*dhh = h*dhreturn (x,y,w,h)# 将处理的图片路径放入一个txt文件夹中
for image_set in sets:if not os.path.exists(r'D:\BaiduNetdiskDownload\59_INRIA Person Dataset\labels1'):os.makedirs(r'D:\BaiduNetdiskDownload\59_INRIA Person Dataset\labels1')                     # 生成的yolo3标签存放路径,路径固定image_names = get_name(image_path)list_file = open('2007_%s.txt'%(image_set), 'w')for image_name in image_names:list_file.write('%s\n'%(image_name))list_file.close()s = []
for file in annotations: #遍历文件夹str_name = file.replace('.txt', '')if not os.path.isdir(file): #判断是否是文件夹,不是文件夹才打开with open(annotations_path+"/"+file) as f : #打开文件iter_f = iter(f); #创建迭代器for line in iter_f: #遍历文件,一行行遍历,读取文本str_XY = "(Xmax, Ymax)"if str_XY in line:strlist = line.split(str_XY)strlist1 = "".join(strlist[1:])    # 把list转为strstrlist1 = strlist1.replace(':', '')strlist1 = strlist1.replace('-', '')strlist1 = strlist1.replace('(', '')strlist1 = strlist1.replace(')', '')strlist1 = strlist1.replace(',', '')b = strlist1.split()bnd = (float(b[0]) ,float(b[1]) ,float(b[2]) ,float(b[3]))text_create(str_name, bnd)else:continue

可视化一下

判断转化是否正确,写了一个可视化代码


import os
import cv2
img_path = r'D:\BaiduNetdiskDownload\59_INRIA Person Dataset\INRIAPerson\Train\pos/'
label_path = r'D:\BaiduNetdiskDownload\59_INRIA Person Dataset\labels/'
f = os.listdir(img_path)
def paint(label_file, img_file):#读取照片img = cv2.imread(img_file)img_h, img_w, _ = img.shapewith open(label_file, 'r') as f:obj_lines = [l.strip() for l in f.readlines()]for obj_line in obj_lines:cls, cx, cy, nw, nh = [float(item) for item in obj_line.split(' ')]color = (0, 0, 255) if cls == 0.0 else (0, 255, 0)x_min = int((cx - (nw / 2.0)) * img_w)y_min = int((cy - (nh / 2.0)) * img_h)x_max = int((cx + (nw / 2.0)) * img_w)y_max = int((cy + (nh / 2.0)) * img_h)cv2.rectangle(img, (x_min, y_min), (x_max, y_max), color, 2)cv2.imshow('Ima', img)cv2.waitKey(0)
for i in f:label_path_name = label_path + i.replace('png','txt')img_path_name = img_path + iprint(label_path_name)print(img_path_name)paint(label_path_name,img_path_name)


发现这个数据集的多人场景下只标注了几个人

INRIAPerson数据集转化为yolo训练格式并可视化相关推荐

  1. 用Python对我们自己标注的数据集转化为YOLO训练需要的txt文件

    用Python对我们自己标注的数据集转化为YOLO训练需要的txt文件 一. 数据分类 在项目的根目录下新建一个maketxt.py文件. 该脚本会在straw/ImageSets文件夹下生成:tra ...

  2. BDD 100K数据集label转换为yolo训练格式

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 BDD 100K数据集label转换为yolo训练格式 前言 数据集介绍: 代码如下: 补充说明: 总结 前言 因为最近要做车辆,行人 ...

  3. 【目标检测数据集汇总】YOLO txt格式各种数据集

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 [目标检测数据集汇总]目标检测YOLO txt格式数据集~各种数据集 前言 相关连接: 一.安全帽数据集(10755张,nc2) 二. ...

  4. inria数据集下载及转换成yolo训练格式

    部分转载自:https://zhuanlan.zhihu.com/p/31836357 6.INRIA Person Dataset(INRIA行人数据库) 该数据库是目前使用最多的静态行人检测数据库 ...

  5. 基于paddlex图像分类模型训练(一):图像分类数据集切分:文件夹转化为imagenet训练格式

    相关博文 基于paddlex图像分类模型训练(二):训练自己的分类模型.熟悉官方demo 背景 在使用paddlex GUI训练图像分类时,内部自动对导入的分类文件夹进行细分,本文主要介绍其图像分类数 ...

  6. 【深度学习】【Python】【Widerface数据集】 转VOC格式,VOC 转YOLOv5格式,YOLOv5训练WiderFace数据集,检查yolo labels对不对

    文章目录 Widerface数据集转VOC格式 VOC 转YOLO格式 数据集的imageslisttxt YOLOv5训练 检查yolo labels对不对 并行训练 Widerface数据集转VO ...

  7. YOLO训练自己的数据集的一些心得

    YOLO训练自己的数据集 YOLO-darknet训练自己的数据 [Darknet][yolo v2]训练自己数据集的一些心得----VOC格式 YOLO模型训练可视化训练过程中的中间参数 项目开源代 ...

  8. 把LabelImg标注的YOLO格式标签转化为VOC格式标签 和 把VOC格式标签转化为YOLO格式标签

    把LabelImg标注的YOLO格式标签转化为VOC格式标签 和 把VOC格式标签转化为YOLO格式标签 文章目录: 1 用LabelImgvoc和yolo标注标签格式说明 1.1 LabelImg标 ...

  9. 用yolo训练自己的数据集(以车牌为例)

    我看了网上很多yolo教程,可能是因为电脑环境和配置的不一样,所以我并没有完全通过网上教程成功训练自己的数据集,接下来我将我自己完全亲自测试并且最后成功训练数据集的教程记录如下: 训练自己的数据集有如 ...

最新文章

  1. Python培训教程分享:10款超好用的Python开发工具
  2. Android基础之应用程序组件
  3. android 常见异常解决
  4. activiti的processEngine空指针异常
  5. ios无痕埋点_移动端无痕埋点实践详解(二)
  6. 【Java并发编程】并发之痛 Thread,Goroutine,Actor
  7. Spring中BeanPostProcessor 执行过程
  8. oracle表空间可以迁移,Oracle 表空间迁移
  9. [原创]windows server 2012 AD架构 试验 系列 – 15解决AD复制冲突
  10. 安全扫描工具_固件级安全,微软安全工具新增UEFI扫描功能
  11. mvc路由原理 php_PHP实战002:CodeIgniter安装和入门使用
  12. new运算符与malloc函数区别
  13. Codeforces 1042 D Petya and Array
  14. Allegro 制作 package
  15. 计算机二级C语言考试模拟系统+真题题库软件下载
  16. Packet Capture手机端app抓包工具
  17. 边际递减,边际成本,边际收益,边际效益
  18. python爬虫学习(循环爬取网页链接)
  19. 5、蓝桥杯之手机尾号评分
  20. TSM是NFC应用发展的关键环节

热门文章

  1. 《构建之法》第2.16章读书笔记
  2. Kotlin 自学笔记
  3. HTML-从零开始的学习过程(2)
  4. 《NFL橄榄球》:西雅图海鹰·橄榄1号位
  5. 诺基亚系列手机型号命名研究
  6. matlab生成计算软件,利用Matlab从第一性原理计算软件Siesta读取和生成能带图
  7. 使用 Siesta 处理 Swift 网络请求
  8. Densely Connected Convolutional Networks(论文解读三)
  9. opencv4.2中求解手眼标定方程AX=XB
  10. Android 自定义日期段选择控件,开始日期-结束日期。