文章目录

  • 1、整理Yolo图像和标签文件
  • 2、实现yolo到voc的转换

检测系列相关文章参考如下链接:

  1. VOC数据的结构介绍及自定义生成,用labelimg自已标注
  2. VOC标准数据的生成及分析,VOC易用labelimg生成,做为基础的检测数据类型
  3. VOC转YOLO,方便YOLO系列模型使用
  4. VOC转COCO,方便用于COCO map评估
  5. YOLO转VOC,方便使用我们的VOC相关分析和处理代码
  6. COCO转VOC,方便使用我们的VOC相关分析和处理代码
    以上数据格式互转,方便我们处理各种收集的开源数据和自己标记的数据的整合。当然也不是特别的全面,但是工作中常用的主流的格式是包含的。
    觉的有价值的小伙伴可以给点个赞。

目标检测对输入数据的格式要求不尽相同,本文提供的是yolo转VOC格式的代码。

1、整理Yolo图像和标签文件

有时候yolo的标注文件比较乱,特别是图片和标注文件并非完全对应,这时需要先做一个处理。我们利用交集的方法,来保证图片和标签的一一对应。

代码如下:

imgs=sorted(os.listdir('/yourpath/images'))
lbs=sorted(os.listdir('/yourpath/labels'))
l = [os.path.splitext(i)[0] for i in lbs]  #去掉图片的后缀
b = [os.path.splitext(i)[0] for i in imgs]  # 去掉标注文件的后缀
a=list(set(b) & set(l)) # 这就得到图片和标注文件的一一对应

接着,把一一对应的图片和标签文件取出来,从而得到一个标准的正确的yolo目标检测数据集,代码如下:

for i in tqdm(a):img = os.path.join('/yourpath/images/',i+'.jpg')lb = os.path.join('/yourpath/labels/',i+'.txt')shutil.copy(img,'/yournewpath/images')shutil.copy(lb,'/yournewpath/labels')

2、实现yolo到voc的转换

直接上代码,相关说明看代码的注释


import  os, cv2, shutil
from lxml import etree, objectify
from tqdm import tqdm
from PIL import Image
import numpy as np
import time
import os.path as osp
import jsondef cover_copy(src,dst):'''src和dst都必须是文件,该函数是执行覆盖操作'''if os.path.exists(dst):os.remove(dst)shutil.copy(src,dst)else:shutil.copy(src,dst)def yolo2voc(sourcedir,savedir,class_names):"""_summary_Args:sourcedir (_type_): /yournewpath 写到images 和labels上一级savedir (_type_): 写到JPEGImages和Annotations上一级class_names(list): yolo数据中所有的类别,顺序要与索引对应上"""img_savepath= osp.join(savedir,'JPEGImages')ann_savepath=osp.join(savedir,'Annotations')for p in [img_savepath,ann_savepath]:if osp.exists(p):shutil.rmtree(p)os.makedirs(p)else:os.makedirs(p)filenames = os.listdir(osp.join(sourcedir,'images'))for filename in tqdm(filenames):filepath = osp.join(sourcedir,'images',filename)annfilepath=osp.join(sourcedir,'labels',osp.splitext(filename)[0]+'.txt')annopath = osp.join(ann_savepath,osp.splitext(filename)[0] + ".xml") #生成的xml文件保存路径dst_path = osp.join(img_savepath,filename)   im = Image.open(filepath)image = np.array(im).astype(np.uint8)w=image.shape[1]h=image.shape[0]cover_copy(filepath, dst_path)#把原始图像复制到目标文件夹anns=[i.strip().split() for i in open(annfilepath).readlines()]objs = []for ann in anns:name = class_names[int(ann[0])]   xcenter = float(ann[1])*wycenter = float(ann[2])*hbw=float(ann[3])*wbh=float(ann[4])*hxmin = (int)(xcenter-bw/2)ymin = (int)(ycenter-bh/2)xmax = (int)(xcenter+bw/2)ymax = (int)(ycenter+bh/2)obj = [name, 1.0, xmin, ymin, xmax, ymax]#标错框在这里if not(xmin-xmax==0 or ymin-ymax==0):objs.append(obj)E = objectify.ElementMaker(annotate=False)anno_tree = E.annotation(E.folder('VOC'),E.filename(filename),E.source(E.database('YOLO'),E.annotation('VOC'),E.image('YOLO')),E.size(E.width(image.shape[1]),E.height(image.shape[0]),E.depth(image.shape[2])),E.segmented(0))for obj in objs:E2 = objectify.ElementMaker(annotate=False)anno_tree2 = E2.object(E.name(obj[0]),E.pose(),E.truncated("0"),E.difficult(0),E.bndbox(E.xmin(obj[2]),E.ymin(obj[3]),E.xmax(obj[4]),E.ymax(obj[5])))anno_tree.append(anno_tree2)etree.ElementTree(anno_tree).write(annopath, pretty_print=True)

检测之YOLO转VOC相关推荐

  1. 鸟巢目标检测图像数据集(1000多张高清原图;YOLO,VOC两类标签)

    下载地址: 鸟巢目标检测图像数据集(1000多张高清原图:YOLO,VOC两类标签,网盘下载链接)

  2. 目标检测之YOLO V2 V3

    YOLO V2 YOLO V2是在YOLO的基础上,融合了其他一些网络结构的特性(比如:Faster R-CNN的Anchor,GooLeNet的\(1\times1\)卷积核等),进行的升级.其目的 ...

  3. 目标检测Tensorflow:Yolo v3代码详解 (2)

    目标检测Tensorflow:Yolo v3代码详解 (2) 三.解析Dataset()数据预处理部分 四. 模型训练 yolo_train.py 五. 模型冻结 model_freeze.py 六. ...

  4. 目标检测:YOLO V1、YOLO V2、YOLO V3 算法

    日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) yoloV3模型 目标检测:YOLO V1.YOLO V2.Y ...

  5. 【目标检测】YOLO v5 吸烟行为识别检测

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 YOLO v5 吸烟行为目标检测模型:计算机配置.制作数据集.训练.结果分析和使用 前言 相关连接(look评论) 一.计算机配置 p ...

  6. 目标检测之yolo系列

    YOLO v.s Faster R-CNN 1.统一网络:YOLO没有显示求取region proposal的过程.Faster R-CNN中尽管RPN与fast rcnn共享卷积层,但是在模型训练过 ...

  7. 目标检测模型 YOLO系列

    目标检测模型 YOLO系列 文章目录 目标检测模型 YOLO系列 YOLOv1 一.背景 二.YOLO模型 主要思想 模型结构 损失函数 三.优缺点 四.参考 YOLOv2与YOLO9000 YOLO ...

  8. 【目标检测】YOLO v5 安全帽检测识别项目模型

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 YOLO v5安全帽检测模型 前言 相关连接: 一.计算机配置 pytorch安装 pycocotools的安装 二.YOLO v5下 ...

  9. YOLO与voc格式互转,超详细

    简述:YOLO为txt格式,voc为xml格式,具体结构如下图: 目录结构: |-py文件(转换的py文件) |-dataset ||–annotation (存放voc格式的文件夹) ||–YOLO ...

最新文章

  1. springmvc跨域(转)
  2. UIButton设置 textAlignment 属性的方法
  3. Android SQlite数据库的使用(三)-将数据库文件连同应用程序一起发布
  4. insert执行时oracle如何处理,ORACLE中Insert时字符处理
  5. Linux LVM相关概念
  6. python plotly 多个表格_Plotly Python - 更改表格
  7. STM32的时钟配置——时钟树解析
  8. 基于springMVC拦截器实现操作日志统计
  9. python:pytest优秀博客
  10. 计算机音乐绅士教程,教你学唱薛之谦的《绅士》,这个技巧很实用值得收藏!...
  11. Python bytearray()
  12. 全日制计算机大专学校有哪些科目,全日制大专报名_实时汇总
  13. 在iPad/iPhone上使用Firebug
  14. matlab差分法案例,怎么用matlab实现向前差分法,向后差分法,中心差分法等,最好举个例子,谢谢啦...
  15. 多层次细节(Level of detail)
  16. jsonp跨域原理详解
  17. vue 下载Excel 文件
  18. ble zephyr lbs样例,一上电进入广播状态,发送的HCI命令
  19. 调查计算机对运算能力的影响,计算器对运算能力的影响
  20. HashMap 遍历方式

热门文章

  1. 蓝牙耳机怎样才知道充满电
  2. win10上和Ubuntu20.04上制作Gif图
  3. 喂,是马云吗?我是李彦宏啊,派代年会上我给你钱啊
  4. 点滴关怀PHP面试,真帮实干显真情 点滴关怀暖人心
  5. Java弧度转化为角度的公式,角度与弧度的换算公式?
  6. displaylink driver
  7. 外贸网站最新的英文在线跟踪聊天咨询管理软件
  8. SU2 在linux操作系统上的安装过程
  9. 实现Discuz论坛客户端应用源码
  10. 道路提取公开数据集:Massachusetts