自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

TiRan_Yang

假如你不逼你自己,你永远不知道自己有多优秀。

原创 一种快速收缩地图边界方法

一种快速收缩地图边界方法   在制作地图后,有时需要向内收缩地图地图边界,例如左右边界需要向内收缩30cm。这里提供了一种快速收缩地图的方法。先放一张收缩后的效果图。  这里以sin(x)作为地图的右边界,sin(x)+1作为地图右边界,左右边界都需要向内收缩30cm。方法如下:1、假设右边界连续AB两点,A点向内收缩Dist的距离,为C点。2、计算AB线段的斜率k3、获取AB的...

2019-03-21 11:10:58 313

原创 Savitsky-Golay滤波器及源码实现

SG平滑算法是由Savizkg和Golag提出来的。基于最小二乘原理的多项式平滑算法,也称卷积平滑。为啥叫多项式平滑呢?且看下去。下面使用五点平滑算法来说明平滑过程原理很简单如图:把光谱一段区间的等波长间隔的5个点记为X集合,多项式平滑就是利用在波长点为Xm-2,Xm-1,Xm,Xm+1,Xm+2的数据的多项式拟合值来取代Xm,,然后依次移动,直到把光谱遍历完。Savitsky-Gola...

2019-03-20 11:04:55 2527 5

原创 Opencv鼠标事件

Opencv中的鼠标事件,例如在界面中通过鼠标左键任意位置,显示点坐标,并将改点存储到points中,为后续使用。定义鼠标事件:#include "opencv2/core.hpp"#include "opencv2/highgui/highgui.hpp"#include "opencv2/imgproc/imgproc.hpp"cv::Mat org,dst,img,tmp;std...

2019-03-20 09:37:28 1471

原创 C++基于sort排序对象

有时我们需要对某个数据进行排序,例如基于id升序或降序排列坐标点。使用sort排序vector中的对象。结构体定义如下:struct Point2f{ double x; double y; int id;}static bool cmp(const Point2f &A, const Point2f &B){ return A.id &...

2019-03-06 16:59:38 681

原创 random常用的方法

  random.sample函数的第一个输入参数必须为list类型,否则会报错。第二个参数为从list中随机选取的个数。例如:import randomlist = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]for i in range(3): slice = random.sample(list, 5) # 从list中随机获取5个元素,作为一个片断返回...

2018-08-30 20:56:20 264

原创 Python解析二进制文件

  使用python解析二进制文件时,需要了解python与C语言对应的格式,如下:   例如使用C语言保存的二进制格式,结构体为:struct Points{ int x; int y; int z;};struct Obj_info{ int id; int x1; int y1; int x2; int ...

2018-08-23 21:15:23 7039

原创 C或C++获取时间

使用C或C++获取系统当前时间:void fun_getTime(char *current_time){ time_t timep; time (&timep); strftime(current_time, sizeof(20 × sizeof(char), "%Y-%m-%d-%H:%M:%S",localtime(&timep) );}ch...

2018-07-09 21:06:17 884 1

原创 Opencv调用深度学习模型

  OpenCv 从V3.3版本开始支持调用深度学习模型,例如Caffe, Tensorflow, darknet等.详细见下图,具体的使用方法,可以参考官网: https://docs.opencv.org/3.4.1/d6/d0f/group__dnn.html   目前Opencv可以支持的网络有GoogLeNet, ResNet-50,MobileNet-SSD from Caff...

2018-04-13 15:19:54 9625 1

原创 C中兼容C++操作

C中兼容C++操作  在C代码中加入C++风格的代码,在编译的时候,报错的是必然的.因为不兼容.例如,在C中加入C++的namespacenamespace cv {typedef ::int8_t int8_t;typedef ::uint8_t uint8_t;typedef ::int16_t int16_t;typedef ::uint16_t uint16_t;type...

2018-04-11 11:53:07 690

原创 Tensorflow学习笔记-通过slim读取TFRecord文件

  TFRecord文件格式的介绍:http://blog.csdn.net/lovelyaiq/article/details/78711944   由于slim是tensorflow的高级API,使用起来比较方便,例如在卷积或全连接层的书写时,可以大大减少代码量。使用slim读取TFRecord文件与tensorflow直接读取还是有很大的却别。   本文就以slim中的例子的flower...

2018-03-13 17:47:09 8352 12

原创 深度学习--softmax函数推导

  softmax函数在神经网络中使用是比较频繁,我们刚刚学习的时候,只是直到网络的最后一层经过softmax层,得到最后的输出,但不知道它的具体公式推导,因此本篇,以一个简单的网络来说明神经网络的前向传播与反向传播。   首先,以简单的单层网络为例。   隐含层对应的输出为:     h1=w1∗i1+w4∗i2+w7∗i3h1=w1∗i1+w4∗i2+w7∗i3h1 = w1*i1 ...

2018-03-06 17:30:35 2253 2

原创 深度学习---激活函数

  在说常用的激活函数之前,先看一下生物神经元与人工神经元之间的激活函数的区别。   在生物神经元中,激活函数的作用为:是否相应上一个神经元,如果响应比较大,则激活下一个神经元,往下以此传递。而人工神经元中的激活函数,又成为“非线性映射函数”,它并不是去激活什么东西,而是增加神经网络的非线性因素,提升神经网络的表达能力。下面介绍常见的几种激活函数:sigmoid、tanh、relu等。 ...

2018-02-23 14:47:01 304

原创 方差、标准差、均方误差的总结

方差  百度百科中关于方差的解释为:(variance)是在概率论和统计方差衡量随机变量或一组数据时离散程度的度量。概率论中方差用来度量随机变量和其数学期望(即均值)之间的偏离程度。统计中的方差(样本方差)是每个样本值与全体样本值的平均数之差的平方值的平均数。在许多实际问题中,研究方差即偏离程度有着重要意义。   方差是衡量源数据和期望值相差的度量值。   假设有一组离散的数据xn=[x1

2018-01-24 22:07:06 4764 2

原创 Numpy中常用的接口

  Numpy是利用python来进行数据分析中必须要掌握的基础。是高性能科学计算和数据分析的基础包。利用numpy能对整组数据无需循环就能进行快速的标准数学函数计算,同时能进行线性代数,随机数,以及傅里叶变换等等功能,而对于数据分析来说,比较重要的用途就是数据的清理,过滤,子集构造,转换,排序,描述统计等等。   在使用的时候,对某个API接口记得不是太轻,需要从新度娘,这势必会浪费比较多的时...

2018-01-24 11:50:36 515

原创 Qt之QString与string的相互转换

QString与string的相互转换 1、QString与int相互转换 QString qstr = QString::number(123); int i = atoi(qstr.toStdString().c_str()); 也可以这样:int i = atoi(qstr.ascii()); 2、QString与string,即std::string string s = qs

2018-01-23 09:14:40 13851

原创 深度学习--Inception-ResNet-v1网络结构

  Inception V4的网络结构如下:      从图中可以看出,输入部分与V1到V3的输入部分有较大的差别,这样设计的目的为了:使用并行结构、不对称卷积核结构,可以在保证信息损失足够小的情况下,降低计算量。结构中1*1的卷积核也用来降维,并且也增加了非线性。   Inception-ResNet-v2与Inception-ResNet-v1的结构类似,除了stem部分。Ince...

2018-01-10 17:15:08 20902 4

原创 Tensorflow学习比较-多线程

Tensorflow通过tf.train.Coordinator和tf.train.QueueRunner来完成。tf.train.Coordinator的功能为协同管理多线程的功能,例如一起工作,一起停止。Coordinator提供了三个函数:should_stop、request_step、join。tf.train.QueueRunner注意用于启动多个线程来操作同一个队列,而线程的启动还是依

2017-12-21 17:13:22 1237

原创 Qt-将QDebug信息保存到文件中

Qt的qdebug可以很方便的输出LOG信息,但是有时我们需要将LOG信息保存到本地,方便后期的查看,例如,我们使用Qt开好的软件,然后打包发布后,此时就需要将有用的LOG信息保存到本地,如果软件使用过程中出现什么问题,我们就可以基于已经保存好的LOG信息,定位软件那个地方出现了Bug。 话不多说,直接上Code。有Code有真相。#include <QDir>#include <QTextSt

2017-12-14 19:24:56 1262

原创 TensorFlow学习笔记-组合训练数据

Tensorflow数据预处理操作:http://blog.csdn.net/lovelyaiq/article/details/78716325   Tensorflow读出TFRecord中的数据,然后在经过预处理操作,此时需要注意:数据还是单个,而网络的输入一般以Batch为单位,因此我们需要将单个的数据组合成一个Batch,做为神经网络的输入。   Tensorflow提供组合训练数据

2017-12-06 09:35:57 3198

原创 Python-matplotlib学习

Python下关于matplotlib的基本使用如下,更多的用法请参考matplotlib的API:http://matplotlib.org/tutorials/index.html#intermediateimport matplotlib.pyplot as pltplt.plot([1, 2, 3, 4])plt.ylabel('some numbers')plt.show()运行结果

2017-12-05 19:24:07 425

原创 Tensorflow学习笔记-输入数据处理框架

输入数据处理框架 # 创建文件列表,并通过文件列表来创建文件队列。在调用输入数据处理流程前,需要统一 # 所有的原始数据格式,并将它们存储到TFRecord文件中 # match_filenames_once 获取符合正则表达式的所有文件 files = tf.train.match_filenames_once('path/to/file-*-*') #

2017-12-05 10:06:50 1287 1

原创 TensorFlow学习笔记-图像预处理

任何神经网络在开始训练数据时,都需要数据增强。什么是数据增强呢?我们首先看一个例子,假如我们的训练集有10万图片,如果直接使用这10张图片进行训练,是不是感觉训练集有点小。在假如,训练神经网络的目的是要正确识别猫,而此时呢?你的训练集中含有猫头的图片都是朝着左侧倾斜,那么当你训练好模型之后,你的模型不能准确识别猫头朝着右侧倾斜的图片,因为它没有被训练。而假如你在训练输入时,将训练集合中的所有图片进行

2017-12-05 09:46:12 5757 1

原创 TensorFolw学习笔记-TFRecord

关于 tensorflow 读取数据, 官网提供了3中方法   1 Feeding: 在tensorflow程序运行的每一步, 用python代码在线提供数据。   2 Reader : 在一个计算图(tf.graph)的开始前,将文件读入到流(queue)中。   3 在声明tf.variable变量或numpy数组时保存数据。受限于内存大小,适用于数据较小的情况。   我们在刚学习Ten

2017-12-04 17:37:56 2668

原创 深度学习-迁移学习

今天简单看了迁移学习,感觉还是挺牛逼的。可以在短时间内将在其它数据集中已经训练好的模型快速转移到另一个数据集上。当然,如果你的数据集比较庞大,还是自己训练好的。   例如,将在ImageNet上训练好的Inception-V3模型转移到另外一个图像分类数据集上,并取得较高的准确率。   在了解迁移学习前,需要了解什么是瓶颈层。它是从神经网络的输入开始算起,一直到神经网络的最后一层的前向传播称为瓶

2017-12-01 19:58:35 7347 4

原创 Openv和Tensorflow中的image相互转换

  opencv读取image直接通过cv2.imread. 获取的图片格式为BGR(三通道图像),是已经编码过的图像。   Tensorflow通过tf.gfile.FastGFile(filename,’rb’).read()读取的图像,是图像的原始数据,还需要经过解码,才能获取图像的数据,数据的格式为RGB(三通道图像),这一点是与Opencv不同。Tensorflow提供了对jpeg和p...

2017-12-01 19:05:37 6048

原创 TensorFlow学习笔记-实现经典LeNet5模型

LeNet5模型是Yann LeCun教授于1998年提出来的,它是第一个成功应用于数字识别问题的卷积神经网络。在MNIST数据中,它的准确率达到大约99.2%.   通过TensorFlow实现的LeNet5模型,主要用到在说使用变量管理,可以增加代码可读性、降低代码冗余量,提高编程效率,更方便管理变量。我们将LeNet5模型分为三部分:   1、网络定义部分:这部分是训练和验证都需要的网络结

2017-12-01 14:24:50 4548 2

原创 Tensorflow学习笔记-SLIM

: 使用 from tensorflow.contrib import slim,可以加速程序的开发,但需要了解其中一些函数的使用方法.1 arg_scope作用可以为函数加入默认的参数.函数定义:def arg_scope(list_ops_or_scope, **kwargs): list_ops_or_scope:参数可以以列表,元组或字典的形式给出,如果以字典的形式给出,则需要在字典中

2017-11-29 15:45:45 1021

原创 TensorFlow学习笔记-ExponentialMovingAverage

TensorFlow学习笔记-ExponentialMovingAverage  作用:使用随机梯度下降算法训练神经网络时,使用滑动平均模型在很多应用中都可以在一定程度上提高最终模型在测试数据上的表现。tensorflow提供的滑动平均模型的接口为:tf.train.ExponentialMovingAverage。   函数的定义如下:def __init__(self, decay, num_

2017-11-27 18:48:50 941 2

原创 Tensorflow学习笔记-模型保存与加载

使用Tensorflow训练好模型之后,我们需要将训练好的模型保存起来,方便以后的使用,这就是Tensorflow模型的持久化。保存v1 = tf.Variable(tf.constant(1,shape = [1]),name='v1')v2 = tf.Variable(tf.constant(2,shape = [1]),name='v2')result = v1 + v2saver =

2017-11-27 16:51:11 6291

原创 Tensorflow学习笔记-变量管理

Tensorflow学习笔记-变量管理  当一个神经网络比较复杂、参数比较多时,就比较需要一个比较好的方式来传递和管理这些参数。而Tensorflow提供了通过变量名称来创建或者获取变量的机制。通过这个机制,可以在不同的函数中直接通过变量的名称来使用变量,而不需要将变量通过参数进行传递。   关于变量管理使用,请参考LeNet5模型的实现:http://blog.csdn.net/lovel...

2017-11-27 14:11:10 389

原创 PyQt5实时显示Camera

PyQt5实时显示Camera  整个Demo的源码链接为:http://download.csdn.net/download/lovelyaiq/10132276   由于QT中的显示需要借助于Qlable,而label显示的图片类型是:QImage和QPixmap。   最终的效果图:   初始化  初始化部分比较简单,包含定时器,Camera、界面等。定时器  对定时器比较了解的可以忽略

2017-11-25 11:03:02 13655 18

原创 QT如何通过文本框选择文件(图像、视频)

QT如何通过文本框选择文件(图像、视频)1、头文件是必须的。#include <QApplication>#include <QFileDialog>2、在工程文件中输入QT += core guigreaterThan(QT_MAJOR_VERSION, 4): QT += widgetsTARGET = TLD(你的工程文件名称)CONFIG += consoleCON

2017-11-25 10:34:19 1060

原创 Opencv3安装所需要的库

Opencv3环境配置一、安装依赖库1、移除本地的通过apt-get安装的opencv:sudo apt-get autoremove libopencv-dev python-opencv2、安装编译工具:sudo apt-get install cmake build-essential3、安装gtk: sudo apt-get install libgtk2.0-dev libgtkglext

2017-11-25 10:11:18 1787

原创 Tensorflow学习笔记-过度拟合问题

Tensorflow学习笔记-过度拟合问题  神经网络在训练是,并不是希望模型尽量模拟训练的数据,而是希望模型对未来的数据具有准确的判断。因此,模型在训练数据上的表现并不代表对未来数据的表现。如果模型可以完全记住训练数据而使得损失函数为0,这就是引起过度拟合的问题。   过度拟合训练数据中的随机噪声,虽然可以得到非常小的损失函数,但对未知数据很难做出判断。   训练处理的模型一般变现出三种

2017-11-23 22:02:53 1692

原创 Tensorflow学习笔记-softmax、cross_entroy

Tensorflow学习笔记-softmax_cross_entropy_with_logits  神经网络模型的效果和优化的目标都是通过损失函数(loss function)来定义的。但是在分类问题中,如果评价输出结果的准确性呢?常用的方法是使用交差熵(cross entropy),它刻画了两个概率分布之间的距离,它是分类问题中使用比较广的损失函数。    H(y,y′)=−∑xy(x)∗lo

2017-11-23 17:00:29 3014

原创 python序列化存储模块:Pickle

python序列化存储模块:Picklepython的pickle模块实现了基本的数据序列和反序列化。通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去,永久存储;通过pickle模块的反序列化操作,我们能够从文件中创建上一次程序保存的对象。函数接口使用到主要接口有4个:dump, dumps, load, loads。其中dump和load用在序列和序列对象,而dums与

2017-11-23 11:28:42 673

原创 sklearn-SVC实现与类参数

sklearn-SVC实现与类参数它是基于libsvm实现的。随着样本数量的增加,拟合时间的复杂度要高于二次,这就使得当样板数量超过一万个时,很难扩展到数据集中。在多类处理时,是按照1对1的方案进行处理的。 函数的的定义为: def __init__(self, C=1.0, kernel='rbf', degree=3, gamma='auto',coef0=0.0, shrinkin

2017-11-23 10:07:29 1461

原创 Python 搭建多线程服务端

Python 搭建多线程服务端     使用python搭建多线程服务端需要使用socketserver的ThreadingTCPServer方法。并且需要重写setup()、handel()、finish()这三个函数,具体的流程如下:import socketserverimport timeimport threadingHOST = 'localhost'PORT = 96

2017-11-10 10:10:41 1435

原创 python print重定向到文件

python print重定向到文件  我们在开发中,有时需要将log信息保存到文件中,方便后续的查看,而无论是python2的print 还是python3的print(),默认都是将信息输出的控制台中,无法保存到本地,因此需要进行重定向。  import timeimport osclass LOG(): def __init__(self): if n

2017-11-02 09:07:01 7128

原创 Python 获取当前文件所在目录

Python 获取当前文件所在目录  python下获取文件所在的绝对目录,大都通过:os.path.abspath,但如果你在其他目录下,通过绝对路径获取,这时就会有错。例如:  步骤1 在当用目录运行import osimport sysprint(os.path.abspath('main.py'))  结果为:/home/abc/TiRan/WorkSpace/Py

2017-11-01 18:59:20 56495 9

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