网络模型mAP计算实现代码

一、mAP精度计算

这里首先介绍几个常见的模型评价术语,现在假设我们的分类目标只有两类,计为正例(positive)和负例(negtive)分别是:

1)True positives(TP): 被正确地划分为正例的个数,即实际为正例且被分类器划分为正例的实例数(样本数);

2)False positives(FP): 被错误地划分为正例的个数,即实际为负例但被分类器划分为正例的实例数;

3)False negatives(FN):被错误地划分为负例的个数,即实际为正例但被分类器划分为负例的实例数;

4)True negatives(TN): 被正确地划分为负例的个数,即实际为负例且被分类器划分为负例的实例数。

P

代表precision即准确率,计算公式为预测样本中实际正样本数 / 所有的正样本数
即 precision=TP/(TP+FP);

R

代表recall即召回率,计算公式为 预测样本中实际正样本数 / 预测的样本数即 Recall=TP/(TP+FN)=TP/P

一般来说,precision和recall是鱼与熊掌的关系,往往召回率越高,准确率越低

AP

 AP 即 Average Precision即平均精确度

mAP

mAP 即 Mean
Average Precision即平均AP值,是对多个验证集个体求平均AP值,作为 object dection中衡量检测精度的指标。

F

度量(F-measure),F度量涵盖了准确率和召回率这两个指标。其计算公式如下:F = 2 * P * R /
(P + R)

P-R曲线

P-R曲线即
以 precision 和 recall 作为 纵、横轴坐标 的二维曲线。通过选取不同阈值时对应的精度和召回率画出

总体趋势,精度越高,召回越低,当召回达到1时,对应概率分数最低的正样本,这个时候正样本数量除以所有大于等于该阈值的样本数量就是最低的精度值。

另外,P-R曲线围起来的面积就是AP值,通常来说一个越好的分类器,AP值越高

总结一下,在目标检测中,每一类都可以根据 recall 和 precision绘制P-R曲线,AP就是该曲线下的面积,mAP就是所有类AP的平均值。

二.评测代码

import tensorflow as tf

#精确率评价指标

def metric_precision(y_true,y_pred):

TP=tf.reduce_sum(y_true*tf.round(y_pred))TN=tf.reduce_sum((1-y_true)*(1-tf.round(y_pred)))FP=tf.reduce_sum((1-y_true)*tf.round(y_pred))FN=tf.reduce_sum(y_true*(1-tf.round(y_pred)))precision=TP/(TP+FP)return precision

#召回率评价指标

def metric_recall(y_true,y_pred):

TP=tf.reduce_sum(y_true*tf.round(y_pred))TN=tf.reduce_sum((1-y_true)*(1-tf.round(y_pred)))FP=tf.reduce_sum((1-y_true)*tf.round(y_pred))FN=tf.reduce_sum(y_true*(1-tf.round(y_pred)))recall=TP/(TP+FN)return recall

#F1-score评价指标

def metric_F1score(y_true,y_pred):

TP=tf.reduce_sum(y_true*tf.round(y_pred))TN=tf.reduce_sum((1-y_true)*(1-tf.round(y_pred)))FP=tf.reduce_sum((1-y_true)*tf.round(y_pred))FN=tf.reduce_sum(y_true*(1-tf.round(y_pred)))precision=TP/(TP+FP)recall=TP/(TP+FN)F1score=2*precision*recall/(precision+recall)return F1score<br><br>

#编译阶段引用自定义评价指标示例

model.compile(optimizer=‘adam’,

      loss='binary_crossentropy',metrics=['accuracy',metric_precision,metric_recall,metric_F1score])

AUC for a binary classifier

def auc(y_true, y_pred):

ptas = tf.stack([binary_PTA(y_true,y_pred,k) for k in np.linspace(0, 1, 1000)],axis=0)pfas = tf.stack([binary_PFA(y_true,y_pred,k) for k in np.linspace(0, 1, 1000)],axis=0)pfas = tf.concat([tf.ones((1,)) ,pfas],axis=0)binSizes

= -(pfas[1:]-pfas[:-1])

s = ptas*binSizesreturn K.sum(s, axis=0)

#-----------------------------------------------------------------------------------------------------------------------------------------------------

PFA, prob false alert for binary classifier

def binary_PFA(y_true, y_pred, threshold=K.variable(value=0.5)):

y_pred = K.cast(y_pred >= threshold, 'float32')# N =

total number of negative labels

N = K.sum(1 - y_true)# FP

= total number of false alerts, alerts from the negative class labels

FP = K.sum(y_pred - y_pred * y_true)return FP/N

#-----------------------------------------------------------------------------------------------------------------------------------------------------

P_TA prob true alerts for binary classifier

def binary_PTA(y_true, y_pred, threshold=K.variable(value=0.5)):

y_pred = K.cast(y_pred >= threshold, 'float32')# P =

total number of positive labels

P = K.sum(y_true)# TP

= total number of correct alerts, alerts from the positive class labels

TP = K.sum(y_pred * y_true)return TP/P

#接着在模型的compile中设置metrics

False Discovery Rate(FDR)

from sklearn.metrics import confusion_matrix

y_true = [0,0,0,0,0,0,1,1,1,1,1]

y_pred = [0,0,0,0,0,0,1,1,1,1,1]

tn, fp , fn, tp = confusion_matrix(y_true,
y_pred).ravel()

fdr = fp / (fp + tp)

print(fdr)

网络模型mAP计算实现代码相关推荐

  1. 绝对不容错过:最完整的检测模型评估指标mAP计算指南(附代码)在这里!

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 前言 本文翻译自Measuring Object Detectio ...

  2. VOC数据集mAP计算(附带代码)解析

    VOC数据集mAP计算(附带代码)解析 一.几个概念 IoU:交并比 (目标检测实际上是分类问题,检测器在图片上以不同像素尺度生成大量的框,如果检测器认为某个框里存在物体,就把它画出来) TP:画出了 ...

  3. voc数据集的map计算方式

    相关概念 map mean average precision,表示各类别ap的平均值 ap average precision,表示P-R曲线下的面积 p precision,查准率,p = T P ...

  4. 睿智的目标检测20——利用mAP计算目标检测精确度

    睿智的目标检测20--利用mAP计算目标检测精确度 学习前言 GITHUB代码下载 知识储备 1.IOU的概念 2.TP TN FP FN的概念 3.precision(精确度)和recall(召回率 ...

  5. Yolov3 mAp计算,吐血整理,含Bug处理

    Yolov3 mAp计算,吐血整理,含Bug处理 用了两天时间把计算mAp值该踩的坑基本上踩了一遍,整理一下,以免以后忘记 一.所需材料 训练好的权重weights 验证集图片 验证集的xml格式标记 ...

  6. 目标检测mAP计算详解

    首先说明计算mAP有多个版本,每个数据集和比赛用的版本和方式也不同,下以VOC与COCO举例说明.精确度(precision),召回率(recall)分别为: 常规的mAP计算为(这是一个N类检测任务 ...

  7. Ubuntu16.04下实现darknet-yolov3训练自己的数据(含loss图、mAP计算)

    记录一下本地编译darknet并用自己的数据集来训练yolov3的过程,最后补充了mAP的计算方法. 1.环境配置 首先CUDA和Cudnn是必备的,安装有很多教程就不多写了,opencv安装比较麻烦 ...

  8. 皮尔逊相关系数的计算(python代码版)

    皮尔逊相关系数的计算(python代码版) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 fro ...

  9. python多线程为啥是假的?(GIL 全局解释器锁)(python多线程不适合并行化的计算密集型代码)

    1. 问: 答: 2. from threading import Thread ​ def loop(): ​while True: ​print("亲爱的,我错了,我能吃饭了吗?&quo ...

最新文章

  1. 41 JavaScript中的闭包
  2. 图数据的攻与防:智谱AI和biendata联合组织KDD Cup 2020
  3. 【渝粤题库】国家开放大学2021春1425调剂学(本)题目
  4. linux 查看磁盘管理,linux下的磁盘管理
  5. (72)FPGA约束效率(防止过约束)
  6. 调整SAP系统中物料账和财务账的期间
  7. 基本排序方法实现:选择排序、插入排序、希尔排序
  8. 深入理解HTTP消息头
  9. 理工科专业精品书系列
  10. Win10系统高分辨率缩放时应用程序字体模糊
  11. Docker——网络
  12. 【神经网络】权重衰减(weight-decay)
  13. 免费的office软件哪个好用
  14. 刚注册好领了营业执照的公司可以申请软件著作权登记证书么?
  15. Mysql 新建用户并且授权用户的访问数据库权限以及可以对数据的操作类型
  16. 书包网小说多线程爬虫
  17. 数据结构 (3)栈与队列之粗心的人如何写oj血的教训
  18. macbook上好用的解压软件_好用的Mac解压软件推荐
  19. Sphinx 0.9.9/Coreseek 3.2 参考手册
  20. 肠道核心菌属——普拉梭菌F. prausnitzii,预防炎症的下一代益生菌

热门文章

  1. 做人留一线,日后好相见
  2. Redis常见面试问题汇总及解析
  3. jquery.raty评星插件
  4. cuda安装教cudnn安装显卡问题
  5. tensorflow问题
  6. 深度学习的Xavier初始化方法
  7. 人脸识别数据集精粹(下)
  8. 2021年大数据HBase(九):Apache Phoenix的安装
  9. Django高级管理静态文件和中间件5.1
  10. python random 随机生成一个数