【目标检测】

2023-11-06

test_coco.py
cal_area


import os
import pickle
import cv2
import matplotlib.pyplot as plt
import numpy as np
from pathlib import Path
import sys
FILE = Path(__file__).resolve()
ROOT = FILE.parents[0].parents[0]  # YOLOv5 root directory
if str(ROOT) not in sys.path:
    sys.path.append(str(ROOT))  # add ROOT to PATH
ROOT = Path(os.path.relpath(ROOT, Path.cwd()))  # relative

import src.evaluators.coco_evaluator as coco_evaluator
import src.evaluators.pascal_voc_evaluator as pascal_voc_evaluator
import src.utils.converter as converter
import src.utils.general_utils as general_utils
from src.bounding_box import BoundingBox
from src.utils.enumerators import BBFormat, BBType, MethodAveragePrecision

#############################################################
# DEFINE GROUNDTRUTHS AND DETECTIONS
#############################################################
current_dir = os.path.dirname(os.path.realpath(__file__))

dir_imgs = 'C:\\D\\code\\yolov5\\val\\images'
dir_gts = 'C:\\D\\code\\yolov5\\val\\labels'
dir_dets = 'C:\\D\\code\\yolov5\\runs\\val\\exp_CIOU300\\labels'
filepath_yolo_names = 'C:\\D\\code\\ship.names'


gt_bbs = converter.yolo2bb(dir_gts,  dir_imgs, filepath_yolo_names, bb_type=BBType.GROUND_TRUTH)
det_bbs = converter.yolo2bb(dir_dets,  dir_imgs, filepath_yolo_names, bb_type=BBType.DETECTED)


small=200**2
medium=550**2
large=np.inf#np.inf
gt_bbs = converter.yolo2bb(dir_gts,  dir_imgs, filepath_yolo_names, bb_type=BBType.GROUND_TRUTH)
N=len(gt_bbs)
N_s=0
N_m=0
N_l=0
for i in range(N):
    area_i=gt_bbs[i].get_area() 
    if area_i <small:
        N_s=N_s+1
    elif (area_i>=small) & (area_i<medium):
        N_m=N_m+1
    elif (area_i>=medium) & (area_i<large):
        N_l=N_l+1        
print(">= medium <%s large_size's num is =%s, percent is %s"%(large,N_l,N_l/N))
print(">=small <%s medium_size's num is =%s, percent is %s"%(medium,N_m,N_m/N))
print("<%s small_size's num is =%s, percent is %s"%(small,N_s,N_s/N))
print("total num",N)
#############################################################
# EVALUATE WITH COCO METRICS
#############################################################
coco_res1 = coco_evaluator.get_coco_summary(gt_bbs, det_bbs)
#coco_res2 = coco_evaluator.get_coco_metrics(gt_bbs, det_bbs)
print(coco_res1)

设置small medium large的像素范围


    small = {
        #i: _evaluate(iou_threshold=i, max_dets=100, area_range=(0, 32**2))##
        i: _evaluate(iou_threshold=i, max_dets=100, area_range=(50**2, 100**2))##
        for i in iou_thresholds
    }
    APsmall = [x['AP'] for k in small for x in small[k] if x['AP'] is not None]
    APsmall = np.nan if APsmall == [] else np.mean(APsmall)
    ARsmall = [
        x['TP'] / x['total positives'] for k in small for x in small[k] if x['TP'] is not None
    ]
    ARsmall = np.nan if ARsmall == [] else np.mean(ARsmall)

    medium = {
        #i: _evaluate(iou_threshold=i, max_dets=100, area_range=(32**2, 96**2))
        i: _evaluate(iou_threshold=i, max_dets=100, area_range=(100**2, 200**2))
        for i in iou_thresholds
    }
    APmedium = [x['AP'] for k in medium for x in medium[k] if x['AP'] is not None]
    APmedium = np.nan if APmedium == [] else np.mean(APmedium)
    ARmedium = [
        x['TP'] / x['total positives'] for k in medium for x in medium[k] if x['TP'] is not None
    ]
    ARmedium = np.nan if ARmedium == [] else np.mean(ARmedium)

    large = {
        #i: _evaluate(iou_threshold=i, max_dets=100, area_range=(96**2, np.inf))
        i: _evaluate(iou_threshold=i, max_dets=100, area_range=(550**2, np.inf))
        for i in iou_thresholds
    }

ref

https://github.com/rafaelpadilla/review_object_detection_metrics

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【目标检测】 的相关文章

随机推荐

  • RP9-3 事件 情形

    事件 1 元件的鼠标事件10种 也包括两种触屏 单击和长按 单击 Click or Tap 双击 Double Click or Double Tap 右击 Context Meuu Right Click 按下 Mouse Button
  • 解决Windows 组件存储已损坏,0x80073712错误

    在 Windows 8 与 Windows Server 2012 当系统组件有损毁时 我们可以在不影响目前系统状况下来检查与修复系统组件 如下 当我添加功能组件时报如下错误 明显可以看出我的组件存储已损坏 那今天就让我告诉大家解决方案 我
  • 算法、数据结构可视化

    算法 数据结构可视化 一 总结 一句话总结 比如算法 数据结构 很多都有可视化 学习要知道用可视化更好的学习 1 可视化数据结构 http www cs usfca edu galles visualization Algorithms h
  • ffmpeg的使用

    目录 ffmpeg的下载 配置 下载 版本说明 环境变量配置 ffmpeg处理m3u8 ts的常用命令 ffmpeg是一个十分强大的音视频处理工具 提供转码 播放等基础功能 功能十分全面 强大 但命令繁多复杂 通常不直接使用 而是集成在带G
  • vue门户网站,滚动到可视化区域展示动画效果方案

    1 准备两个工具库 1 1 animate css 动画库 动画效果展示 Animate css A cross browser library of CSS animations 1 2 wowjs 负责滚动到可视化区域 展示animat
  • 各种正交以及正交和

    20200924 笛卡尔积里面选取交集为空或者交集等于恒值 自己定义其他条件 的 相乘之和 https www 59baike com a 365039 35 i 正交和 编程中 经常出现正交这个词 正交指相互独立 不可替代 并且组合起来可
  • openwrt上nginx扩展模块的支持

    在固件开发过程中 上层业务层需要用到nginx的一些扩展模块 比如ngx devel kit master set misc nginx module master nginx push stream module master ngx c
  • 幸运数的划分

    题目描述 判断一个正整数n是否能被一个 幸运数 整除 幸运数是指一个只包含4或7的正整数 如 7 47 477等都是幸运数 17 42则不是幸运数 输入 一行一个正整数n 1 n 1000 输出 一行一个字符串 如果能被幸运数整除输出 YE
  • ArgumentError: Python argument types in ****** did not match C++ signature:

    这种错误一般是由于数据类型错误 我是这样的 ArgumentError Traceback most recent call last tmp ipykernel 2665 3113553009 py in 26 27 filename c
  • 三极管的三种状态

    三极管的三种状态也叫三个工作区域 即 截止区 放大区和饱和区 1 截止区 三极管工作在截至状态 当发射结电压Ube小于0 6 0 7V的导通电压 发射结没有导通 集电结处于方向偏执 没有放大作用 2 放大区 三极管的发射极加正向电压 集电极
  • 斗图网斗图全站爬取(用正则表达式re)

    import re import requests import os class doutu spyder first url first name headers User Agent Mozilla 5 0 Windows NT 10
  • python安装pywin32出现DLL load failed的解决办法

    在安装pywin32最后一步时会提示DLL load failed 安装完成后import win32com client也会出现同样的问题 解决办法 把 Lib site packages pywin32 system32下的三个dll文
  • 如何用计算机发匿名短信,电脑如何给手机发信息_电脑匿名给手机发短信

    2017 01 09 08 24 27 腾讯应用宝 手机和电脑都安装好应用宝后 手机打开USB调试模式 电脑运行应用宝 无线连接手机后 就可以在电脑上发手机信息了 不过信息费扣的是你手机卡上的 无非就是借用电脑的键盘打字 2017 01 1
  • anaconda中如何安装tflearn?

    1 打开anaconda prompt 2 activate tensorflow 环境名 3 pip install tflearn 4 如何安装tflearn
  • element-ui二次封装(下拉菜单el-dropdown)

    样式效果 效果1 效果2 效果1组件调用
  • 如何查看中科院2020期刊分区表?

    如何查看中科院2020期刊分区表 2020年中国科学院文献情报中心期刊分区表 以下简称基础版分区表 正式发布 2020年基础版分区表在秉承方法科学和数据客观的基础上 延续使用2019年基础版分区表的方法体系 2020基础版分区表继续突出支持
  • vue怎么引入环境变量_vue 文件中如何获取环境变量

    环境变量的传递路径 命令行命令 gt Webpack gt Webpack 加载的各种 js 和 Vue 文件 你的 nodejs 运行命令启动项目 package json dev cross env BABEL ENV developm
  • Python 日期时间datetime 加一天,减一天,加减一小时一分钟

    当前日期时间 import datetime print datetime datetime now 2018 05 08 16 53 30 101000 1 2 3 格式化时间 import datetime print datetime
  • FPGA零基础学习之Vivado-数码管驱动设计实验

    FPGA零基础学习之Vivado 数码管驱动设计实验 本系列将带来FPGA的系统性学习 从最基本的数字电路基础开始 最详细操作步骤 最直白的言语描述 手把手的 傻瓜式 讲解 让电子 信息 通信类专业学生 初入职场小白及打算进阶提升的职业开发
  • 【目标检测】

    test coco py cal area import os import pickle import cv2 import matplotlib pyplot as plt import numpy as np from pathlib