-
目前我的博客是部署在github pages上,源码是一个repo,渲染出来的静态页面是一个repo. 更新的时候是把后者作为前者的submodule. 感觉这种方式有些落后了,简直和某司内部的平台有的一比。因此尝试采用了下github actions,来自动化这个部署的流程。 build github pages 其实类似gitlab ci. 最开始我以为需要自己配置服务器,结果发现并不需要,直接用公用的就可以。 详细内容可以阅读github actions 遇到的主要问题其实是,在一个repo的github actions的pipeline 里推送到另外一个repo提示一些权限方面的错误。 解决的办法是配置下ssh key. 假 …
Read More -
2020年终总结
Jan 3, 2021 · 1 min read本来不知道写什么所以不打算写了,不过后来觉得可以把今年做的一些重大的决定写出来,把当时的分析和想法记录下来。这样若干年后再回看,就能找到,是哪些明智或愚蠢的决定,对人生产生了巨大的影响。 职业选择 在商汤待了1234天之后,还是离开了这个一毕业就在地方。新的岗位完全远离了cv方向,主要和推荐相关了。 在换工作方面其实一直特别迷茫,迷茫在我不知道我在商汤的岗位是在做什么。想起19年的时候,猎头都是先默认我是做cv算法的。当得知我虽然不是做算法研究的,就没兴趣聊了2333. 或者有些猎头会觉得,既然不是做算法研究的那就是做工程的了,那对后端一定很熟悉吧? 我觉得这个也和行业内重刷点,轻落地的氛围有很大关系。 这个氛围感觉2020年有了很 …
Read More -
背景 CSAPP:3e 的配套实验 地址 分成了两个部分,第一部分是模拟一下cache的miss,hit,evict的规则。第二部分是优化一个矩阵的转置,使得miss尽可能少。 PART A 给了一个标程csim-ref,要求实现一个程序,输出与该标程一致。 写的时候太心急了。。导致没看完作业要求就开始写了。。 然后就纠结了好久。。如果要访问的地址超过了一个block line的边界该怎么办。。 然而实际上题目里已经把这种情况排除了。。 For this this lab, you should assume that memory accesses are aligned properly, such that a single …
Read More -
前言 偶然发现了 torch2trt 的模型转换方案,思路是直接将pytorch op映射到TensorRT的python api. 在pytorch进行每个op forward的时候,tensorrt也相应往network上添加op. 这里会先涉及torch2trt的使用,后面会补充这个转换工具的代码学习 使用torch2trt torch2trt pytorch可以直接安装,但是torchvision根据 pytorch-for-jetson-version-1-6-0-now-available 中的说法,需要编译安装 1git clone https://github.com/pytorch/vision 然后切换到tag …
Read More -
写在前面 主要是需要在jetson nano做模型转换,来记录下踩的坑 目前有两条路径,一条是我们现有的转换路径,也就是pytorch->onnx(->caffe)->trt的路径 在这条路径上踩了比较多的坑,最终暂时放弃,最直接的原因是cudnn8.0升级接口发生改动,编译caffe遇到较多问题 这里其实仍然采用了两条平行的路径,一条是直接在nano上构建环境,另外一种是基于docker(包括构建交叉编译环境用于加快编译速度) 另一条路径是基于torch2trt,是一条直接pytorch->trt的路径 这里主要记录在第一条路径上踩过的坑 环境准备 先过一遍开发者手册 主要是介绍了下nano的硬件 …
Read More -
继续将k8s用于模型转换和部署的自动化流程...然后发现之前安装k8s的文档不work了.. 时间是2020年5月7日,当前最新的k8s版本是 v1.18.2 报错如下: 1 2 3<2kzzqw6rsjid0 --discovery-token-ca-cert-hash sha256:c6c72bdc96c0ff4d59559ff915eee61ba7ac5e8b93c0b2f9e11e813412387ec2 --v=5 4W0507 15:45:12.608784 4768 join.go:346] [preflight] WARNING: JoinControlPane.controlPlane settings …
Read More -
背景 似乎没什么背景,继续看caffe代码 argmax的作用是返回一个blob某个维度或者batch_size之后的维度的top_k的index(或者pair(index,value)) proto 还是先看proto 12message ArgMaxParameter {3 // If true produce pairs (argmax, maxval) 4 optional bool out_max_val = 1 [default = false];5 optional uint32 top_k = 2 [default = 1];6 // The axis along which to maximise -- may …
Read More -
背景 这个layer和reduce layer有一些相似,就干脆一起看了. 作用是输入至少两个blob,然后对每个blob中的元素所一些运算,最后得到一个blob. caffe 支持的运算有"PROD","SUM","MAX"三种 顺便提一句,TensorRT支持的要多一些: 1 2enum class ElementWiseOperation : int 3{ 4 kSUM = 0, //!< Sum of the two elements. 5 kPROD = 1, //!< Product of the two elements. 6 kMAX = 2, …
Read More -
背景 其实没什么背景,继续啃caffe代码而已2333 reduce layer其实就是做reduce操作,把一个任意shape的blob通过某种运算变成一个scalar. caffe目前支持求和(SUM),绝对值的和(ASUM),平方和(SUMSQ),以及对得到的scalar的总数求平均的求和(MEAN). 说句题外话,TensorRT支持的操作是求和,求积,max,min和ave. 还是有一些gap的 proto 先看proto 12message ReductionParameter {3 enum ReductionOp {4 SUM = 1;5 ASUM = 2;6 SUMSQ = 3;7 MEAN = 4;8 }910 …
Read More -
先写个简略版的笔记..看之后的情况要不要读得更精细一点.. 背景 two stage的检测比one stage的检测效果好,原因是啥? 作者认为是正负样本不平衡导致的. two stage的方法在proposal 的时候干掉了大部分负样本,所以效果好. 因为作者提出了一种新的loss,称为Focal Loss 是对交叉熵loss的改进,作用是提高没有正确分类的样本的权重,降低正确分类的样本的权重. 然后设计了个retinaNet 来验证效果. 主要是用了Focal Loss 作为损失函数,以及backbone比起之前的one stage的检测用上了FPN. Focal Loss 一图胜千言 Focal loss是在交叉熵loss的 …
Read More