目标检测笔记(十):查看通过COCOEvaluator生成的coco_instances_results.json文件的详细检测信息,包含AP、AR、MR和DR等

这篇具有很好参考价值的文章主要介绍了目标检测笔记(十):查看通过COCOEvaluator生成的coco_instances_results.json文件的详细检测信息,包含AP、AR、MR和DR等。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

COCO评估器

COCO(Common Objects in Context)是一个被广泛使用的计算机视觉领域的数据集,其中包含了多个场景、多种对象以及不同光照和背景下的图像。COCO数据集中的每一张图片都标注了物体的类别、位置和大小等信息,这些信息可以用于训练和评估目标检测、语义分割等计算机视觉任务的模型。

COCO数据集中的图片和标注信息可以被用于训练和评估机器学习算法,但是为了保证算法的准确性,我们需要一个评估指标来量化算法的性能。COCO评估器(COCOEvaluator)就是一个用于计算目标检测和语义分割等算法性能的工具。它工作原理是将机器生成的结果与真实的标注信息进行比较,从而计算出各种指标,如精确度(precision)、召回率(recall)等,以评估算法的性能表现。

COCOEvaluator不仅可以计算单个类别的指标,还可以计算多个类别的指标,为算法的优化提供方向。此外,COCOEvaluator还可以根据不同的评估要求,如IoU(Intersection over Union)匹配、边框等,灵活地评估算法的性能。

验证集测试

首先注册数据集
mydata.py

from detectron2.data.datasets import register_coco_instances
register_coco_instances("MY_train", {}, "./dataSet/train.json", "./dataSet/images/train")
register_coco_instances("MY_test", {}, "./dataSet/test.json", "./dataSet/images/test")

然后通过import mydata导入注册的数据集,通过指定cfg和weights的文件,然后运行这个验证集测试代码即可生成对应的coco_instances_results.json


import mydata
from detectron2.config import get_cfg
import os
from detectron2.engine.defaults import DefaultPredictor
from detectron2.evaluation import COCOEvaluator, inference_on_dataset
from detectron2.data import build_detection_test_loader


DATASET_STR = "MY_test"

def get_max_path(output_dir_base):
    # 获取文件夹的文件数
    file_count = len(os.listdir(output_dir_base))
    return file_count+1

if __name__ == "__main__":
    save_path_root = "../output/val"
    os.makedirs(save_path_root, exist_ok=True)
    max_dir_num = get_max_path(save_path_root)

    cfg = get_cfg()
    # cfg.merge_from_file(
    #     r"../cfg/mask_rcnn_R_50_FPN_3x.yaml"
    # )
    # cfg.MODEL.WEIGHTS = "../output/train/1/model_final.pth"
    cfg.merge_from_file(
        r"../cfg/faster_rcnn_R_101_FPN_3x.yaml"
    )
    cfg.MODEL.WEIGHTS = "../weights/model_final.pth"

    print('loading from: {}'.format(cfg.MODEL.WEIGHTS))
    cfg.MODEL.ROI_HEADS.SCORE_THRESH_TEST = 0.7   # set the testing threshold for this model
    cfg.MODEL.ROI_HEADS.NUM_CLASSES = 4
    cfg.DATASETS.TEST = (DATASET_STR, )
    predictor = DefaultPredictor(cfg)
    cfg.OUTPUT_DIR = os.path.join(save_path_root, str(max_dir_num)) # 将output放在主目录下,每次验证都会往后创建新的文件夹来保存训练好的信息。
    print("保存文件的路径:{}".format(cfg.OUTPUT_DIR))
    evaluator = COCOEvaluator(DATASET_STR, cfg, False, output_dir=cfg.OUTPUT_DIR)
    val_loader = build_detection_test_loader(cfg, DATASET_STR)
    print(inference_on_dataset(predictor.model, val_loader, evaluator))

这时候我们若想要通过这个json文件来得到我们的检测指标,各类AP和AR指标以及MR(错误率)和DR(检测率),就可以通过下面这个代码(只需要指定COCO数据集的标签json文件(和验证的代码一样的json文件),然后再指定coco_instances_results.json的路径即可。

from pycocotools.coco import COCO
from pycocotools.cocoeval import COCOeval
import json, os

# 加载coco_instances_results.json文件中的预测结果
root = "../output/val/8/" # 这里修改为你得到的val文件路径
ins_path = os.path.join(root, 'coco_instances_results.json') # 对应的coco_instance的名称
ins_path_S = ins_path.split("/")
print(ins_path)
with open(ins_path, 'r') as f:
    results = json.load(f)

# 加载COCO数据集的注释文件
annFile = 'dataSet/test.json' # 这里加载你的验证集的json数据集
cocoGt = COCO(annFile)

# 加载预测结果到COCO格式中
cocoDt = cocoGt.loadRes(results)

# 初始化COCO评估器
cocoEval = COCOeval(cocoGt, cocoDt, 'bbox')

# 运行评估计算AP
cocoEval.evaluate()
cocoEval.accumulate()
cocoEval.summarize()

# 输出平均精度(AP)
print("Average Precision (AP): {:.2f}".format(cocoEval.stats[0]))
# 输出漏检率和检测率指标
print("Miss Rate (MR): {:.2f}".format(1 - cocoEval.stats[8]/cocoEval.stats[2]))
print("Detection Rate (DR): {:.2f}".format(cocoEval.stats[8]/cocoEval.stats[2]))
# 将输出结果保存到txt文件中
with open('{}/COCO_AP_MR_DR_AR.txt'.format(root), 'w') as f:
    f.write("Average Precision  (AP) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = {:.3f}\n".format(cocoEval.stats[0]))
    f.write("Average Precision  (AP) @[ IoU=0.50      | area=   all | maxDets=100 ] = {:.3f}\n".format(cocoEval.stats[1]))
    f.write("Average Precision  (AP) @[ IoU=0.75      | area=   all | maxDets=100 ] = {:.3f}\n".format(cocoEval.stats[2]))
    f.write("Average Precision  (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = {:.3f}\n".format(cocoEval.stats[3]))
    f.write("Average Precision  (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = {:.3f}\n".format(cocoEval.stats[4]))
    f.write("Average Precision  (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = {:.3f}\n".format(cocoEval.stats[5]))
    f.write("\n")
    f.write("Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=  1 ] = {:.3f}\n".format(cocoEval.stats[6]))
    f.write("Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets= 10 ] = {:.3f}\n".format(cocoEval.stats[7]))
    f.write("Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = {:.3f}\n".format(cocoEval.stats[8]))
    f.write("Average Recall     (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = {:.3f}\n".format(cocoEval.stats[9]))
    f.write("Average Recall     (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = {:.3f}\n".format(cocoEval.stats[10]))
    f.write("Average Recall     (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = {:.3f}\n".format(cocoEval.stats[11]))
    f.write("\n")
    f.write("Miss Rate (MR): {:.2f}\n".format(1 - cocoEval.stats[8]/cocoEval.stats[2]))
    f.write("Detection Rate (DR): {:.2f}\n".format(cocoEval.stats[8]/cocoEval.stats[2]))

print("AP、MR、DR和AR指标已保存到{}/COCO_AP_MR_DR_AR.txt文件中。".format(root))

运行之后即可在coco_instances_results.json的当前路径生成对应的txt文件。
目标检测笔记(十):查看通过COCOEvaluator生成的coco_instances_results.json文件的详细检测信息,包含AP、AR、MR和DR等,# 目标检测,目标检测,笔记,json文章来源地址https://www.toymoban.com/news/detail-760296.html

到了这里,关于目标检测笔记(十):查看通过COCOEvaluator生成的coco_instances_results.json文件的详细检测信息,包含AP、AR、MR和DR等的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • GroundingDINO(一种开集目标检测算法)服务化,根据文本生成检测框

    最近发现一个叫GroundingDINO的开集目标检测算法,所谓开集目标检测就是能检测的目标类别不局限于训练的类别,这个算法可以通过输入文本的prompt然后输出对应的目标框。可以用来做预标注或者其他应用,比如我们要训练某个细分场景的算法时,我们找不到足够的已经标注的

    2024年02月06日
    浏览(37)
  • 霹雳吧啦 目标检测 学习笔记

    霹雳吧啦Wz的个人空间-霹雳吧啦Wz个人主页-哔哩哔哩视频 目标检测篇 github地址;GitHub - WZMIAOMIAO/deep-learning-for-image-processing: deep learning for image processing including classification and object-detection etc. 实例分割vs语义分割:语义分割只有类别;实例分割是每一个目标。 test数据集不公开

    2024年02月09日
    浏览(43)
  • YOLO目标检测——真实和人工智能生成的合成图像数据集下载分享

    YOLO真实和人工智能生成的合成图像数据集,真实场景的高质量图片数据,图片格式为jpg,数据场景丰富。可用于检测图像是真实的还是由人工智能生成。 数据集点击下载 :YOLO真实和人工智能生成的合成图像数据集+120000图片+数据说明.rar

    2024年02月10日
    浏览(34)
  • 生成用于目标检测任务的合成图像教程:使用Blender、Python和3D资产

    生成用于目标检测任务的合成图像教程:使用Blender、Python和3D资产 缺少足够的训练数据是当前深度学习面临的一个主要问题。自动生成带有注释的合成图像是计算机视觉任务的一个有前途的解决方案。本文将首先概述合成图像数据的一些图像生成技术,然后生成一个无需手动

    2024年03月27日
    浏览(42)
  • 【多模态】21、BARON | 通过引入大量 regions 来提升模型开放词汇目标检测能力(CVPR2021)

    论文:Aligning Bag of Regions for Open-Vocabulary Object Detection 代码:https://github.com/wusize/ovdet 出处:CVPR2023 传统目标检测器只能识别特定的类别,开放词汇目标检测由于不受预训练类别的限制,能够检测任意类别的目标,而受到了很多关注 针对 OVD 问题的一个典型解决方案就是基于蒸

    2024年02月15日
    浏览(30)
  • 【多模态】18、ViLD | 通过对视觉和语言知识蒸馏来实现开集目标检测(ICLR2022)

    论文:Open-vocabulary Object Detection via Vision and Language Knowledge Distillation 代码:https://github.com/tensorflow/tpu/tree/master/models/official/detection/projects/vild 效果: 在 zero-shot 测试下,coco 达到了 36.6 AP,PASCAL VOC 达到了 72.2AP,Object365 达到了 11.8AP 本文提出了 Vision and Language knowledge Distillation(

    2024年02月14日
    浏览(33)
  • 基于3D点云的小目标检测学习笔记

    一、与图像相比, 基于点云的目标检测 一直面临着一些 挑战 : 1、 非结构化数据 :点云作为场景中点的位置具有稀疏和非结构化的性质,因此它们的密度和数量都随着场景中对象而变化。 2、 不变性排列 :点云本质上是一长串点(nx3矩阵,其中n是点数)。 在几何上,点

    2024年02月12日
    浏览(27)
  • 计算机视觉笔记 第三章:目标检测

      计算机视觉笔记:第一章 图像分类-CSDN博客 计算机视觉笔记 第二章 图像语义分割-CSDN博客 计算机视觉笔记 第三章:目标检测-CSDN博客 计算机视觉 第四章:图像识别、目标跟踪-CSDN博客 计算机视觉 第五章 多目视觉(立体视觉)-CSDN博客 标定图像中目标的位置,并给出目标

    2024年04月17日
    浏览(26)
  • 目标检测笔记(十五): 使用YOLOX完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)

    目标检测(Object Detection)是计算机视觉领域的一项重要技术,旨在识别图像或视频中的特定目标并确定其位置。通过训练深度学习模型,如卷积神经网络(CNN),可以实现对各种目标的精确检测。常见的目标检测任务包括:人脸检测、行人检测、车辆检测等。目标检测在安防

    2024年02月09日
    浏览(34)
  • 目标检测笔记(十四): 使用YOLOv8完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)

    目标检测(Object Detection)是计算机视觉领域的一项重要技术,旨在识别图像或视频中的特定目标并确定其位置。通过训练深度学习模型,如卷积神经网络(CNN),可以实现对各种目标的精确检测。常见的目标检测任务包括:人脸检测、行人检测、车辆检测等。目标检测在安防

    2024年02月07日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包