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 这些指标计算也可以

reid常用评价指标roc rank1 map,误识率far, 以及optim lr_scheduler 学习率衰减函数_第1张图片
reid常用评价指标roc rank1 map,误识率far, 以及optim lr_scheduler 学习率衰减函数_第2张图片

2、rank1 map

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

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

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

3 torch 学习率参数设置问题

pytorch 7个学习率衰减函数接口 https://blog.csdn.net/junqing_wu/article/details/93248190
reid常用评价指标roc rank1 map,误识率far, 以及optim lr_scheduler 学习率衰减函数_第4张图片
PyTorch学习率调整策略通过torch.optim.lr_scheduler接口实现。PyTorch提供的学习率调整策略分为三大类,分别是
a. 有序调整:等间隔调整(Step),按需调整学习率(MultiStep),指数衰减调整(Exponential)和 余弦退火CosineAnnealing。
b. 自适应调整:自适应调整学习率 ReduceLROnPlateau。
c. 自定义调整:自定义调整学习率 LambdaLR

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

# 准备环境
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)


你可能感兴趣的:(reid)