东方耀AI技术分享

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 7599|回复: 10
打印 上一主题 下一主题

[课堂笔记] 目标检测之voc格式的数据集转换为csv格式

[复制链接]

1365

主题

1856

帖子

1万

积分

管理员

Rank: 10Rank: 10Rank: 10

积分
14429
QQ
跳转到指定楼层
楼主
发表于 2020-12-4 22:53:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式



目标检测之voc格式的数据集转换为csv格式



  1. import os
  2. import glob
  3. import csv
  4. from xml.dom.minidom import parse
  5. # 目标检测之voc格式的数据集转换为csv格式

  6. # label_dict = {"0": "person", "1": "car", "2": "motorbike", "3": "bus", "4": "truck"}
  7. label_dict = {"0": "car", "1": "truck", "2": "pedestrian", "3": "bicyclist", "4": "light"}

  8. input_voc_dir = "/home/dfy888/DataSets/driving_datasets_voc"
  9. annotations_dir = os.path.join(input_voc_dir, "Annotations")
  10. JPEGImages_dir = os.path.join(input_voc_dir, "JPEGImages")

  11. xml_num = len(glob.glob(os.path.join(annotations_dir, "*.xml")))
  12. img_num = len(glob.glob(os.path.join(JPEGImages_dir, "*.jpg")))
  13. print("voc格式的图片数目={};xml文件数目={}".format(img_num, xml_num))
  14. assert xml_num == img_num, "必须相等!"

  15. # path/to/image.jpg,x1,y1,x2,y2,class_name
  16. # 某些图片没有任何的目标,仅仅作为负样本存在
  17. # /data/imgs/img_001.jpg,837,346,981,456,cow
  18. # /data/imgs/img_002.jpg,215,312,279,391,cat
  19. # /data/imgs/img_002.jpg,22,5,89,84,bird
  20. # /data/imgs/img_003.jpg,,,,,
  21. csv_train = "./train_annots.csv"
  22. csv_val = "./val_annots.csv"
  23. # class_name,id   id从0开始 不要包括背景
  24. csv_classes = "./class_list.csv"


  25. def write_to_csv(dataset_type, csv_file):
  26.     dataset_txt_file = os.path.join(input_voc_dir, "ImageSets", "Main", "%s.txt" % dataset_type)
  27.     f_csv = open(csv_file, 'w', newline='')
  28.     csv_write = csv.writer(f_csv)
  29.     with open(dataset_txt_file, "r") as f:
  30.         lines = f.readlines()
  31.         for line in lines:
  32.             img_name = line.strip()
  33.             img_path = os.path.join(JPEGImages_dir, "%s.jpg" % img_name)
  34.             xml_annotation_path = os.path.join(annotations_dir, "%s.xml" % img_name)
  35.             dom = parse(xml_annotation_path)
  36.             # 获取文档元素对象
  37.             data = dom.documentElement
  38.             objs = data.getElementsByTagName('object')
  39.             for obj in objs:
  40.                 # 获取标签中内容
  41.                 name = obj.getElementsByTagName('name')[0].childNodes[0].nodeValue
  42.                 x1 = obj.getElementsByTagName('bndbox')[0].getElementsByTagName('xmin')[0].childNodes[0].nodeValue
  43.                 y1 = obj.getElementsByTagName('bndbox')[0].getElementsByTagName('ymin')[0].childNodes[0].nodeValue
  44.                 x2 = obj.getElementsByTagName('bndbox')[0].getElementsByTagName('xmax')[0].childNodes[0].nodeValue
  45.                 y2 = obj.getElementsByTagName('bndbox')[0].getElementsByTagName('ymax')[0].childNodes[0].nodeValue
  46.                 # path/to/image.jpg,x1,y1,x2,y2,class_name
  47.                 csv_write.writerow([img_path, x1, y1, x2, y2, name])

  48.     f_csv.close()


  49. with open(csv_classes, 'w', newline='')as f:
  50.     csv_write = csv.writer(f)
  51.     for id, name in label_dict.items():
  52.         csv_write.writerow([name, id])


  53. if __name__ == "__main__":
  54.     write_to_csv("train", csv_train)
  55.     write_to_csv("val", csv_val)


复制代码




让天下人人学会人工智能!人工智能的前景一片大好!
回复

使用道具 举报

0

主题

102

帖子

208

积分

中级会员

Rank: 3Rank: 3

积分
208
沙发
发表于 2020-12-5 23:39:07 | 只看该作者
66666666666666
回复

使用道具 举报

0

主题

102

帖子

208

积分

中级会员

Rank: 3Rank: 3

积分
208
板凳
发表于 2020-12-6 09:20:53 | 只看该作者
Python高级编程与AI数据分析课程
回复

使用道具 举报

0

主题

102

帖子

208

积分

中级会员

Rank: 3Rank: 3

积分
208
地板
发表于 2020-12-6 09:25:05 | 只看该作者

笔记写的挺好的,点个赞
回复

使用道具 举报

0

主题

102

帖子

208

积分

中级会员

Rank: 3Rank: 3

积分
208
5#
发表于 2020-12-6 09:29:50 | 只看该作者
目标检测之voc格式的数据集转换为csv格式
回复

使用道具 举报

0

主题

102

帖子

208

积分

中级会员

Rank: 3Rank: 3

积分
208
6#
发表于 2020-12-6 09:32:15 | 只看该作者
目标检测之voc格式的数据集转换为csv格式
回复

使用道具 举报

0

主题

102

帖子

208

积分

中级会员

Rank: 3Rank: 3

积分
208
7#
发表于 2020-12-6 09:36:03 | 只看该作者
目标检测之voc格式的数据集转换为csv格式目标检测之voc格式的数据集转换为csv格式
回复

使用道具 举报

0

主题

102

帖子

208

积分

中级会员

Rank: 3Rank: 3

积分
208
8#
发表于 2020-12-6 09:39:31 | 只看该作者
目标检测之coco与voc格式的数据相互转换,并验证coco格式的脚本目标检测之coco与voc格式的数据相互转换,并验证coco格式的脚本
回复

使用道具 举报

0

主题

102

帖子

208

积分

中级会员

Rank: 3Rank: 3

积分
208
9#
发表于 2020-12-6 09:40:05 | 只看该作者
目标检测之coco与voc格式的数据相互转换,并验证coco格式的脚本目标检测之coco与voc格式的数据相互转换,并验证coco格式的脚本目标检测之coco与voc格式的数据相互转换,并验证coco格式的脚本
回复

使用道具 举报

0

主题

102

帖子

208

积分

中级会员

Rank: 3Rank: 3

积分
208
10#
发表于 2020-12-6 09:40:30 | 只看该作者
目标检测之coco与voc格式的数据相互转换,并验证coco格式的脚本目标检测之coco与voc格式的数据相互转换,并验证coco格式的脚本目标检测之coco与voc格式的数据相互转换,并验证coco格式的脚本目标检测之coco与voc格式的数据相互转换,并验证coco格式的脚本
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|人工智能工程师的摇篮 ( 湘ICP备2020019608号-1 )

GMT+8, 2024-4-20 12:43 , Processed in 0.171563 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表