- gallery入库
- 测试query中每一类别图片与gallery中所有图片的特征相似度,保存gallery图片路径和相似度值
- 根据相似度排序检索的图片,并输出Top20图片到文件夹
- 统计检出的第一张图是同一类别,计数top1(不考虑阈值),计算相似度是否大于阈值,计数Top_One正确数
- 统计大于阈值的不是同一类别的图片数量,计算false_alarm_num虚警数
- 计算rank,统计底层中搜出同类别数量计数t,rank=rank+(float)t/(i+1)
- 检测精度rank/t,计入总mAP += rank/t
- 重复2-7,检索完成所有的query类别的所有图片
- 输出Top1检测数量top1,TOP1/Rank-1检出率top1/query_total_num,mAP平均均值精度mAP/query_total_num,余弦比对耗时,正确率Top_One/query_total_num,虚警数false_alarm_num,虚警率false_alarm_num/query_total_num
https://blog.csdn.net/weixin_39718268/article/details/105021631
python -m torch.distributed.launch --nproc_per_node=NUM_GPUS main.py [--arg1 --arg2 ...]
# 1) 初始化
torch.distributed.init_process_group(backend="nccl")
# 2) 配置每个进程的gpu
local_rank = torch.distributed.get_rank()
print('local_rank:{}'.format(local_rank))
torch.cuda.set_device(local_rank)
**关键问题:**尺度不变,具有辨别力的关键点,旋转不变,语义鸿沟(局部特征在表达高级视觉概念方面的局限性,如细微噪声敏感性太强,特征编码空间结构信息缺失,无法捕捉实际问题中的兴趣区域)
优化方向:
-
引入更多的监督信息;
-
不同程度、维度的attention(包括层、channel、类等等);
-
Triplet loss及其各种变种;
-
不同的特征聚合方式;
-
2001.05027-DELG Unifying Deep Local and Global Features for Image Search 从conv4_x提取特征进入attention模块得到local feature,再经过降维从1024->40维,global feature从conv5_x经过聚合得到。端到端global和local特征提取方法
学习焦虑 1. 以实践为目的,精简学习目标 2. 基于知识框架,进行系统化学习 3. 刻意练习,将知识内化为能力
以samplePlugin的FCPlugin为例,继承IPluginExt实现自定义插件 IPluginExt也快被废弃,建议用IPluginV2的相关插件。
class FCPlugin : public nvinfer1::IPluginExt
{
public:
FCPlugin(const nvinfer1::Weights* weights, int nbWeights, int nbOutputChannels)
: mNbOutputChannels(nbOutputChannels)
{
assert(nbWeights == 2);
解码流程
NVJPEG的解码有两种方式,分别是单Phrase解码和多Phrase解码,其主要的区别在于多Phrase解码将单Phrase的解码部分拆开成为3个Phrase以进一步提高NVJPEG软件库的灵活性,并可以通过优化解码流程以进一步提高解码性能。下图为单Phrase解码的流程图:
nvjpegCreate:负责分配和初始化句柄
nvjpegJpegStateCreate:负责分配和初始化nvjpegJpegState结构体,其包括临时JPEG信息。
- 点击 Add Remote,选择 SSH Credentials,填写主机的 SSH 配置信息,Python interpreter path 选择自己需要的远程服务器的解释器,然后在运行程序的时候,通过代码加入LD_LIBRARY_PATH和PYTHONPATH路径。
import sys
import os
print('Python %s on %s,%s' % (sys.version, sys.platform, sys.path))
os.environ['LD_LIBRARY_PATH']="/home/mars/hewu/tvm/build"
sys.path.append("/home/mars/hewu/tvm/python")
sys.path.append("/home/mars/hewu/tvm/topi/python")
TVM: An Automated End-to-End Optimizing Compiler for Deep Learning
越来越多的应用需要将机器学习应用到各种各样的硬件设备上。当前框架依赖于特定供应商的运算符库(*vendor-specific library*),并针对小范围的服务器级GPU进行优化。将工作负载(*workloads*) 部署到新平台,例如手机,嵌入式设备和加速器(如FPGA,ASIC),需要大量的手动工作。
我们发布了TVM,这是一种可提供计算图级优化(*graph-level optimization*) 和运算符级优化(*operator-level optimization*) 的编译器,可以为不同硬件后端的深度学习工作负载提供性能可移植性。TVM解决了深度学习面临的优化问题,例如高级运算符融合,映射到任意硬件原语,以及内存延迟隐藏。它还通过采用新颖的,基于学习的成本建模方法来快速搜索代码优化,从而自动优化低级程序来符合硬件特性。
实验结果表明,TVM可以提供跨硬件后端的性能,这些后端与用于低功耗CPU,移动GPU和服务器级GPU的最先进的手动调整库相比具有竞争力。我们还展示了TVM针对新加速器后端的能力,例如基于FPGA的通用深度学习加速器。该系统是在几家大公司内部开源和生产使用的。