目标检测 数据集—标注工具 labelImg/labelme


目标检测中,我们需要对原始图片数据集做标注,告诉机器我们需要的目标,然后让机器去学习,这个过程是非常重要的。我之前做目标检测时都是直接下载公开的数据集,比赛的数据集,因为简单方便。
如今自己需要另外训练自己的数据集,标准肯定少不了。LabelImg 这个工具 它的作用是在原始图像中标注目标物体位置并对每张图片生成相应的xml文件表示目标标准框的位置。
开发环境 windows10 | Anaconda | python ==3.7.X

一、使用 LabelImg生成目标检测数据集

1.1、下载LabelImg

下载地址:https://github.com/tzutalin/labelImg 下载,解压,得到LabelImg-master文件。
在这里插入图片描述

1.2、配置环境

终端进入LabelImg-master 目录下 ,依次执行如下命令即可

conda install pyqt = 5
pyrcc5 -o resources.py resources.qrc
python labelImg.py

在这里插入图片描述

1.3、开始标注

先查看图片,查看你需要标注哪几个位置,命好这几类名字(之后不能改)
Open Dir(图片目录)>> Change Save Dir(标注文件目录:最好与图片目录相同) >>Create \nRectBox(创建标注)>>选择类名>>Save(保存)>>Next Image(下一张)
在这里插入图片描述
为了加快标注,你可以进入 labelImg-master\data下,用Notepad++打开predefined_classes.txt文件,修改为刚才命好这几类名字。配合快捷键,一个小时大约标注100-150张(以我这个为例),这个时候你会感觉到想吐,这很正常,习惯就好,祝你好运!!!

二、使用 labelme生成mask掩码数据集

2.1 安装与启动

mask数据集标注工具(labelme): https://github.com/wkentaro/labelme
下载安装 Anaconda,然后在prompt里依次输入如下指令:

conda create --name=labelme python=3.7(python=自己的Python版本)
activate labelme
conda install pyqt
pip install labelme

启动labelme的conda环境,即按照以下步骤启动:

activate labelme
labelme

在这里插入图片描述

2.2 标注与保存

点击Create Polygons创建目标,创建完点击save保存.json文件(弹窗选择保存位置)
在这里插入图片描述在画掩码过程中如有多个box、fruit… 命名规则为box1、box2…fruit1、fruit2…。最后生成的标签为一个label.png文件,这个文件只有一通道,在你标注时同一标签mask会被给予一个标签位,而mask要求不同的实例要放在不同的层中。最终训练索要得到的输入为一个 w *h*n 的ndarray,其中n为该图片中实例的个数。总而言之,画mask时就按照上述命名规则就好了,具体的过程已经在上述代码中实现。如图:

所有文件标注完,启动后找到目标文件夹(不要有中文路径及文件夹名),会报编码相关的错。运行如下代码:

labelme_json_to_dataset <文件名>.json

即可得到一个文件夹,有四个文件,*.png, info.yaml , label.png, label_viz.png。 其中label.png即是我们要的label_data。
在这里插入图片描述
在这里插入图片描述

2.3 实现labelme批量json_to_dataset方法

直接将代码在控制台执行

小案例

import os,csv,time


field = [('001','accident_book'),
		('002','baodan'),
		('003','ID_Card_back'),
		('004','invoice'),
		('005','Organization_code')]

def __get_file__(original_path):
	filename_list = []
	for root_dir,dir_name,filenames in os.walk(original_path):
		for filename in filenames:
			ext = (".jpg",".jpeg",".png",".tif",)
			if filename.endswith(ext):
				filename_list.append(root_dir+"/"+filename)
	return filename_list


def Doing_bash(original_path,save_path):
	filename_list = __get_file__(original_path)
	if not os.path.exists('/tpdata/tpjh/result_Allword_serverImg/'+save_path):
		print 'make dir ...','/tpdata/tpjh/result_Allword_serverImg/'+save_path
		os.mkdir(str(base_path+path[1]))
	img_info = []
	scale = len(filename_list)
	for i,file in enumerate(filename_list):
		time.sleep(0.1)
		a = "#"* int(i/100)
		b = "."*(int(scale/100)-int(i/100))
		c = (i*1.000/scale)*100

		os.system('curl 10.xx.xxx.xx:3xxxx/icr/recognize_document -T '+str(file)+' -o /tpdata/tpjh/result_Allword_serverImg/'+save_path+'/'+str(file).split('/')[-1][:-4]+'.txt')
		print '{:^3.3f}%[{}>>{}]'.format(c,a,b)

	
if __name__ == '__main__':
	for path in field:
		base_path = '/tpdata/tpjh/result_class_img/'
		original_path = base_path+path[0]
		print '====original_path====',original_path
		save_path = path[1]
		img_info = Doing_bash(original_path,save_path)
		print 'done --------',original_path 
	print 'done!'
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SongpingWang

你的鼓励是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值