Skip to content

Instantly share code, notes, and snippets.

View hewumars's full-sized avatar

Mars hewumars

View GitHub Profile
@hewumars
hewumars / 1.md
Last active January 27, 2021 07:25
1. 图像检索测试demo流程 2. 图像re-rank流程 3. delg模型感受野计算 4. attention模块 5. pca降维 6. BOF,KV,VLAD等局部聚合描述符 7. GeM聚合描述符 8. 相似度比对
  1. gallery入库
  2. 测试query中每一类别图片与gallery中所有图片的特征相似度,保存gallery图片路径和相似度值
  3. 根据相似度排序检索的图片,并输出Top20图片到文件夹
  4. 统计检出的第一张图是同一类别,计数top1(不考虑阈值),计算相似度是否大于阈值,计数Top_One正确数
  5. 统计大于阈值的不是同一类别的图片数量,计算false_alarm_num虚警数
  6. 计算rank,统计底层中搜出同类别数量计数t,rank=rank+(float)t/(i+1)
  7. 检测精度rank/t,计入总mAP += rank/t
  8. 重复2-7,检索完成所有的query类别的所有图片
  9. 输出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
@hewumars
hewumars / readme.md
Last active October 9, 2020 01:42
pytorch分布式训练

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)

  1. 安培架构:全球最大7nm芯片,拥有542亿个晶体管,采用40GB三星HBM2,内存带宽可达到1.6 Tbps。高带宽的HBM2内存和更大、更快的缓存为增加的CUDA Core和Tensor Core提供数据。
  2. 第三代Tensor Core:处理速度更快、更灵活,TF32精度可将AI性能提升20倍。16x16大张量运算单元。而图灵架构是4x4小单元。
  3. 结构化稀疏:进一步将AI推理性能提升2倍。
  4. 多实例GPU:每个GPU可分成7个并发实例,优化GPU利用率。
  5. 第三代NVLink和NVSwitch:高效可扩展,带宽较上一代提升2倍有余。

2080TITensorCore性能

@hewumars
hewumars / 1.md
Last active June 13, 2022 06:05
1. 论文列表 2. D2D Keypoint Extraction with Describe to Detect Approach 论文理解 3. R2D2 Repeatable and Reliable Detector and Descriptor 论文理解 4. ASLFeat Learning Local Features of Accurate Shape and Localization 论文理解 5. 局部特征检索专利技术交底书 6. Attention-Based Query

**关键问题:**尺度不变,具有辨别力的关键点,旋转不变,语义鸿沟(局部特征在表达高级视觉概念方面的局限性,如细微噪声敏感性太强,特征编码空间结构信息缺失,无法捕捉实际问题中的兴趣区域)

优化方向:

  1. 引入更多的监督信息;

  2. 不同程度、维度的attention(包括层、channel、类等等);

  3. Triplet loss及其各种变种;

  4. 不同的特征聚合方式;

  5. 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信息。
  1. 点击 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

Abstract

越来越多的应用需要将机器学习应用到各种各样的硬件设备上。当前框架依赖于特定供应商的运算符库(*vendor-specific library*),并针对小范围的服务器级GPU进行优化。将工作负载(*workloads*) 部署到新平台,例如手机,嵌入式设备和加速器(如FPGA,ASIC),需要大量的手动工作。

我们发布了TVM,这是一种可提供计算图级优化(*graph-level optimization*) 和运算符级优化(*operator-level optimization*) 的编译器,可以为不同硬件后端的深度学习工作负载提供性能可移植性。TVM解决了深度学习面临的优化问题,例如高级运算符融合,映射到任意硬件原语,以及内存延迟隐藏。它还通过采用新颖的,基于学习的成本建模方法来快速搜索代码优化,从而自动优化低级程序来符合硬件特性。

实验结果表明,TVM可以提供跨硬件后端的性能,这些后端与用于低功耗CPU,移动GPU和服务器级GPU的最先进的手动调整库相比具有竞争力。我们还展示了TVM针对新加速器后端的能力,例如基于FPGA的通用深度学习加速器。该系统是在几家大公司内部开源和生产使用的。