题意:找出比当前排序大一号的排序,如果当前排序就是最大排序,那么将它重拍成最小排序。
leetcode_4Sum笔记
Given an array S of n integers, are there elements a, b, c, and d in S such that a + b + c + d = target? Find all unique quadruplets in the array which gives the sum of target. Note: The solution set must not contain duplicate quadruplets. For example, given array S = [1, 0, -1, 0, -2, 2], and target = 0. A solution set is: [ [-1, 0, 0, 1], [-2, -1, 1, 2], [-2, 0, 0, 2] ]
实时超像素分割IER方法(CSEO方法)
这篇博客介绍博主事先的CSEO超像素分割方法,CSEO法是目前已知最快的超像素分割算法,可以在640*480*3大小的图像上达到38ms的速度(使用单核CPU@2.5GHz),并且分割区域数与时间无关,是目前超像素分割领域的state-of-art。
OpenCV内封装了主流的SLIC算法,当然,无法实时。这篇博客由于客观原因不提供源码、原理解释,只提供一些论文索引和博主的实验结果,仅供研究者参考。
博主使用Kinect摄像头采集图像数据,将采集的四通道数据转换为三通道数据,然后缩放至920*540(原图为1080p),采集图像和超像素分割在同一个线程中,最终速度为48ms,如果使用640*480,将算法部分从主线程中分离出来,达到论文中所说的38ms是可能的。
TensorFlow学习笔记(三)——Fetch与Feed
TensorFlow的基本数据单元是tensor(张量),如何讲tensor的值取出,又如何在运算过程中向tensor中传入值呢?Fetch与Feed是TensorFlow中关于数据存取的术语,博主就由代码来简要介绍下Fetch与Feed。
TensorFlow学习笔记(二)——基于图会话数学运算工具
TensorFlow使用图来表示计算任务,图中的节点被称之为op(operation的缩写)。TensorFlow程序通常被组织成一个构建阶段,和一个执行阶段。在构建阶段,op的执行步骤被描述成一个图。在执行阶段,使用会话执行图中的op(op就是节点)。简单的说,先给出描述,只在run()方法中执行操作。
Qt实现Metro风格界面:拖动无边框窗口
Qt的GUI功能非常灵活,Metro风格也越来越受欢迎,那么如何使用Qt实现一个Metro风格的界面?
有两点最重要:一是使用Metro风格的素材,二是加入Metro风格的控制。博主近期将之前写过的一个Metro风格的框架开源了,你只需要下载源码,继承QMetro类就可以实现自己的Metro风格界面了。首先,确保你的Qt版本在5.2以上,那么,我们开始吧。
线结构光法测量物体体积:轮廓法三维重建
这是博主两年前参加某比赛的作品,由于近期坑爹的激光课程要写结课论文,博主现在的研究跟光一毛钱关系都木有,于是就把这玩意整理成结课论文了,顺便把整理的内容节选一部分放在博客上,以供参见。
SyntaxNet:Neural Models of Syntax 自然语言神经网络框架
SyntaxNet由TensorFlow实现,本月Google正式开源了这一框架(GitHub),关于这一框架,我们可以参考相关论文。在准备完NPL的基础知识后,博主将在这篇博客介绍这篇论文:Global Normalized Transition-Based Neural Network。该架构的资料还来自谷歌研究博客。
MIT-Deeplearning 学习笔记
今年是DeepLearning诞生十周年,这项技术已相对成熟。这个月,有两本史诗级教科书出炉,这十年的成果做了教科书式的总结,上周MIT的deeplearning教科书定稿,由Ian Goodfellow、Yoshua Bengio、Aaron Courvilla主编,几乎所有深度学习大牛参与其中。初学者学习Deep Learning四处搜集资料和Paper,四处修补知识体系的过程行将成为历史,博主将长期更新博客,对这本书的要点进行阐述。
Visual Gesture Builder姿态动作识别教程
Kinect提供了许多SDK和一些很有用的开发工具,其中就有使用Kinect进行姿态识别的开发工具Visual Gesture Builder。
Visual Gesture Builder被用于构建姿态识别解决方案,生成的模型可用于检测特定动作或姿态。生成的姿态识别模型,可以在C++、C#中被SDK调用,以帮助我们在任意Kinect开发环境下,使用生成的姿态检测模型检测姿态。
这篇博客为Visual Gesture Builder使用教程,以检测举手动作为例,详细介绍该开发工具流程。本教程只进行到生成模型并preview,后面在C++和C#中加载模型进行识别的部分并不在本教程范围内,特此说明。
使用Kinect2.0+OpenCV采集RGB图像
博主最近开始玩Kinect了!
这篇博客主要介绍Kinect2.0的开发环境配置,主要两点内容,一是在VS2013上配置Kinect2.0开发环境,二是编译一个采集RGB图像数据的小程序测试Kinect2.0的开发环境是否配好。
在你需要做好如下准备之后,就可以开始配置Kinect2.0的开发环境了。
首先检查你的PC,要求操作系统为Win8及以上(含Win8、Win8.1、Win10),拥有USB3.0(及以上)接口,如果你需要使用Kinect做实时三维重建及交互,那么你最好拥有一块中档(及以上)显卡,并且支持DirectX11(及以上)。
另外关于软件,本篇教程已经默认你配置了以下环境VS2012(及以上版本),OpenCV(2.4及以上,最好是3.1版本),配置好这些,我们就可以开始了。
深度学习综述(三)深度学习工具介绍
随着深度学习的兴起,诞生了许多优秀的深度学习框架,借助深度学习框架完成理论研究、实验和深度学习开发已成为深度学习研究的重要手段。深度学习框架加快了研究的速度,并且使得一般的深度学习研究者也可以轻松设计自己的深度神经网络。由于深度学习框架灵活、多样、高性能、分布式等特点,当前的许多深度学习技术都是基于深度学习框架进行开发的。这篇博客主要介绍TensorFlow、Torch、Theano、Caffe四种深度学习开源框架的特点。
深度学习综述(一)神经网络的发展历史
深度学习的概念源于人工神经网络的研究。含多隐层的多层感知机就是一种深度学习结构。深度学习通过组合低层特征形成更加抽象的高层表示属性类别或特征,以发现数据的分布式特征表示。
深度学习综述(二)深度学习用于目标检测
目标识别、目标检测、目标分割、目标跟踪是计算机视觉领域最热门的方向之一。传统机器学习方法中较为常见的做法是在滑动窗口中手工提取特征(例如Hog、SIFT等),然后将提取的特征送入分类器(例如SVM、Adaboost等)中,训练分类器预测输出。而每一类物体都有不同的特征,我们也很难提前知道哪种特征更加优秀,于是近年来目标识别的研究方向转向了深度学习。
目标识别(检测)问题与分类问题不同,识别或检测要求精准定位目标。一种解决问题的思路是将其看作一个回归问题,这种思路解决问题的效果可能并不理想,另一种更为普遍的做法还是使用滑动窗口进行检测。
Caffe源码精读笔记(一)之caffe.cpp
博客正式进入caffe源码精读系列,博主会在阅读源码的过程中将自己认为重要的部分记录下来,整理成笔记。由于博主之前粗略浏览过一遍源码,对caffe的架构和caffe中使用的库有了了解,这些笔记介绍整体工作流程和框架的同时,还将偏重于源码的细节。第一篇博客主要由程序入口开始介绍caffe训练的流程。
机器学习中的偏离(bias)与偏差(variance)
在机器学习中,有两个很重要的概念,bias and variance,根据学习曲线判断当前的状态是high bias还是high variance来调整机器学习中的参数,以达到理想的效果。多年前学习斯坦福机器学习教程时对这两个概念的影响尤为深刻,鉴于这两个概念又是如此重要,特此整理。