reid常用评价指标roc rank1 map,误识率far, 以及optim lr_scheduler 学习率衰减函数

1 roc, 人脸识别或者reid问题 误识率far

*roc 横坐标是 误识率 far(fpr) 纵坐标是tpr *
ROC曲线-阈值评价标准 https://blog.csdn.net/abcjennifer/article/details/7359370
用来确定不同数据集下的阈值,实际情况下的不同数据集 由于是在没有label下的查找, 需要限定阈值来判断是否是一个人,大于阈值可能是一个人,小于阈值的一定不是一个人(虽然小于阈值的也有很小部分判断错误
例如固定横坐标 far =0.001 far=0.01 0.1 tpr 正确率阈值卡高了,可能会把相似度低的图片过滤掉

far tar测试 代码实现可以如下做
假设,正样本对1万个(图片1,图片2,1),负样本对10万个(图片1,图片2,0),生成图片对txt 文件,1代表两张图片是一个人,用欧式距离
当FAR=0.1时,查看10万负样本中,排序的10%中,距离最低的那个阈值(排序后的第10万*10%),当成tar阈值,大于阈值不是一个人,小于阈值是一个人
当FAR=0.001时,同上计算

或者直接计算所有的 tp fp tn 这些指标计算也可以

在这里插入图片描述
在这里插入图片描述

2、rank1 map

两者测试区别解释,参考连接 https://blog.csdn.net/Gavinmiaoc/article/details/80840193
map 更高底库所有的该id图片排序都在前面,对于该数据集来说特征提取性能更好,相关说明见如下连接

多粒度网络(MGN)的结构设计与技术实现 https://blog.csdn.net/Gavinmiaoc/article/details/80840193

在这里插入图片描述

3 torch 学习率参数设置问题

pytorch 7个学习率衰减函数接口 https://blog.csdn.net/junqing_wu/article/details/93248190
在这里插入图片描述
PyTorch学习率调整策略通过torch.optim.lr_scheduler接口实现。PyTorch提供的学习率调整策略分为三大类,分别是
a. 有序调整:等间隔调整(Step),按需调整学习率(MultiStep),指数衰减调整(Exponential)和 余弦退火CosineAnnealing。
b. 自适应调整:自适应调整学习率 ReduceLROnPlateau。
c. 自定义调整:自定义调整学习率 LambdaLR

在这里插入图片描述

# 准备环境
import torch
import torch.optim as optim
from torch.optim import lr_scheduler
from torchvision.models import AlexNet
import matplotlib.pyplot as plt

model = AlexNet(num_classes=2)
optimizer = optim.SGD(params=model.parameters(), lr=0.05)


不知道学习率衰减的变化,就画图看看


scheduler = lr_scheduler.CyclicLR(optimizer,base_lr=0.05,max_lr=0.1,step_size_up=10,step_size_down=10)

plt.figure()
x = list(range(100))
y = []
for epoch in range(100):
    scheduler.step()
    lr = scheduler.get_lr()
    y.append(scheduler.get_lr()[0])

plt.plot(x, y)


热门文章

暂无图片
编程学习 ·

由Spring管理的对象的生命周期

注:完整代码在文章最后 生命周期:某个对象从创建到最终销毁会经历的历程! 通常,需要讨论生命周期时,对应的数据类型的对象都不是由开发人员自行维护的! 被容器维护的对象,都是由容器创建对象,并在适当的时候调用其中的某些方法的!而开发人员需要做的就是“确定满足某条…
暂无图片
编程学习 ·

线程

1.线程 1.什么叫做线程,跟进程之间的关系 进程:独立的cup空间运行 线程:进程中的一个执行流程,一个进程中可以包含多个线程,这些线程共享该进程提供的资源 2.创建线程(两种方式) 让这类继承Thread类 class XXX extends Thread{ public void run() Thread xx = new Threa…
暂无图片
编程学习 ·

活动目录的备份和恢复

活动目录的备份和恢复AD的备份和恢复AD回收站说明启用回收站功能演示AD回收站AD活动目录的备份和还原AD活动目录的备份安装Windows Server Backup工具添加角色和功能开始之前-安装类型-服务器选择-服务器角色,默认下一步功能确认结果开始备份AD活动目录AD活动目录的恢复重启按…
暂无图片
编程学习 ·

【数据结构】数据结构三要素

数据结构三要素 数据结构的三要素包括数据逻辑结构、数据存储结构和数据的运算。 数据逻辑结构 数据的逻辑结构是指数据元素之间的逻辑关系,即从逻辑关系上描述数据。它与数据的具体存储形式无关,是独立于计算机的。数据逻辑结构通常分为线性结构和非线性结构。典型的数据结构…
暂无图片
编程学习 ·

阿里热更新hotfix使用

一、SDK引入项目build中添加buildscript {repositories {google()jcenter()//添加这句maven {url "http://maven.aliyun.com/nexus/content/repositories/releases"}}dependencies {...}}allprojects {repositories {google()jcenter()maven { url "https://jit…
暂无图片
编程学习 ·

训练数据转换为PASCAL VOC2007

数据 我们已有标注数据个数为json保存的,现在训练代码使用的标注格式为PASCAL VOC2007,为了不修改代码,将数据转换到PASCAL VOC2007的xml格式。 转换代码 import os import json from lxml.etree import Element, SubElement, tostring, ElementTree from xml.dom import mi…
暂无图片
编程学习 ·

qt工程封装为dll库并调用

#.pro文件中加入如下语句,并注释掉原本相关原句在.h文件中的修改,将 xxx_global.h 文件中的内容拷贝到.h文件中,我们是直接修改pro文件的,所以这部分需要自己写入(没得给您复制噢)。形式如下,需要修改QDBLSIDERSHARED_EXPORT,将其修改为 xxx(工程名大写)SHARED_E…
暂无图片
编程学习 ·

layui layer.open 弹窗,title标题根据不同场景显示不同的值

以表格操作弹窗为例表格有添加,修改,查看等等共用一个编辑弹窗,这时候弹窗标题就需要根据操作变化发生变化 废话少说,具体操作代码如下: parent.$(".layui-layer-title")[0].innerText= “要修改的内容”; //情况不同可能不需要parent的就别加 $(".layui-…
暂无图片
编程学习 ·

Java中Date类型数据格式转换

查询数据库datetime类型数据,返回的结果是Mon Jun 22 19:37:29 CST 2020 先转换成yyyy-MM-dd类型的格式。 /** * 获取现在时间 * * @return 返回短时间字符串格式yyyy-MM-dd */ public static String getStringDateShort() { Date currentTime = new Date(); SimpleDateF…
暂无图片
编程学习 ·

git学习日志-标签

git也可以像svn一样打标签,以此来标记发布节点,以示重要性。 对标签的操作,一般包括: 1. 列出标签 2. 创建标签 3. 删除标签 4. 检出标签 一、列出标签 执行git tag命令,就可以看到当前仓库中已经打过的标签。注意: 这个命令会以字母顺序列出标签。 也可以加上-l或--list…
暂无图片
编程学习 ·

屏蔽系统更新

win+r services.msc 改为禁用 恢复 -> 全改为无操作win + r gpedit.msc 找到windows 更新 中的 配置自动更新禁用掉注: 家庭版无法打开gpedit.msc 新建一个文本文档,名字随便取,编辑以下批处理内容,保存后将后缀名改为.bat ,右键使用管理员权限执行: @echo of…
暂无图片
编程学习 ·

牛客习题总结21

借助别人的图……如果序列有序或者基本有序,则直接插入或者冒泡最简单无向图的顶点个数为n,则该图最多有 n(n-1)/2 条边; 有相图的顶点个数为n,则该图最多有n(n-1)条边。
暂无图片
编程学习 ·

用Tableau制作滚动时间轴(下)

上一篇文章《用Tableau制作滚动时间轴(上)》我们介绍了滚动时间轴的基本制作方法。这篇文章我们继续丰富和美化时间轴。制作内容显示工作表由于数据集内有大量的文字描述内容,那么让这些内容显示到时间轴里,就不太现实了。需要单独建立一个工作表来显示文字内容。这里我们还…
暂无图片
编程学习 ·

面试官:遇到过什么系统故障?怎么解决?看完后能轻松应对

很多人在面试时,会被问到这样的问题:遇到过什么系统故障?怎么解决的?下面是笔者根据自己15年互联网研发经历总结的多个线上故障真实案例。相信可以帮你从容应对面试官的提问!本文图不多,但内容很干!理解为主,面试为辅,学以致用!添加小助手VX:xuanwo008即可获取2020年…
暂无图片
编程学习 ·

区块链存在哪些问题需待被解决?

虽然说区块链越来越被大家熟知,全国各地的政策也都在逐渐利好,但是区块链的实际落地应用,在我们身边却很少见到。区块链目前大部分是政府在推动使用,接下来是企业,可以说目前区块链技术基本上是完全ToB的,没有ToC。如果你把炒币算进去的话,那就有ToC了。区块链技术的落地…
暂无图片
编程学习 ·

HTML5 向网页嵌入视频和音频

现在很多网站上都会使用到视频和音频,HTML5 中提供了展示视频和音频的标签。向网页嵌入视频可以使用 <video> 标签,而嵌入音频可以使用 <audio> 标签。这两个标签都是 HTML 5 中新增的标签,两个标签中的属性和方法也很类似,但也有些不同。其中 audio 元素用于…
暂无图片
编程学习 ·

JavaScript按位运算符

按位运算符将其操作数当做32位的比特序列(由0和1组成),而不是十进制、十六进制或八进制数值。 我们主要了解的有七种,分别是:&、|、^、~、<<、>>、>>>。 按位与运算符 按位与 & 运算符,对两个 32 位表达式的每一位执行按位与运算。如果a 和…