windows10 | Anaconda | python ==3.7.X
下载地址:https://github.com/tzutalin/labelImg 下载,解压,得到LabelImg-master文件。
终端进入LabelImg-master 目录下 ,依次执行如下命令即可
conda install pyqt = 5
pyrcc5 -o resources.py resources.qrc
python labelImg.py
先查看图片,查看你需要标注哪几个位置,命好这几类名字(之后不能改)
Open Dir(图片目录)>> Change Save Dir(标注文件目录:最好与图片目录相同) >>Create \nRectBox(创建标注)>>选择类名>>Save(保存)>>Next Image(下一张)
为了加快标注,你可以进入 labelImg-master\data下,用Notepad++打开predefined_classes.txt文件,修改为刚才命好这几类名字。配合快捷键,一个小时大约标注100-150张(以我这个为例),这个时候你会感觉到想吐,这很正常,习惯就好,祝你好运!!!
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
点击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。
直接将代码在控制台执行
小案例
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!'