MSCOCO数据集转VOC数据集训练目标检测模型


Images
2014 Train images [83K/13GB]
2014 Val images [41K/6GB]
2014 Test images [41K/6GB]
2015 Test images [81K/12GB]
2017 Train images [118K/18GB]
2017 Val images [5K/1GB]
2017 Test images [41K/6GB]
2017 Unlabeled images [123K/19GB]

Annotations
2014 Train/Val annotations [241MB]
2014 Testing Image info [1MB]
2015 Testing Image info [2MB]
2017 Train/Val annotations [241MB]
2017 Stuff Train/Val annotations [1.1GB]
2017 Panoptic Train/Val annotations [821MB]
2017 Testing Image info [1MB]
2017 Unlabeled Image info [4MB]

我是下载的2017数据集,对应的标注文件如下图所示:

因为是进行目标检测,所以,需要上图中黄色标注的两个文件即可:
打开黄色标记的json文件,数据格式如下所示:

{"info": info, # dict"licenses": [license], # list ,内部是dict"images": [image], # list ,内部是dict"annotations": [annotation], # list ,内部是dict"categories": # list ,内部是dict
}

字段如下:
info

"info": { # 数据集信息描述"description": "COCO 2017 Dataset", # 数据集描述"url": "http://cocodataset.org", # 下载地址"version": "1.0", # 版本"year": 2017, # 年份"contributor": "COCO Consortium", # 提供者"date_created": "2017/09/01" # 数据创建日期},

licenses

"licenses": [{"url": "http://creativecommons.org/licenses/by-nc-sa/2.0/","id": 1,"name": "Attribution-NonCommercial-ShareAlike License"},…………],

images

"images": [{"license": 4,"file_name": "000000397133.jpg", # 图片名"coco_url":  "http://images.cocodataset.org/val2017/000000397133.jpg",# 网路地址路径"height": 427, # 高"width": 640, # 宽"date_captured": "2013-11-14 17:02:52", # 数据获取日期"flickr_url": "http://farm7.staticflickr.com/6116/6255196340_da26cf2c9e_z.jpg",# flickr网路地址"id": 397133 # 图片的ID编号(每张图片ID是唯一的)},…………],

categories

"categories": [ # 类别描述{"supercategory": "person", # 主类别"id": 1, # 类对应的id (0 默认为背景)"name": "person" # 子类别},{"supercategory": "vehicle", "id": 2,"name": "bicycle"},{"supercategory": "vehicle","id": 3,"name": "car"},…………],

注: bicycle 与car都属于vehicle,但两者又属于不同的类别。例如:羊(主类别)分为山羊、绵羊、藏羚羊(子类别)等

annotations

"annotation": [{"segmentation": [ # 对象的边界点(边界多边形)[224.24,297.18,# 第一个点 x,y坐标228.29,297.18, # 第二个点 x,y坐标234.91,298.29,…………225.34,297.55]],"area": 1481.3806499999994, # 区域面积"iscrowd": 0, # "image_id": 397133, # 对应的图片ID(与images中的ID对应)"bbox": [217.62,240.54,38.99,57.75], # 定位边框 [x,y,w,h]"category_id": 44, # 类别ID(与categories中的ID对应)"id": 82445 # 对象ID,因为每一个图像有不止一个对象,所以要对每一个对象编号(每个对象的ID是唯一的)},…………]

注意,单个的对象(iscrowd=0)可能需要多个polygon来表示,比如这个对象在图像中被挡住了。而iscrowd=1时(将标注一组对象,比如一群人)的segmentation使用的就是RLE格式。

MSCOCO数据集转VOC数据集代码:

import os, jsonjsonPath = r"E:\ai\MSCOCO\annotations\instances_val2017.json"       # json文件存放路径
new_dir=r"E:\ai\MSCOCO\testXml"                                     # 转换得到的xml保存路径# 转换xml文件
def bboxes2xml(folder, img_name, width, height, gts, xml_save_to):xml_file = open((xml_save_to + '/' + img_name + '.xml'), 'w')xml_file.write('<annotation>\n')xml_file.write('    <folder>' + folder + '</folder>\n')xml_file.write('    <filename>' + str(img_name) + '.jpg' + '</filename>\n')xml_file.write('    <size>\n')xml_file.write('        <width>' + str(width) + '</width>\n')xml_file.write('        <height>' + str(height) + '</height>\n')xml_file.write('        <depth>3</depth>\n')xml_file.write('    </size>\n')for gt in gts:xml_file.write('    <object>\n')xml_file.write('        <name>' + str(gt[0]) + '</name>\n')xml_file.write('        <pose>Unspecified</pose>\n')xml_file.write('        <truncated>0</truncated>\n')xml_file.write('        <difficult>0</difficult>\n')xml_file.write('        <bndbox>\n')xml_file.write('            <xmin>' + str(gt[1]) + '</xmin>\n')xml_file.write('            <ymin>' + str(gt[2]) + '</ymin>\n')xml_file.write('            <xmax>' + str(gt[3]) + '</xmax>\n')xml_file.write('            <ymax>' + str(gt[4]) + '</ymax>\n')xml_file.write('        </bndbox>\n')xml_file.write('    </object>\n')xml_file.write('</annotation>')xml_file.close()image_bbox = {}  # 图像的id是键名,物体的标注信息为键值with open(jsonPath, "r") as file:read_data = file.read()
loads_dict = json.loads(read_data)
# print(loads_dict.keys())id_image_dict = {}
for images in loads_dict["images"]:temp = []temp.append(images["file_name"])temp.append(images["height"])temp.append(images["width"])id_image_dict[images["id"]] = temp# print(id_image_dict)id_label_dict = {}  # 物体id类别对照字典
categories_ = loads_dict["categories"]
for categorie in categories_:id_label_dict[categorie["id"]] = categorie["name"]
# print(id_label_dict)annotations = loads_dict["annotations"]  # 注解
for annotation in annotations:image_name = annotation["image_id"]  # 对应的图像idobject_bbox = annotation["bbox"]  # 物体标注狂ob_id = annotation["category_id"]  # 物体的类别idif image_name not in image_bbox.keys():image_bbox[image_name] = []object_bbox.insert(0, id_label_dict[ob_id])image_bbox[image_name].append(object_bbox)# print(image_bbox)for key in image_bbox.keys():image_info = id_image_dict[key]  # 得到图像的名称、高度、宽度列表image_name = image_info[0]image_height = image_info[1]image_width = image_info[2]gts = []for ob_info in image_bbox[key]:gt_temp = []gt_temp.append(ob_info[0])  # 物体类别xmin = round(ob_info[1])ymin = round(ob_info[2])xmax=xmin+round(ob_info[3])ymax=ymin+round(ob_info[4])gt_temp=gt_temp+[xmin,ymin,xmax,ymax]gts.append(gt_temp)folder = "images"img_name = image_name.split(".")[0]width = image_widthheight = image_heightxml_save_to = new_dirbboxes2xml(folder, img_name, width, height, gts, xml_save_to)print("--------------------------------")print("done")

labelimag查看数据标注效果:

MSCOCO数据集转VOC数据集训练目标检测模型相关推荐

  1. 使用opencv训练目标检测模型基于cascade模型

    使用opencv训练目标检测模型基于cascade模型 基于Haar特征的cascade分类器(classifiers) 是Paul Viola和 Michael Jone在2001年,论文" ...

  2. 手把手教你使用 YOLOV5 训练目标检测模型

    作者 | 肆十二 来源 | CSDN博客 这次要使用YOLOV5来训练一个口罩检测模型,比较契合当下的疫情,并且目标检测涉及到的知识点也比较多. 先来看看我们要实现的效果,我们将会通过数据来训练一个口 ...

  3. UP-DETR:收敛更快!精度更高!华南理工微信开源无监督预训练目标检测模型...

    关注公众号,发现CV技术之美 0 写在前面 基于Transformer编码器-解码器结构的DETR达到了与Faster R-CNN类似的性能.受预训练Transformer在自然语言处理方面取得巨大成 ...

  4. 笔记记录--基于ccpd数据集利用Paddle OCR训练车牌检测模型

    目录 1-- 环境搭建 2-- 数据集划分 3-- 训练模型 4-- 推理测试 1-- 环境搭建 安装Paddle OCR参考 ① 创建环境 conda create -n paddle_env py ...

  5. 读取mmdetection训练目标检测模型的日志文件(log.json)的各种AP值按epoch写入excel文件

    最近跑的模型有点多,人工统计训练结果比较耗时间,特别是epoch多,而且统计多个AP值时,特别耗时间. 于是就想直接把结果导入excel,以后就不用单独统计了 目前已有的训练结果日志是json文件,打 ...

  6. 手把手教你训练自己的目标检测模型(SSD篇)

    目标检测是AI的一项重要应用,通过目标检测模型能在图像中把人.动物.汽车.飞机等目标物体检测出来,甚至还能将物体的轮廓描绘出来,就像下面这张图,是不是很酷炫呢,嘿嘿 在动手训练自己的目标检测模型之前, ...

  7. 目标检测模型从训练到部署!

    Datawhale干货 作者:张强,Datawhale成员 训练目标检测模型并部署到你的嵌入式设备,让边缘设备长"眼睛". 目标检测的任务是找出图像中所有感兴趣的目标(物体),确定 ...

  8. 人工智能目标检测总结(五)——深入理解one-stage目标检测模型

    本文翻译自One-shot object detection,原作者保留版权. 作为计算机视觉领域的一项重要任务,目标检测是要找到一张图片里的感兴趣物体: 这比图像分类任务更高级,因为分类只需要告诉图 ...

  9. PASCAL VOC目标检测数据集格式转化为COCO目标检测数据集格式

    VOC2012目标检测数据集格式转化为COCO目标检测数据集格式 你只需要传入一个VOC数据集根路径可以直接运行,简直不要太方便好吧 需要材料: VOC2012原始数据集 一个pycharm项目文件夹 ...

最新文章

  1. 面对千亿客服市场:曾经人工当道,如今AI为王
  2. uva10401Injured Queen Problem(递推)
  3. Exploring Micro-frameworks: Spring Boot--转载
  4. Android Studio 中文显示方块□□问题解决
  5. python前端界面模板_Python编程flask使用页面模版的方法
  6. 黑鲨4游戏手机开启预热:4>5+6+7 比竞品更胜一筹
  7. html5自动打印图片,html2canvas生成清晰的图片实现打印代码示例
  8. Mongodb总结1-启动和Shell脚本
  9. 如何找到JavaScript中的调用者函数?
  10. The Willpower Instinct(自控力,意志力)
  11. input el-input 打印是取不到值 print()
  12. python实现简易动态贝叶斯网络的推断
  13. 硬盘出现c7导致计算机蓝屏,硬盘存在问题_硬盘存在问题c7
  14. 夜深人静写算法(五)- 初等数论
  15. 游戏服务端(MMORPG)的基础算法一、AOI
  16. 论文参考文献格式自动生成
  17. 锦言妙语(Englist一百句)
  18. docx poi 原理_POI读取.doc 和.docx的区别
  19. 百度地图根据经纬度判断点是否在行政区内
  20. forestploter包,超赞的森林图绘制新R包

热门文章

  1. 计算机excel二进制,在Excel中实现二进制、八进制、十进制、十六进制之间的转换函数介绍...
  2. 音乐格式如何进行转换,音频格式转换器哪个好
  3. 《琅琊榜》里祁王为何必须死?
  4. 关于自动内存管理垃圾的产生和GC的应运而生。
  5. 物联卡先用流量包还是套餐流量,物联卡流量扣除顺序是什么?
  6. [内附完整源码和文档] 基于Java的个人通讯录管理系统
  7. 判断空间四点(多点)共面的计算方法
  8. 谷粒商城二十订单服务
  9. 吉林大学计算机专业扩招吗,我国有所“退步严重”的985大学,为了大盲目扩招,已被考生嫌弃...
  10. Selenium Chrome版本兼容问题