将结构体写入文件_将COCO检测结果写入json文件
最近很多朋友留言问我如何将检测结果写入json文件并且用于COCO API的评估,之前对于检测结果的格式已经做了简单的说明,这里提供一些简单的函数,直接调用将结果写入即可。
用于COCO API测试的文件格式
HUST小菜鸡:用于COCO API测试的结果的文件格式zhuanlan.zhihu.com
使用COCO API进行结果评估
HUST小菜鸡:使用COCO API评估模型在COCO数据集上的结果zhuanlan.zhihu.com
COCO utils给出了一些转换的函数
def det2json(dataset, results):json_results = []for idx in range(len(dataset)):img_id = dataset.img_ids[idx]result = results[idx]for label in range(len(result)):bboxes = result[label]for i in range(bboxes.shape[0]):data = dict()data['image_id'] = img_iddata['bbox'] = xyxy2xywh(bboxes[i])data['score'] = float(bboxes[i][4])data['category_id'] = dataset.cat_ids[label]json_results.append(data)return json_results
def results2json(dataset, results, out_file):result_files = dict()if isinstance(results[0], list):json_results = det2json(dataset, results)result_files['bbox'] = '{}.{}.json'.format(out_file, 'bbox')result_files['proposal'] = '{}.{}.json'.format(out_file, 'bbox')mmcv.dump(json_results, result_files['bbox'])elif isinstance(results[0], tuple):json_results = segm2json(dataset, results)result_files['bbox'] = '{}.{}.json'.format(out_file, 'bbox')result_files['proposal'] = '{}.{}.json'.format(out_file, 'bbox')result_files['segm'] = '{}.{}.json'.format(out_file, 'segm')mmcv.dump(json_results[0], result_files['bbox'])mmcv.dump(json_results[1], result_files['segm'])elif isinstance(results[0], np.ndarray):json_results = proposal2json(dataset, results)result_files['proposal'] = '{}.{}.json'.format(out_file, 'proposal')mmcv.dump(json_results, result_files['proposal'])else:raise TypeError('invalid type of results')return result_files
其他的实现方式也差不多和这个相同
......
省略部分未模型初始化等操作部分if not distributed:model = MMDataParallel(model, device_ids=[0])outputs = single_gpu_test(model, data_loader, args.show, args.save_img, args.save_img_dir)else:model = MMDistributedDataParallel(model.cuda())outputs = multi_gpu_test(model, data_loader, args.tmpdir)res = []for id, boxes in enumerate(outputs):boxes=boxes[0]if type(boxes) == list:boxes = boxes[0]boxes[:, [2, 3]] -= boxes[:, [0, 1]]if len(boxes) > 0:for box in boxes:temp = dict()temp['image_id'] = id+1temp['category_id'] = 1temp['bbox'] = box[:4].tolist()temp['score'] = float(box[4])res.append(temp)with open(args.out, 'w') as f:json.dump(res, f)
将结构体写入文件_将COCO检测结果写入json文件相关推荐
- import引入json文件_在React组件中导入Json文件
我正在尝试在React组件中加载languages.json文件.当我想导入json文件时,我在第一步收到以下错误.这是错误: ERROR in ./app/languages.json Module ...
- python批量修改labelme(COCO)标注的json文件的label标签名称
python批量修改labelme(COCO)标注的json文件的label标签名称 在深度学习的实践中,使用labelme标注软件标注好数据集之后,如果标签的名称标注错误或者需要修改,庞大的数据量依 ...
- 基于流式输入输出 使用Java借助GSON库 实现对大型asc文件的读入解析 并输出为JSON文件
基于流式输入输出 使用Java借助GSON库 实现对大型asc文件的读入解析 并输出为JSON文件 致谢 1 为什么要使用流式输入输出(使用情景) 2 目标.主要思路及相关方法 2.1 目标 2.2 ...
- python 结构体数组 定义_一篇文章弄懂Python中所有数组数据类型
前言 数组类型是各种编程语言中基本的数组结构了,本文来盘点下Python中各种"数组"类型的实现. list tuple array.array str bytes bytearr ...
- 结构体数组排列_学习RTOS(3)数据结构
在 FreeRTOS 中存在着大量的基础数据结构列表和列表项的操作,列表和列表项是直接从 FreeRTOS 源码注释中的 list 和 list item 翻译过来的,其实就是对应我们 C 语言当中的 ...
- 内存映射文件 写入 卡住_在Java中使用内存映射文件时检测(写入)失败
内存映射文件 写入 卡住 内存映射文件是一个很好的并且经常被忽视的工具. 我不会在这里详细介绍它们的工作方式(使用 力 Google Luke!),但我将快速总结其优势: 操作系统提供的延迟加载和写入 ...
- golang判断结构体为空_如何在Golang中检查结构是否为空?
golang判断结构体为空 The size of an empty structure is zero in Golang. Here, empty structure means, there i ...
- go在方法中修改结构体的值_[Go]结构体及其方法
结构体类型可以包含若干字段,每个字段通常都需要有确切的名字和类型.也可以不包含任何字段,这样并不是没有意义的,因为还可以为这些类型关联上一些方法,这里可以把方法看作事函数的特殊版本. 函数事独立的程序 ...
- 数组、指针、结构体的总结_吃鱼的小脸猫_新浪博客
一.结构体和数组的区别 1.定义一个结构体是为方便保存不同类型的数据,而不同类型的数据放在一个结构体中 2.定义数组也是为方便存储大量数据,但数据必须是同一类型 3. 结构体中也包括结构体数组和结构体 ...
最新文章
- 如何自己动手建立最简单的动态网站
- pytorch笔记:Dataloader
- 定义100学生C语言,C语言考试试题:定义一个100位学生的结构体数组,按成绩从高到低进行排序...
- cview类 public_在MFC单文档的View类中,如何获得指向状态栏的指针
- 解决Sublime Text打开C++文件出现中文乱码
- windows下安装composer抛出Composer\Downloader\TransportException异常解决办法
- CRM Excel导出技术实现的调试截图
- 需求分析——识别系统需求中的三类事件
- git获得当前分支url_笔记本拿出来!软件工程师必须要知道的Git命令语句大汇总...
- WannaCry感染文件恢复方法,企业再也不用愁了!
- linux和安卓交互,Android中webview和js之间的交互及注意事项
- ati 缺少关键性文件_ATI显卡优化
- 保存的离线网页总是自动跳转怎么办???
- cad填充密度怎么调整_CAD填充图案放在哪里,这几步你要了解
- modbus功能码04实例_20种PLC元件编号和Modbus编号地址对应表
- java 16进制 负数_Java随笔:小心16进制负数
- 使用PS制作毛玻璃效果
- 火箭联盟修改车重教程,国服Wegame平台和外服Steam平台通用方法
- laravel维护模式 MaintenanceMode
- 小程序中的axio——flyio的使用