↓ 跳过正文
  1. Categories/

Deep-Learning

2020

caffe 源码学习笔记(7) slice layer

·1121 字·3 分钟
背景 # OCR 组那边有个 shufflenet 的网络,里面有个 pytorch op 叫 chunk,转成的 onnx 对应的 op 是 split。 作用是: Split a tensor into a list of tensors, along the specified ‘axis’. Lengths of the parts can be specified using argument ‘split’. Otherwise, the tensor is split to equal sized parts.

caffe 源码学习笔记(6) reshape layer

·1851 字·4 分钟
背景 # 最近在魔改 TensorRT 的 caffe parser。 之前 caffe 模型转到 trt 模型时,有一个修改需要将 reshape layer 的 param 末尾补 1,比较繁琐,于是看了下 caffe 的 reshape layer 的实现。

caffe 源码学习笔记(5) 卷积

·2756 字·6 分钟
caffe中卷积运算的实现 # 暴力实现的卷积大概是这样子的 1 2for w in 1..W 3 for h in 1..H 4 for x in 1..K 5 for y in 1..K 6 for m in 1..M 7 for d in 1..D 8 output(w, h, m) += input(w+x, h+y, d) * filter(m, x, y, d) 9 end 10 end 11 end 12 end 13 end 14end 这种方式的效率显然很低,不意外地,caffe中并不是这样实现的.

caffe 源码学习笔记(4) 激活函数

·2604 字·6 分钟
在看过 caffe 代码的三个核心部分 blob、layer、net 之后,陷入了不知道以什么顺序继续看的困境。 blob、layer、net 只是三个最基本的概念,关键还是在于各个 layer。但是 layer 这么多,要怎么看呢?想了一下,决定把相同作用的 layer 放在一起分析。今天先分析一下激活函数。

Faster Rcnn 目标检测算法

·4894 字·10 分钟
背景 # 2019 年对了好几次 faster rcnn,第一次是赛事之窗项目,和北京的同事对齐 sdk 和训练的实现。 第二次是被 tensorRT4 和 tensorRT5 之间默认参数不一致的问题坑了一下。 第三次是被 caffe proto 中 roi align 的默认参数坑了。

caffe 源码学习笔记(3) Net

·1790 字·4 分钟
Net 基本介绍 # 网络通过组合与自动微分,共同定义一个函数及其梯度。 网络是由一些 Layer 组成的 DAG,也就是有向无环图,在 caffe 中通常由 prototxt 定义。

caffe 源码学习笔记(2) Layer

·2896 字·6 分钟
layer 整体介绍 # layer 是模型计算的基本单元, 类似于 pytorch 或者其他深度学习框架的 op。 layer 中的数据流向为:输入若干个 blob,称之为 “bottom blob”,经过 layer 的计算后,输出若干个 blob,称之为 “top blob”。

caffe 源码学习笔记(1) Blob

·1189 字·3 分钟
迫于生计,开始看 caffe 代码。 会侧重于分析 inference 部分。 整体的依赖关系是:Net 由 Layer 组成,Layer 之间通过 Blob 传递数据。后面几篇会分别展开这三者。 blob 整体介绍 # blob 的含义及目的 # blob 在逻辑上表示的就是所谓的 tensor,blob 是 tensor 在 caffe 中的叫法。 在框架层面上,blob 的意义在于对数据进行封装,提供统一的接口。 这里的数据包含训练/inference 时用的数据,也包含模型参数、导数等数据。 深度学习离不开在 GPU 上的计算,blob 对数据的封装使得用户不必关心和 cuda 有关的数据传输细节。

2019

记一次faster-rcnn debug记录

问题描述 # 一年debug 三次faster rcnn,每次都有新感觉(不 接到一个bug report,现象为某人脸模型,转换成trt模型,当batch size为1时结果完全正确,但是batch size大于1时结果不正确。 具体的现象是,如果跑多张不同的图,只有第一张图有结果,后面的图都没有结果。 如果跑的图中有相同的,那么和第一张相同的图都会有结果,其余的图没有结果。

FPN:Feature Pyramid Networks 学习笔记

检测不同尺度的物体一直是计算机视觉领域中比较有挑战性的事情.我们先从之前的工作出发,并对比FPN比起之前的工作有哪些改进. 之前的工作 # Featurized image pyramid # 思路是对于同一张图,生成不同的scale,然后每个scale的image单独去做检测. 这个方法是手工设计feature时代的常用办法. 这个办法是比较显然的,也的确可以解决检测不同尺度物体的问题. 缺点非常明显…inference的速度几乎和scale的个数线性相关. 以及由于显存的开销,没办法做end-to-end 的training.

SSD: Single Shot MultiBox Detector 学习笔记

·3374 字·7 分钟
概述 # SSD是一种单阶段目标检测算法.所谓单阶段,是指只使用了一个deep neural network,而不是像faster-rcnn这种两阶段网络. 为什么有了faster-rcnn还要使用SSD? 最主要是慢… 两阶段网络虽然准确率高,但是在嵌入式等算力不足的设备上做inference速度非常感人,很难达到real time的要求. (实际业务上也是这样,公有云上的检测模型几乎都是faster-rcnn,而到了一些盒子之类的硬件设备,检测模型就全是SSD等single stage 模型了)

2018

caffe2 添加自定义operater

·1153 字·3 分钟
记录一下,一个之前没有接触过 caffe/caffe2 的人为了添加自定义 op 到 caffe2 需要做的工作。 首先参考 caffe2 tutorial,随便跑个 op 来试试,不妨以比较简单的 Accumulate_op 为例子。 这个 op 的作用就是计算 Y=X+gamma*Y,其中 X 为输入,Y 为输出,gamma 是参数。

非极大值抑制(Non-Maximum Suppression,NMS)

·830 字·2 分钟
NMS是为了在诸多CV任务如边缘检测,目标检测等,找到局部最大值 其主要思想是先设定一个阈值,然后计算检测框的IOU(所谓IOU,也就是intersection-over-union,指的是相交面积除以相并面积,是来衡量overlap程度的指数)。如果IOU大于阈值,说明overlap过大,我们要通过某种算法来将其剔除。