自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

gaussrieman123的博客

Marking is Believing.

原创 从0开始使用TensorFlow.js进行深度学习推断

原因 最近项目里面考虑要在微信小程序里面加上识别触发以及检测追踪的功能,所以需要调研一下在Web端进行深度学习前向的可行性。这个可行性主要包含两个方面,一是模型是否支持:能否从现有模型转换为tfjs支持的模型;二是性能:tfjs的前向推断效率是否能满足我们的需求。 名词解释 JavaScript ...

2019-11-19 14:48:37

阅读数 30

评论数 0

原创 OpenCV的resize函数优化

背景 在使用OpenCV做图像处理的时候,最常见的问题是c++版本性能不足,以resize函数为例来说明,将size为[864,1323,3]的函数缩小一半: Mat img0; gettimeofday(&t4, NULL); cv::resize(source, img...

2019-08-30 11:37:48

阅读数 309

评论数 0

原创 阿里巴巴推断框架MNN在iOS上的使用小结

MNN介绍 端侧智能现在已经不是新鲜话题,不管是从数据安全出发,还是从实时性能考虑,端侧深度学习算法推理都有其不可替代的优势。之前已经有一段时间的端侧推理框架热潮,google、Facebook、百度、腾讯、小米以及一些名气不大但是实力很强的小公司,都开源了自家的端侧推理框架,阿里MNN在18年年...

2019-07-03 11:17:34

阅读数 919

评论数 7

原创 一步步复现google/mediapipe的各种功能:手势、人脸、目标检测等

背景 最近项目中要用到手势检测以及手势关键点追踪,回想起google的这篇文章“On-Device, Real-Time Hand Tracking with MediaPipe”,打不开这个的,也可以看“中文版”,给出的效果是这样的: 看到demo图片很心动,就想试试。 过程 1.下载项目代...

2020-01-14 19:50:02

阅读数 73

评论数 0

原创 Cook-Toom 算法做快速卷积

背景 卷积是信号处理中的重要操作,在深度学习中更是重中之重,所以有必要对一些经典的快速卷积方法做一些了解。 在查阅了若干资料后,对于Cook-Toom算法,以下简称CT算法,有了一定的了解,记录一下,便于以后查阅。 卷积介绍 由于这个算法比较经典,所以默认处理的是信号系统中的一维卷积,此文也是基于...

2019-10-31 10:35:24

阅读数 86

评论数 0

原创 MNN 中的矩阵乘法

背景 之前也写过sgemm,然后就想看看MNN是如何实现的,有没有什么可以借鉴的地方,看完之后发现MNN的实现也是简单的按行数据并行处理,记录一下。 矩阵乘法 矩阵乘法的目的是完成一个计算:C = A * B,其中A是h * k, B是k * w,所以C是h * w。 常用的方式是分行处理,对于...

2019-10-29 14:22:23

阅读数 56

评论数 0

翻译 ARMv8 Caches

ARMv8 cache 模型 L1 cache是每个核心独有,L2 cache是每个簇共享, L3 cache是所有簇共享 cache 术语 tag是内存地址的一部分,保存在cache中,用来唯一标识主内存和cache line 之间的联系。 一个cache line最高位的几位,是用来告...

2019-10-24 16:34:39

阅读数 91

评论数 0

翻译 ARMv8 浮点及NEON指令集

通常,每个NEON指令都会导致n个指令并行执行! 向量寄存器 32个128位寄存器 32个64位寄存器 所有的寄存器都可以在任意时间被访问,且访问者不需要显式地在两种表示之间切换,指令会说明是使用64位还是128位寄存器形式。 浮点寄存器 标量与NEON 标量就相当于是向量中的某一个lane...

2019-10-23 15:32:21

阅读数 31

评论数 0

原创 MNN中的for循环并行Concurrency.h

for循环并行 概念性的东西可以参考c++ 对for循环的并行优化例子,此文中使用多线程对for循环进行了优化,并提出可能遇到的一些问题。 实际上for循环还有一种可用的优化方法是使用OpenMP来进行多线程的加速。OpenMp提供了对于并行描述的高层抽象,降低了并行编程的难度和复杂度,这样程序员...

2019-10-12 15:15:18

阅读数 53

评论数 0

原创 resize函数查表优化

接着https://blog.csdn.net/gaussrieman123/article/details/100153994写,对于输入输出图像大小已知,且通道数相同的resize操作,可以使用查表的方法来进行优化,先生成输出图像中每个点对应原图的位置,然后拷贝原图像素点到目标图像。 这里的拷...

2019-10-12 11:39:25

阅读数 29

评论数 0

翻译 cmake 使用Openmp

cmake版本3.9及以上 find_package(OpenMP) if(OpenMP_CXX_FOUND) target_link_libraries(MyTarget PUBLIC OpenMP::OpenMP_CXX) endif() 旧版本的cmake if(NOT TARGE...

2019-10-12 11:31:46

阅读数 23

评论数 0

原创 mxnet中的SoftmaxCrossEntropyLoss损失函数

在看mxnet的Loss函数源码的时候,发现SoftmaxCrossEntropyLoss的实现很有意思,记录一下。 SoftmaxCrossEntropyLoss 概念性的东西,可以参考此文 p = softmax({pred}) L = -\sum_i \sum_j {label}_j \l...

2019-08-29 17:16:16

阅读数 156

评论数 0

原创 mxnet 学习率设置详解

学习率 目前深度学习使用的都是非常简单的一阶收敛算法,梯度下降法,不管有多少自适应的优化算法,本质上都是对梯度下降法的各种变形,所以初始学习率对深层网络的收敛起着决定性的作用,下面就是梯度下降法的公式 ω:=ω−α∗ααωloss(ω) \omega:=\omega - \alpha * \fra...

2019-08-13 15:42:22

阅读数 492

评论数 2

原创 AR内容平台介绍

Introduction AR已经经过了一段时间的发展,有了VR的前车之鉴,AR行业一开始就显得冷静很多,不管是市场还是创业团队,都是在一步步探索和推进。抛开AR的技术不谈,AR的产品目前主要有3大类:一是硬件如AR眼镜、AR投影等;二是AR SDK,主要集中在移动端;三是AR云和平台。硬件发展慢...

2019-07-19 17:42:48

阅读数 245

评论数 0

原创 aarch64 neon指令集拾遗

太常用就不列出了。 读写指令 读向量/浮点数 ld1 ld1 {v0.S}[0], [x0], #4从x0出读一个float数,存到v0寄存器的第一个通道,并将x0加4 ld1 {v0.4S, v1.4S...}, [x0] 从x0处连续读入float,依次存到各个寄存器中 ld1 {v0.8B...

2019-07-16 16:40:42

阅读数 249

评论数 0

原创 堆破坏(heap corruption)常见原因

堆破坏 堆破坏是比较常见的一种错误类型,一般属于偶发性bug。 由于其偶发的特性,排查起来比较困难,可能尝试改了很多地方,问题还是存在,就会比较头疼,所以最好是能对症下药,主项排查,这样会更有效率,也能在debug时保持良好的心态。 常见原因 数组越界,这是最常见的原因char *stuff =...

2019-06-17 14:32:11

阅读数 466

评论数 0

原创 在Ubuntu18.04上构建Halide

build halide on ubuntu18.04 下载Halide https://github.com/halide/Halide 使用LLVM和Makefile构建Halide 1.打开 http://releases.llvm.org/download.html 2.选择适合你机型的p...

2019-05-14 15:57:27

阅读数 295

评论数 0

原创 Halide Lesson05: 向量化, 并行, 循环展开 以及 分块

Halide Lesson05: 向量化, 并行, 循环展开 以及 分块 注意:Halide 默认图像按列存储 column first,x为内循环,y为外循环 Func gradient("gradient"); gradient(x, y) = x + y; gradi...

2019-05-14 15:53:54

阅读数 111

评论数 0

原创 c++ __attribute__关键字

__attribute__((visibility("default"))) 这个关键字与gcc编译参数-fvisibility=hidden配合使用,如果使用了hidden参数,那么该.so库所有符号只对内可见,对外不可见,即使链接了这个.so库,还是不能调用其中的符合(函数...

2019-05-10 11:03:36

阅读数 336

评论数 0

转载 函数指针与回调函数

函数指针 函数指针是指向函数的指针变量。 通常我们说的指针变量是指向一个整型、字符型或数组等变量,而函数指针是指向函数。 函数指针可以像一般函数一样,用于调用函数、传递参数。 函数指针变量的声明: typedef int (*fun_ptr)(int,int); // 声明一个指向同样参数、返回值...

2019-05-10 10:33:51

阅读数 12

评论数 0

原创 Cmake交叉编译

编译 从源文件到可执行文件或库的过程,对C源文件来说,可以使用GNU编译器套装(英语:GNU Compiler Collection,缩写为GCC)来进行编译,一般语法为gcc xxx.c,C++使用g++ xxx.cpp 构建与make 代码变成可执行文件,叫做编译(compile);先编译这个...

2019-05-09 19:26:35

阅读数 430

评论数 0

原创 Android文件读写权限

首先需要在manifest中添加静态权限 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name=&qu...

2019-04-24 10:45:46

阅读数 4153

评论数 0

原创 Android与iOS资源文件读写对比

在开发中,算法配置文件是作为独立资源文件存在,初始化的时候读取到应用中,因此有必要对Android和iOS系统下的资源文件读写有一定的了解。 首先要搞清楚的一点是,我们在PC上开发时使用的所有资源,移动端是没有办法直接使用的,移动端只能对它本地的资源进行读写,不能凭空直接访问PC端的资源。所以我们...

2019-04-23 10:45:28

阅读数 93

评论数 0

原创 从CGBitmapContextCreate 报错到iOS颜色空间和像素格式

CGContextRef CGBitmapContextCreate(void *data, size_t width, size_t height, size_t bitsPerComponent, size_t bytesPerRow, CGColorSpaceRef space, uint3...

2019-04-22 09:58:36

阅读数 144

评论数 0

翻译 参数裁剪与共享

原文 参数裁剪与共享 早期的工作表明模型裁剪对减少网络复杂度和处理过拟合问题是很有帮助的。之后研究人员发现裁剪一开始引入是为了减少神经网络的结构并提高泛化能力,也被广泛地研究用来来压缩DNN模型,因为我们可以尝试将那些对模型性能不太重要的参数去掉。这些技术可以进一步分为三个子类:量化和二值化、参数...

2019-04-12 11:05:28

阅读数 105

评论数 0

翻译 事件驱动架构(翻译)

事件驱动的架构模式时一个非常流行的分布式异步架构模式,通常用来生成高扩展性的应用。它的适应性非常强,可以用在小应用也可以用在大的复杂的应用上。事件驱动的架构是由高度解耦、单目的的事件处理单元组成,这些单元异步地接受和处理事件。 时间驱动架构模式主要由两种拓扑结构组成,中继器与代理。如果你需要把一...

2019-04-09 10:53:31

阅读数 192

评论数 0

翻译 Layered Architecture 分层架构(完整翻译)

原文:https://www.oreilly.com/programming/free/files/software-architecture-patterns.pdf 分层架构是最常见的架构模式,通常它也被称作n-层架构模式。大多数JAVA应用都采用这个模式,因此它也被架构师、设计师和开发者所...

2019-03-28 19:19:00

阅读数 432

评论数 0

原创 在Android Studio中使用vulkan

首先要确定手机是否支持Vulkan,可以下载一个aida64,在设备中如果能找到vulkan设备,说明支持,否则不支持。 严格按照官方介绍的步骤一步步执行,就能获得官方推荐的可执行的例子,有很多,可以都试一试。 那怎么在自己的工程中使用vulkan呢? 按道理说,Android官方支持vulka...

2019-01-31 17:23:04

阅读数 1663

评论数 0

原创 在Ubuntu上进行ncnn+vulkan的测试

ncnn vulkan ncnn在1月20号提交了对Vulkan的支持,而且更新了benchmark对Vulkan的测试,我们本来尝试在ncnn中添加Opencl,看到支持Vulkan非常高兴,迫不及待想试试。 花了接近一天时间来完成benchmark,记录一下。系统: ubuntu 18.04 ...

2019-01-25 15:05:01

阅读数 2534

评论数 5

原创 在Android Studio上使用OpenCL

在尝试了很多的方法后,终于可以在Android Studio上使用OpenCL,现在记录一下过程。 判断手机是否支持OpenCL的方法 下载aida64,在设备里查看是否有OpenCL设备 下载Opencl-z,如果支持,通过此软件可以查看到platform和device 在native-li...

2019-01-18 15:04:44

阅读数 1129

评论数 0

原创 xiaomi MACE 在ubuntu18.04编译运行纪实

最重要三点:注意版本,注意版本,注意版本! git pull git@github.com:XiaoMi/mace.git 照着https://mace.readthedocs.io/en/latest/installation/env_requirement.html#optional-dep...

2019-01-18 14:29:55

阅读数 257

评论数 0

原创 c++ 对for循环的并行优化例子

什么是并行优化? 并行优化是代码优化的基本方法,从大到小一共可以分成三级:异步框架;任务并行;数据并行。在实际工作中,一般是先设计异步框架,包括异步处理任务以及异步任务的异构化等;第二步一般是做数据并行优化(SIMD),利用CPU的向量指令来对多条数据并行处理;这两步是代码优化的重心,一般做...

2018-08-17 16:14:53

阅读数 6814

评论数 1

原创 算法优化之c++多线程优化:思考与总结

最近的项目中要用多线程来对代码进行优化,期间查阅了一些资料,主要是踩过一些坑,在此记录一下。1.什么是线程?没有谁比维基百科说的更好了,直接点击查看:线程(英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流...

2018-07-10 11:35:17

阅读数 2155

评论数 0

翻译 常用的几种神经网络

原文链接 Feed forward neural networks (FF or FFNN) and perceptrons(P) 前向反馈网络和感知器是直线向前的,信息从前向后(分别是输入和输出)传播。神经网络通常被描述成多层,其中每一层都由输入、隐藏层、输出单元构成。一层单一网络内部绝...

2018-01-22 15:18:17

阅读数 20189

评论数 0

原创 LeetCode 5. Longest Palindromic Substring

DescriptionGiven a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000.

2017-11-15 14:03:02

阅读数 127

评论数 0

原创 LeetCode 算法第四题

DescriptionThere are two sorted arrays nums1 and nums2 of size m and n respectively.Find the median of the two sorted arrays. The overall run time co...

2017-11-14 10:36:40

阅读数 181

评论数 0

原创 LeetCode算法第三题

DescriptionGiven a string, find the length of the longest substring without repeating characters.Examples:Given “abcabcbb“==, the answer is “abc“, wh...

2017-11-10 15:12:31

阅读数 171

评论数 0

原创 LeetCode算法第二题 "add two sums"

DescriptionYou are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order and each of their ...

2017-11-09 16:10:28

阅读数 155

评论数 0

原创 x264中率失真优化相关函数的调用关系

x264中的rdo.c函数调用关系x264_rdo_init x264_encoder_open cached_hadamard , cache_satd ssd_plane, 1 ssd_plane ssd_mb, 3 x264_rd_cost_chroma, 2 x264_rd_cost_i4...

2017-10-17 09:52:20

阅读数 353

评论数 0

翻译 Moving Region Detection in Compressed Video运动检测论文翻译

摘要 本论文最大的特点是在变换域进行运动检测,而不是传统的空间域。首先通过预测的方式得到当前帧的系数(如小波系数),然后与本帧实际的系数进行对比,从差异中确定运动区域。如果是DCT变换,则使用8*8块的直流系数来估计背景场景。 介绍 基于视频的监督系统被广泛应用,尤其是在安防领域,一些数...

2017-10-10 16:10:51

阅读数 254

评论数 0

提示
确定要删除当前文章?
取消 删除