如题,在网上找的代码,感觉还蛮好用的,记录一下,省得到时候重新再找。
源代码地址:
https://www.jianshu.com/p/8ddd8f3fdf73
目的:将coco格式的数据集转换成yolo格式需求
任务:
1)存储生成的标签和图像分别至两个文件目录中,同时标签和图像的文件命名要求一致
2)将目标对象原标签集合递增顺序映射至{0-3}空间
3)由于原始标签中位置信息为{top_x, top_y, width, height},项目需要将其转换为{center_x, center_y, width, height}格式,并将其数值进行归一化操作
转换代码
from pycocotools.coco import COCO
import numpy as np
import tqdm
import argparse
def arg_parser():
parser = argparse.ArgumentParser('code by rbj')
parser.add_argument('--annotation_path', type=str,
default='../annotations/instances_val2017.json')
#生成的txt文件保存的目录
parser.add_argument('--save_base_path', type=str, default='../labels/valid/')
args = parser.parse_args(args=[])
#原网页中是args = parser.parse_args()会报错,改成这个以后解决了
return args
if __name__ == '__main__':
args = arg_parser()
annotation_path = args.annotation_path
save_base_path = args.save_base_path
data_source = COCO(annotation_file=annotation_path)
catIds = data_source.getCatIds()
categories = data_source.loadCats(catIds)
categories.sort(key=lambda x: x['id'])
classes = {
}
coco_labels = {
}
coco_labels_inverse = {
<