- 博客(96)
- 资源 (11)
- 收藏
- 关注
原创 C++之模板类&模板函数
模板类模板类的定义使用template<typename T>或template<class T>,将具有相同功能的代码合并,增加代码的简洁性和易读性。例如在计算凸包的例子中,传入点的类型可以是自定义的Point,也可以是pcl::point之类。例如在头文件中的定义如下:template<typename T>class POLYGON{public: POLYGON();public: void convhull(std::vector&
2021-08-25 20:49:10 1600
原创 Linux 下打包可执行程序所有依赖的so 库
Linux 下打包可执行程序所有依赖的so 库1、linux中通过ldd 可以查询一个执行程序的依赖的所有so库:例如:ldd groundSegmentlinux-vdso.so.1 => (0x00007ffcecb79000)libroscpp.so => not foundlibrosconsole.so => not foundlibroscpp_serialization.so => not foundlibrostime.so => not fo
2021-07-28 22:30:05 3146
原创 地面分割:Fast Segmentation of 3D Point Clouds for Ground Vehicles
论文链接:Fast segmentation of 3D point clouds for ground vehicles | IEEE Conference Publication | IEEE Xplore代码链接:GitHub - lorenwel/linefit_ground_segmentation: Ground Segmentation论文的核心思想:相比Fast Segmentation of 3D Point Clouds: A Paradigm on LiDAR Data for
2021-07-16 21:57:58 6876 11
原创 地面分割:Fast Segmentation of 3D Point Clouds A Paradigm on LiDAR Data
Fast Segmentation of 3D Point Clouds: A Paradigm on LiDAR Data for Autonomous Vehicle Applications代码链接:https://github.com/VincentCheungM/Run_based_segmentation论文链接:Fast segmentation of 3D point clouds: A paradigm on LiDAR data for autonomous vehicle a
2021-07-15 10:46:37 3391 4
原创 ROS 发送带颜色的点云
ROS 发送带颜色的点云方式一:PointXYZRGB#include <ros/ros.h>#include <pcl/point_types.h>#include <pcl_conversions/pcl_conversions.h>#include <sensor_msgs/PointCloud2.h>//定义需要的变量ros::Publisher pubCloud;sensor_msgs::PointCloud2 colored_ms
2021-07-06 21:35:17 1762
原创 一种快速收缩地图边界方法
一种快速收缩地图边界方法 在制作地图后,有时需要向内收缩地图地图边界,例如左右边界需要向内收缩30cm。这里提供了一种快速收缩地图的方法。先放一张收缩后的效果图。 这里以sin(x)作为地图的右边界,sin(x)+1作为地图右边界,左右边界都需要向内收缩30cm。方法如下:1、假设右边界连续AB两点,A点向内收缩Dist的距离,为C点。2、计算AB线段的斜率k3、获取AB的...
2019-03-21 11:10:58 1033
原创 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 8109 7
原创 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 5003
原创 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 1700
原创 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 803
原创 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 12935
原创 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 1289 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 13377 2
原创 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 1348
原创 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 9181 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 3563 2
原创 深度学习---激活函数
在说常用的激活函数之前,先看一下生物神经元与人工神经元之间的激活函数的区别。 在生物神经元中,激活函数的作用为:是否相应上一个神经元,如果响应比较大,则激活下一个神经元,往下以此传递。而人工神经元中的激活函数,又成为“非线性映射函数”,它并不是去激活什么东西,而是增加神经网络的非线性因素,提升神经网络的表达能力。下面介绍常见的几种激活函数:sigmoid、tanh、relu等。 ...
2018-02-23 14:47:01 490
原创 方差、标准差、均方误差的总结
方差 百度百科中关于方差的解释为:(variance)是在概率论和统计方差衡量随机变量或一组数据时离散程度的度量。概率论中方差用来度量随机变量和其数学期望(即均值)之间的偏离程度。统计中的方差(样本方差)是每个样本值与全体样本值的平均数之差的平方值的平均数。在许多实际问题中,研究方差即偏离程度有着重要意义。 方差是衡量源数据和期望值相差的度量值。 假设有一组离散的数据xn=[x1
2018-01-24 22:07:06 9389 2
原创 Numpy中常用的接口
Numpy是利用python来进行数据分析中必须要掌握的基础。是高性能科学计算和数据分析的基础包。利用numpy能对整组数据无需循环就能进行快速的标准数学函数计算,同时能进行线性代数,随机数,以及傅里叶变换等等功能,而对于数据分析来说,比较重要的用途就是数据的清理,过滤,子集构造,转换,排序,描述统计等等。 在使用的时候,对某个API接口记得不是太轻,需要从新度娘,这势必会浪费比较多的时...
2018-01-24 11:50:36 1052
原创 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 26168
原创 深度学习--Inception-ResNet-v1网络结构
Inception V4的网络结构如下: 从图中可以看出,输入部分与V1到V3的输入部分有较大的差别,这样设计的目的为了:使用并行结构、不对称卷积核结构,可以在保证信息损失足够小的情况下,降低计算量。结构中1*1的卷积核也用来降维,并且也增加了非线性。 Inception-ResNet-v2与Inception-ResNet-v1的结构类似,除了stem部分。Ince...
2018-01-10 17:15:08 28811 5
原创 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 1427
原创 Qt-将QDebug信息保存到文件中
Qt的qdebug可以很方便的输出LOG信息,但是有时我们需要将LOG信息保存到本地,方便后期的查看,例如,我们使用Qt开好的软件,然后打包发布后,此时就需要将有用的LOG信息保存到本地,如果软件使用过程中出现什么问题,我们就可以基于已经保存好的LOG信息,定位软件那个地方出现了Bug。 话不多说,直接上Code。有Code有真相。#include <QDir>#include <QTextSt
2017-12-14 19:24:56 2470
原创 TensorFlow学习笔记-组合训练数据
Tensorflow数据预处理操作:http://blog.csdn.net/lovelyaiq/article/details/78716325 Tensorflow读出TFRecord中的数据,然后在经过预处理操作,此时需要注意:数据还是单个,而网络的输入一般以Batch为单位,因此我们需要将单个的数据组合成一个Batch,做为神经网络的输入。 Tensorflow提供组合训练数据
2017-12-06 09:35:57 3822
原创 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 565
原创 Tensorflow学习笔记-输入数据处理框架
输入数据处理框架 # 创建文件列表,并通过文件列表来创建文件队列。在调用输入数据处理流程前,需要统一 # 所有的原始数据格式,并将它们存储到TFRecord文件中 # match_filenames_once 获取符合正则表达式的所有文件 files = tf.train.match_filenames_once('path/to/file-*-*') #
2017-12-05 10:06:50 1500 1
原创 TensorFlow学习笔记-图像预处理
任何神经网络在开始训练数据时,都需要数据增强。什么是数据增强呢?我们首先看一个例子,假如我们的训练集有10万图片,如果直接使用这10张图片进行训练,是不是感觉训练集有点小。在假如,训练神经网络的目的是要正确识别猫,而此时呢?你的训练集中含有猫头的图片都是朝着左侧倾斜,那么当你训练好模型之后,你的模型不能准确识别猫头朝着右侧倾斜的图片,因为它没有被训练。而假如你在训练输入时,将训练集合中的所有图片进行
2017-12-05 09:46:12 6599 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 2992
原创 深度学习-迁移学习
今天简单看了迁移学习,感觉还是挺牛逼的。可以在短时间内将在其它数据集中已经训练好的模型快速转移到另一个数据集上。当然,如果你的数据集比较庞大,还是自己训练好的。 例如,将在ImageNet上训练好的Inception-V3模型转移到另外一个图像分类数据集上,并取得较高的准确率。 在了解迁移学习前,需要了解什么是瓶颈层。它是从神经网络的输入开始算起,一直到神经网络的最后一层的前向传播称为瓶
2017-12-01 19:58:35 9987 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 7460
原创 TensorFlow学习笔记-实现经典LeNet5模型
LeNet5模型是Yann LeCun教授于1998年提出来的,它是第一个成功应用于数字识别问题的卷积神经网络。在MNIST数据中,它的准确率达到大约99.2%. 通过TensorFlow实现的LeNet5模型,主要用到在说使用变量管理,可以增加代码可读性、降低代码冗余量,提高编程效率,更方便管理变量。我们将LeNet5模型分为三部分: 1、网络定义部分:这部分是训练和验证都需要的网络结
2017-12-01 14:24:50 5304 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 1218
原创 TensorFlow学习笔记-ExponentialMovingAverage
TensorFlow学习笔记-ExponentialMovingAverage 作用:使用随机梯度下降算法训练神经网络时,使用滑动平均模型在很多应用中都可以在一定程度上提高最终模型在测试数据上的表现。tensorflow提供的滑动平均模型的接口为:tf.train.ExponentialMovingAverage。 函数的定义如下:def __init__(self, decay, num_
2017-11-27 18:48:50 1193 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 7659
原创 Tensorflow学习笔记-变量管理
Tensorflow学习笔记-变量管理 当一个神经网络比较复杂、参数比较多时,就比较需要一个比较好的方式来传递和管理这些参数。而Tensorflow提供了通过变量名称来创建或者获取变量的机制。通过这个机制,可以在不同的函数中直接通过变量的名称来使用变量,而不需要将变量通过参数进行传递。 关于变量管理使用,请参考LeNet5模型的实现:http://blog.csdn.net/lovel...
2017-11-27 14:11:10 490
原创 PyQt5实时显示Camera
PyQt5实时显示Camera 整个Demo的源码链接为:http://download.csdn.net/download/lovelyaiq/10132276 由于QT中的显示需要借助于Qlable,而label显示的图片类型是:QImage和QPixmap。 最终的效果图: 初始化 初始化部分比较简单,包含定时器,Camera、界面等。定时器 对定时器比较了解的可以忽略
2017-11-25 11:03:02 18205 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 2079 1
原创 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 2705
谷歌的inception_v3模型.zip
2017-11-30
PyQt5实时显示Camera
2017-11-25
基于FPGA多功能出租车计费器
2012-12-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人