• 目标检测-AnyLabeling标注格式转换成YOLO格式


    Anylabel可以极大的增加数据的标注效率,但是其标注格式如何能转换成YOLO标注格式,具体内容如下所示。


    关于AnyLabeling的其它详细介绍如下链接所示

    https://blog.csdn.net/u011775793/article/details/134918861

     Github链接

    https://github.com/vietanhdev/anylabeling

    python代码

    1. import json
    2. import os
    3. def labelme_to_yolo(label_me_json_file, cls2id_dict):
    4. label_me_json = json.load(open(label_me_json_file, mode='r', encoding='UTF-8'))
    5. shapes = label_me_json['shapes']
    6. img_width, img_height = label_me_json['imageWidth'], label_me_json['imageHeight']
    7. img_path = label_me_json['imagePath']
    8. img_data = label_me_json['imageData'] if 'imageData' in label_me_json else ''
    9. labels = []
    10. for s in shapes:
    11. s_type = s['shape_type']
    12. s_type = s_type.lower()
    13. if s_type == 'rectangle':
    14. pts = s['points']
    15. x1, y1 = pts[0] # left corner
    16. x2, y2 = pts[1] # right corner
    17. x = (x1 + x2) / 2 / img_width
    18. y = (y1 + y2) / 2 / img_height
    19. w = abs(x2 - x1) / img_width
    20. h = abs(y2 - y1) / img_height
    21. cid = cls2id_dict[s['label']]
    22. labels.append(f'{cid} {x} {y} {w} {h}')
    23. return labels
    24. def write_label2txt(save_txt_path,label_list):
    25. f=open(save_txt_path,"w",encoding="UTF-8")
    26. for label in label_list:
    27. temp_list=label.split(" ")
    28. f.write(temp_list[0])
    29. f.write(" ")
    30. f.write(temp_list[1])
    31. f.write(" ")
    32. f.write(temp_list[2])
    33. f.write(" ")
    34. f.write(temp_list[3])
    35. f.write(" ")
    36. f.write(temp_list[4])
    37. f.write("\n")
    38. if __name__ == '__main__':
    39. # 原始图片文件夹路径
    40. img_dir=r"D:\desk\Work\Dataset\Test\Test_Anylabeling\imgs"
    41. # 原始JSON标签文件夹路径
    42. json_dir=r"D:\desk\Work\Dataset\Test\Test_Anylabeling\labels"
    43. # 生成保存TXT文件夹路径
    44. save_dir=r"D:\desk\Work\Dataset\Test\Test_Anylabeling\txt"
    45. # 类别和序号的映射字典
    46. cls2id_dict={"building1":"0"}
    47. if not os.path.exists(save_dir):
    48. os.makedirs(save_dir)
    49. for json_name in os.listdir(json_dir):
    50. json_path=os.path.join(json_dir,json_name)
    51. txt_name=json_name.split(".")[0]+".txt"
    52. save_txt_path=os.path.join(save_dir,txt_name)
    53. labels = labelme_to_yolo(json_path,cls2id_dict)
    54. write_label2txt(save_txt_path,labels)

    具体修改 

    # 原始图片文件夹路径
    img_dir=r"D:\desk\Work\Dataset\Test\Test_Anylabeling\imgs"

    改为自己的图片路径

     

    # 原始JSON标签文件夹路径
    json_dir=r"D:\desk\Work\Dataset\Test\Test_Anylabeling\labels"

    改为自己的JSON文件夹路径

    # 生成保存TXT文件夹路径
    save_dir=r"D:\desk\Work\Dataset\Test\Test_Anylabeling\txt"

    改为自己的保存生成的yolo文件夹路径

     

    # 类别和序号的映射字典
    cls2id_dict={"building1":"0"}

    改为自己的标签映射

     

    开始实验

    实验准备

     

    运行代码

    实验验证

    实验验证可视化代码相关链接

    https://blog.csdn.net/weixin_49824703/article/details/134050547

    完美!

  • 相关阅读:
    编写函数实现简单的插值进入有序数组问题
    Spring框架系列(10) - Spring AOP实现原理详解之AOP代理的创建
    2022/9/16-2022/9/20
    化学分子Mol2文件格式与使用注意事项
    如何下载huggingface的模型和权重
    信息的定量描述
    LeetCode刷题day24||回溯算法理论基础&&77. 组合--回溯
    Canvas和SVG
    海外代理IP与VPN有何区别?哪个更好?
    将主键ID用括号包括 以字符串的方式进行存储 查询的技巧
  • 原文地址:https://blog.csdn.net/weixin_49824703/article/details/139310197