-
2020-07-31 19:36:40
在数据集标注中,将检测物体命名为a,标注完后觉得a不合适,又想将标签文件中的目标a改成b,使用python解析XML文件后批量修改。
# coding: utf-8 ''' 通过解析xml文件,批量修改xml文件里的标签名称,比如把标签zero改成num ''' import os.path import glob import xml.etree.ElementTree as ET #import xml.dom.minidom path = r'D:/picture/指针仪表拍图/表盘标签/Annotations/' for xml_file in glob.glob(path + '/*.xml'): # 返回解析树 tree = ET.parse(xml_file) # 获取根节点 root = tree.getroot() #print(root) # 根据标签名查找root下的所有标签,并获取其值 # print(imgname) # 对所有目标进行解析 # dom = xml.dom.minidom.parse(os.path.join(path, xml_file)) for member in root.findall('object'): objectname = member.find('name').text if objectname != 'hello': print(objectname) member.find('name').text = str('meter') #objectname = 'num' #with open(xml_file, 'w') as fh: tree.write(xml_file) #os.path.join(path, xml_file)
更多相关内容 -
LabelImg标注工具
2018-09-22 10:08:16图片识别的深度学习标注利器,可以生成pascal yolo两种格式 -
批量修改labellmg的xml标注文件的标注名称
2021-08-25 15:42:33比如将标注B改为bac import os import glob from xml.etree.ElementTree import parse, Element seq_dir = os.path.expanduser('./')#xml文件所在位置 img_files=glob.glob(seq_dir + '*.xml') for file in files...比如将标注B改为bac
import os import glob from xml.etree.ElementTree import parse, Element seq_dir = os.path.expanduser('./')#xml文件所在位置 img_files=glob.glob(seq_dir + '*.xml') for file in files: dom = parse(img_file) root = dom.getroot() # print(root) for obj in root.iter('object'):#name节点 name = obj.find('name').text if name == 'B': name = 'bac' if name == 'C': name = 'cas' if name == 'A': name = 'pro' obj.find('name').text = name #修改 # print(name1) dom.write(img_file, xml_declaration=True)#将修改后的保存
-
在easydl平台上传已经标注好的数据,怎么按照要求进行json和图片...是用labellmg图片标注工具生成的xml文件。
2020-07-30 21:07:32content = response.read() data = json.loads(content.decode('utf-8')) return data else: return None #批量增加样本 #dataset_id:easydl数据集id #path:lableImg的数据目录 #max:max大于0且长或宽...在这里插入代码片
1.可以参考百度al社区的这个帖子https://ai.baidu.com/forum/topic/show/942310
2。不过他说的太笼统了,我进行一下补充:
client_id、client_secret是EasyDL定制训练平台 - 应用列表创建apl的API Key,Secret Key
test.py中的labelImg数据目录只能是英文和数字,不能有汉字和其他符号,里面的数据是图片和xml放一起。
而且他的工程有点小问题,我是师兄帮忙调试的。把里面的easydl模块参考我的换一下就行了,稍微修改后easydl模块代码#coding=utf-8 #baidu ai easydl toolkit by kooky126 import urllib.request import configparser import os import json import re import time import base64 import cv2 import glob from xml.etree import ElementTree as ET #初始化token def inittoken(): cf = configparser.ConfigParser() a = cf.read("easydl.conf") client_id = cf.get("token","client_id") client_secret = cf.get("token","client_secret") host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id='+client_id+'&client_secret='+client_secret request = urllib.request.Request(host) request.add_header('Content-Type', 'application/json; charset=UTF-8') response = urllib.request.urlopen(request) content = response.read() if (content): date = json.loads(content.decode('utf-8')) if date['access_token']: with open("token.json","w") as f: json.dump(date,f) return date['access_token'] else: return None else: return None #取token def gettoken(): if os.path.exists('token.json'): with open('token.json') as f: data = json.load(f) expires = int(re.findall(r"\d{10}",data['access_token'])[0]) if expires>int(time.time()): return data['access_token'] else: return inittoken() else: return inittoken() #缩小图像,长宽不超过max def resize(img,max): heigth,width,_ = img.shape scale = 1.0 if heigth>max or width>max: if heigth>width: nh = max scale = max/heigth nw = int(width*scale) else: nw = max scale = max/width nh = int(heigth*scale) return cv2.resize(img, (nw,nh), interpolation=cv2.INTER_CUBIC),scale else: return img,scale #增加单个样本 #dataset_id:easydl数据集id #imgfile:图片文件路径 #xmlfile:标记xml文件路径 #name文件名:导入后平台显示的图片文件名,不要带jpg后缀 #max:max大于0且长或宽超过max时,会缩放图片,max为0时不缩放,保留原图 #append:easydl api里的参数,通常False就行 def addentity(dataset_id,dir,xmlfile,name,max=0,append=False): request_url = "https://aip.baidubce.com/rpc/2.0/easydl/dataset/addentity" access_token = gettoken() imgfile=os.path.join(dir,name+".jpg") if not access_token is None: request_url = request_url + "?access_token=" + access_token scale = 1 image = cv2.imread(imgfile) if max>0: image,scale = resize(image,max) h, w =image.shape[:2] _,buffer = cv2.imencode('.jpg', image) jpg64 = base64.b64encode(buffer) jpg_as_text = jpg64.decode("utf-8") req = {} req['entity_content']=jpg_as_text req['type'] = "OBJECT_DETECTION" req['dataset_id'] = dataset_id req['appendLabel'] = append req['entity_name'] = name+".jpg" tree = ET.parse(xmlfile) root = tree.getroot() objects = root.findall("object") subobjs = [] for object in objects: name = object.find("name").text xmin = int(int(object.find("bndbox").find("xmin").text)*scale) ymin = int(int(object.find("bndbox").find("ymin").text)*scale) xmax = int(int(object.find("bndbox").find("xmax").text)*scale) ymax = int(int(object.find("bndbox").find("ymax").text)*scale) subobject = {} subobject['label_name'] = name subobject['left'] = xmin subobject['top'] = ymin subobject['width'] = int(xmax-xmin) subobject['height'] = int(ymax-ymin) subobjs.append(subobject) req['labels']=subobjs params = bytes(json.dumps(req),"utf8") request = urllib.request.Request(url=request_url, data=params) request.add_header('Content-Type', 'application/json') response = urllib.request.urlopen(request) content = response.read() data = json.loads(content.decode('utf-8')) return data else: return None #批量增加样本 #dataset_id:easydl数据集id #path:lableImg的数据目录 #max:max大于0且长或宽超过max时,会缩放图片,max为0时不缩放,保留原图 #append:easydl api里的参数,通常False就行 def addentitybatch(dataset_id,path,max=0,append=False): if os.path.exists(path): xmlfiles = glob.glob(os.path.join(path,"*.xml")) print(xmlfiles) for xmlfile in xmlfiles: dir,xmlfilename = os.path.split(xmlfile) name,_=os.path.splitext(xmlfilename) imgfile = xmlfile.replace("xml","jpg") res = addentity(dataset_id,dir,xmlfile,name,max,append) if not res is None: if "error_msg" in res: print("ERROR",res['error_msg'],xmlfile) else: print("OK",xmlfile)
-
labelImg标注图像的详细教程
2020-07-07 17:32:10labelImg标注图像的详细教程 一、 labelImg工具下载: 下载地址:https://pan.baidu.com/s/1hdT6bwttdH_Q-1X8SPr8nw 提取码: 5nxa。下载文件如图1-1. 图1-1 下载的labelImg.exe是编译好的可执行文件,因此直接将...labelImg标注图像的详细教程
一、 labelImg工具下载:
下载地址:https://pan.baidu.com/s/1hdT6bwttdH_Q-1X8SPr8nw 提取码: 5nxa。下载文件如图1-1.
图1-1下载的labelImg.exe是编译好的可执行文件,因此直接将文件放在windows环境下,如图1-2,双击便可执行使用。
图1-2二、 labelImg工具使用方法:
- 双击labelImg.exe图标如图1-2,会出现如图1-3所示的背景黑色的窗口是终端界面(无需理会)和操作界面:
图1-3
在labelImg窗口的左边,有一些操作的功能如表1-1所示:
为了方便操作功能的使用,表1-2罗列了一些快捷键。
三、 开始图像数据标注:
一般操作的顺序如图1-4:
1、 如图1-5,首先点击按钮“Open Dir”打开你要进行标注图像的文件夹,在右下角的“File List”会罗列出该文件夹中的所有图像文件,如果想要只打开一张图像,则点击“Open”按钮即可。然后点击“Change Save Dir”按钮选择标注生成的.xml文件保存路径。
2、 使用快捷键“W”或者点击“Create Rectbox”按钮,然后画框选取要标注的对象,尽量图像减小尺寸,框画好后会自动弹出“类别填写框”填写类别如图1-6所示;点击“OK”按钮后会显示你所填写的类别,如图1-7所示。如果想修改该类别,则可以选中该对象类别点击右键,选择修改或者删除。
3、 图像中所有需要被标注的对象均标注完之后,点击“Save”按钮,进行保存。最后在保存文件的路径下生成.xml文件,如图1-8所示,.xml文件的名称是和标注照片的名字一样,如果要修改已经标注过的图像,.xml中的信息会自动改变。
4、 可点击点击“Next Image”或者“pre image”按钮切换图像,重复上述2、3步骤进行标注。 - 双击labelImg.exe图标如图1-2,会出现如图1-3所示的背景黑色的窗口是终端界面(无需理会)和操作界面:
-
windows下使用labelImg标注图像
2018-12-29 17:04:53工作中遇到一个更好用的标注软件,速度快,操作方便,分享一下: https://blog.csdn.net/python_pycharm/article/details/102685591 用于深度网络训练的数据集做标注的方法和工具有好多,像Labelme、labelImg、... -
使用labelImg标注图像产生yolov5数据集
2022-01-25 17:19:48如何使用labelImg标注图像产生yolov5数据集 -
python批量实现labelImg标注的 xml格式数据转换成 txt格式保存
2021-05-12 15:53:24labelImg标注的 xml格式数据如下: 单个xml文件数据打开如下: python实现labelImg标注的 xml格式数据转换成 txt格式数据的代码xml2txt.py如下: # -*- coding: utf-8 -*- import os import xml.etree.ElementTree... -
Yolo标注工具-labelImg的详细使用
2020-06-19 12:55:00下载数据标记工具labellmg,github地址:https://github.com/tzutalin/labelImg 2.2 依赖安装 下载完成后,安装依赖PyQt5,lxml,其中 -i http://pypi.douban.com/simple --trusted-host pypi.douban.co -
如何批量修改.xml文件里的path值:python实现
2020-12-21 13:55:11C:\Users\Administrator\Desktop\labellmg\图片标注\待标注图片\01017.jpg 需要修改后的路径地址为: 01017.jpg E:/keras-yolo3-master/VOCdevkit/VOC2007/JPEGImages/PartA_01017.jpg 下面给出了代码实现: 以... -
批量修改 labelImg 生成的xml文件
2019-01-22 19:45:25使用tensorflow对目标检测图像进行数据训练时,需要标注大量的图像。这个工作量实在是不少。为了更加简便的标注图像,或者说增加训练集: 做如下操作: 先对每类图像各标注100-200张进行训练。 训练准确度提升完成... -
roLabelImg将当前图片标注框复制到下一张图片
2022-02-15 16:05:46roLabelImg复制标注框 -
LabelImg标注工具的快捷键
2018-05-17 16:29:43Ctrl + s | 保存 | +------------+--------------------------------------------+ | Ctrl + d | Copy the current label and rect box | +------------+-----------... -
Label Studio多媒体数据标注工具[5星推荐]
2020-04-12 09:00:00(下) Seaborn:一行代码生成酷炫狂拽的数据集可视化 50题matplotlib从入门到精通 30例 | 一文搞懂python日期时间处理 如何批量下载上海证券交易所上市公司年报 pdfkit | 自动化利器,生成PDF就靠它了 中文文本数据... -
实现LabelImg标注的xml文件和文件夹下的图片匹配,把标注的图片复制到另一个文件夹
2021-05-20 16:15:45实现LabelImg标注的xml文件和文件夹下的图片匹配,把标注的图片复制到另一个文件夹 # coding: utf-8 from PIL import Image import os import os.path import numpy as np import cv2 import glob import pandas as ... -
图像标注工具labelImg安装及使用教程,制作voc数据集
2019-07-09 13:41:22点击labelImg界面的open dir选择创建的文件夹data_picture,就可以导入需要标注的图片,图片列表显示在标注界面的右下角,如下图所示: 点击界面左下角,选中create\nRectBox就可以在图片上进行标注,标注好的... -
合并使用labelimg标注的同一张图片的两个不同xml标签
2021-02-05 01:56:58待解决问题对于某个文件夹下的所有图片,使用labelimg进行标注,获得voc类型的xml格式的标签。由于在进行标注工作时,将不同的类别分开标注了,得到标签文件夹有两个,第一个文件夹存储了类别 a 和类别 b 的 labels ... -
将用LabelImg标注得到的VOC格式数据集标签(xml文件)转换成COCO格式(json文件)
2018-06-11 21:26:29写在前面的话: ...自从Facebook开源了Detectron目标检测框架后,很多原先用VOC格式数据集(指标注文件)训练目标检测模型的人需要将VOC格式的xml标注文件转换成COCO格式的json标注文件,但Detect... -
LabelImg如何使用?快捷键操作
2021-05-18 16:07:21图片标注被保存为PASCAL VOC格式的XML文件,这是ImageNet使用的格式。此外,它还支持YOLO和CreateML格式。 怎么安装LabelImg我就不说了,网上教程很多,而且不同的操作系统下,安装方式也存在差异,我是在ubuntu系统... -
LabelImg的使用
2020-02-21 14:36:23Open Dir:打开图片所在的文件夹,批量导入图片。 Change Save Dir:保存xml文件到指定的路径。 Verify Image:可更改xml文件的内容。 Save可保存xml文件。 快捷键 Ctrl + u 等同于Open dir的功能 Ctrl + r ... -
如何安装labelimg
2021-06-22 05:46:52open:打开需要标注的单张图片 open dir:打开需要标注的图片文件夹(批量标注) change save dir:选择保存标注信息的位置 create rectbox :开始画框 画好框之后出现这个: 这里面写入标注类别就可以了,比如你标注... -
第八届泰迪杯优秀论文B题(基于Mask R-CNN 及Yolov4 的电力巡检中绝缘子缺陷研究)
2020-12-04 10:36:22目录 一、 绪论 1 ...3.2训练样本的制作及标注 6 3.3Mask R-CNN 训练过程 8 3.3.1部分训练参数设置 8 3.3.2训练过程 9 3.4Mask R-CNN 训练结果分析 9 3.4.1检测及分割过程 9 四、 绝缘子自爆区域识别与定 -
LZY的CQU水下机器人视觉学习笔记(一)
2021-01-24 11:28:01LZY的CQU水下机器人视觉学习笔记(一)图像增强-打标-识别图像增强-去雾打标安装并打开labellmglabellmg的基本使用labellmg的常用快捷键YOLOv3按照voc数据建立文件夹合理的创建标题,有助于目录的生成如何改变文本的... -
Tensorflow object detection API训练自己的数据
2020-06-07 18:50:06上面对于图片的处理告一段落,接下来对图片进行标注,使用的是labellmg,地址在这里https://github.com/tzutalin/labelImg#macos 我用的是mac,因此用的mac底下的那些命令进行安装 环境:python3.7 Qt5 brew install... -
【飞桨领航团AI达人创造营】基于EdgeBoard部署废水水质判断
2021-11-17 09:48:30本项目基于PaddleX的YOLOv3进行废水水质判断, 二、数据集简介 本项目从网页上收集了40个水质样品图片,然后使用labelImg对图片进行标注。labelImg的安装及使用请参见... -
基于yolov5的目标检测和模型训练(Miniconda3+PyTorch+Pycharm+实战项目——装甲板识别)
2022-01-04 13:51:22图像标注工具 这里主要推荐两款图像标注工具 MakeSense 和 labellmg MakeSense: MakeSense是网页端的图像标注工具:Make Sense 上手难度极低 具体使用可以参考这篇博文: (44条消息) make-sense | 图像标注工具_To_...