labelme的安装使用与批量生成文件兼一些小问题

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中即可

你可能感兴趣的:(个人杂谈)