0%

简介

笔者也是最近偶然的机会才开始接触TVM,使用过后发现,经过auto-tuning后的TVM模型在速度是竟然超过了TensorRT,并且笔者使用的是MXNet模型,TVM对MXNet绝对的友好,对于Pytorch等模型,可以使用ONNX,操作一样简单,使用起来基本类似一键操作,本篇文章是笔者对TVM的简单整理,也算是对TVM的入门。

阅读全文 »

DPN是在resneXt,denseNet之后,对resnet系列的进一步创新,作者巧妙的将resnet与denseNet相结合,提出了dual path architectures,构造了DPN网络结构。

那么DPN的创新点有哪些呢?如下:

DPN具有更小的模型以及更少的计算量,具有更好的训练速度。作者在论文中的描述为:[
In particular,on the ImageNet-1k dataset, a shallow DPN surpasses the best ResNeXt-101 with 26% smaller model size, 25% less computational cost and 8% lower memory consumption.]

阅读全文 »

创新点:ResNeXt在ResNet的基础上,结合ResNet的block stack策略以及Inception结构分组卷积的思想,设计aggregrated transformations策略,在不增加模型复杂度的情况下,提高了模型识别的准确率,虽然没有提出特别新奇的网络结构,但是ResNeXt利用更简单的拓扑结构在不增加参数的情况下取得更好的效果,值得借鉴与思考。**其实resnext仅仅就是利用了group convolution,降低了网络的参数量,但是同时,增加了channel,发挥channel的效果,使得resnext的效果得到了一定的提升.

阅读全文 »

排序算法总结

详细参考链接,寒小阳CSDN

快速排序

介绍:主要就是partition过程。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
quickSort(int arr[], int left,int right)  
{
if(left < right)
{
int mid = partition(arr,left,right);
quickSort(arr,left,mid-1);
quickSort(arr,mid+1,right);
}
}

int partition(int arr[],int left, int right)
{
if(right <= left)
return left;
int key = arr[left];
while(left < right)
{
while(arr[right] > key) right--;
arr[right] = arr[left];
while(arr[left] < key) left++
arr[left] = arr[right];
}
arr[left] = key;
return left;
}
阅读全文 »

Canny边缘检测

原理摘要

1、进行高斯滤波,去除椒盐噪声
2、利用sobel边缘算子进行边缘检测并计算梯度以及方向(0,45,90,135度)
3、局部梯度抑制,在梯度方向上,比较相邻是否为极大值
4、双阈值分割,最大边缘少,最小连接在最大上面。

OpenCV函数

函数原型

Canny( InputArray _src, OutputArray _dst, double low_thresh, double high_thresh,int aperture_size, bool L2gradient )
函数输入:灰度图像,或者彩色图像
函数输出:二值边缘图像
函数功能:采用Canny方法对图像进行边缘检测

阅读全文 »

SIFT原理:

参考链接:http://blog.csdn.net/zddblog/article/details/7521424

关键点理解

  • 二维高斯模糊:SIFT算法是在不同的尺度空间上查找关键点,而尺度空间的获取需要使用高斯模糊来实现,Lindeberg等人已证明高斯卷积核是实现尺度变换的唯一变换核,并且是唯一的线性核。
  • 尺度空间在实现时使用高斯金字塔表示
    1. 对图像做不同尺度的高斯模糊;
    2. 对图像做降采样(隔点采样)。
  • 高斯差分近似实现高斯拉普拉斯变换:多尺度相减等效拉普拉斯
  • 利用相邻差分图像,求取极值点
  • DOG金字塔存在-1层 :防止丢掉最高层采样率,即图像本身
  • 关键点定位
    1. 关键点检测
    2. 消除边缘相应:利用Hessian矩阵(Hessian矩阵可用来求极值点,正定为极小值,负定为极大值,有正有负为鞍点
  • 特征描述子生成
    1. 根据每个特征点所在的高斯尺度(sigma),确定梯度方向计算半径。
    2. 在半径内找到448个特征描述子。
    3. 特征描述子就是梯度方向以及大小。
阅读全文 »

目前,CNN网络在图像识别领域大放异彩,从最初的AlexNet到后面的GoogLeNet,ResNet,识别精度越来越高,但是除了精度之外,模型的计算复杂度也越来越引起大家的思考,如何降低网络的复杂度,以使网络可以高效的运行在诸如手机登移动端设备,也得到了众多研究者的研究。本文便主要在这方面发力,提出了提高网络速度设计的4个准则,并基于此设计了shuffleNet v2,在速度、精度均超过了目前的主流轻量级网络(shuffleNet v1, mobileNet v2等),本文是Face++提出,发表于ECCV2018.

阅读全文 »

shuffleNet是face++在2017年提出,目的是提高深度模型的执行效率,可在移动端执行。


论文链接:https://arxiv.org/abs/1707.01083


摘要

我们知道深度学习网络在包括图像识别等多个领域发展迅速,但是随着模型的深度越来越深,模型的参数量越来越大,现如今模型一般都跑的GPU上面,那么如何能在嵌入式或者移动端使用深度学习也是目前研究比较多的领域,shufflenet便是其中一个成果。shuffleNet主要有两个创新点:(1)pointwise group convolution,(2)channel shuffle。

阅读全文 »

虚函数与纯虚函数的比较

  • 虚函数为了重载和多态的需要,在基类中是有定义的,即便定义是空,所以子类中可以重写也可以不写基类中的此函数。
  • 纯虚函数在基类中是没有定义的,必须在子类中加以实现。
  • 虚拟函数就是为了对“如果你以一个基础类指针指向一个衍生类对象,那么通过该指针,你只能访问基础类定义的成员函数”这条规则反其道而行之的设计。
  • 多态的真正体现就是基类指针访问子类对象。
  • 虚函数动态联编,虚函数表。
    在函数编译过程中,父类子类中的成员函数的名字是不一样的,可以区分,然后函数如果调用成员变量,函数会默认传进去一个该类的指针,进行调用。
阅读全文 »