labelme的安装
安装的话可以使用pip直接装,就是速度有点慢,推荐使用清华源加速下
labelme的使用
贼简单,傻瓜式操作,打开就会
labelme的批量生成
labelme本身提供了labelme_json_to_dataset
来生成单个json的数据集
但是却没有提供批量生成的
这部分代码在labelme库文件的cli里,瞄了几眼懒得改了,所有随便写了一个脚本, 用于批量生成。
虽然这样做又蠢又慢,但是开了多线程加速之后马马虎虎能用,就先将就着用吧
"""
Author: TinnyFlames
Time: 2020/3/3 1:40
Aim: Improve labelme_json_to_dataset
"""
import glob
import time
import os
from multiprocessing import Process
files = glob.glob("*.json")
num = len(files)
thread_num = 4 # Using process to acclerate program
def work(file_list:list):
for file in file_list:
os.system('labelme_json_to_dataset ' + file)
def split_list_n_list(origin_list, n):
if len(origin_list) % n == 0:
cnt = len(origin_list) // n
else:
cnt = len(origin_list) // n+1
for i in range(0,n):
yield origin_list[i*cnt:(i+1)*cnt]
if __name__ == '__main__':
print('Start running, total process num is ', thread_num)
start_time = time.time()
threads_list = []
tgt_lst = split_list_n_list(files,thread_num)
for i in range(thread_num):
t = Process(target=work, args=(next(tgt_lst),) )
t.start()
threads_list.append(t)
for process in threads_list:
process.join()
print('Total time cost is',(time.time()-start_time))
print('Total processed files are ', num)
关于没有yaml文件的问题
这是因为新版本把生成这段的代码给去掉了,如果需要,去老版本找到生成的那段代码然后加到labelme/cli/json_to_dataset.py
中即可