- 博客(80)
- 资源 (3)
- 收藏
- 关注
原创 ubuntu增加swap
首先在你的目录中创建一个myswapfile并创建myswapfile文件,这个名字可以改成你自己的。count=7:总数,比如bs是1G,count为7 那么swap就是1*7G。bs=1G :可以是单位G也可以是M 比如1G, 512M。
2024-10-05 10:00:38 281
原创 ROS-5.自定义topic消息格式
ros中,定义消息是语言无关的,定义消息文件保存在如下Person.msg 文件就是我们的消息文件,后缀为msg,语言无关,内容如下//字符串 名称 string name //uint8 性别 uint8 sex // uint8 年龄 uint8 age //这种方式定义性别枚举 uint8 unknown = 0 uint8 male = 1 uint8 female = 2内容如下。
2023-09-02 18:43:33 419
原创 ROS-4.创建发布者和订阅者
ros中非长连接的通信使用topic的方式,publisher向topic发布消息,subscriber订阅topic消息,对于非应答模式的通信适合使用该模式,如下图接下来我们实现一个发布者和订阅者。
2023-09-02 17:58:42 402
原创 ROS-3.ros创建工作空间和工作包
工作空间(workspace)是存放工程开发相关文件的目录,目录里面包括最顶层的工作空间(可以任意命名)和src (必须为src)文件夹是需要自己创建。
2023-08-27 10:40:56 258
原创 github 配置了公钥依旧提示git@github.com‘s password: Permission denied, please try again
github 配置了公钥依旧提示git@github.com‘s password: Permission denied, please try again.
2023-03-02 19:32:30 13420
原创 【vscode使用clang-format格式化代码】
当然vscode有自己的clang-format的插件,但是使用不是很灵活,因此我们现在使用上面生成的.clang-format文件,并且可以自定义。在工程目录生成.clang-format文件,这里支持多种格式模板llvm,google,chromium,mozilla,webkit。在使用vscode远程开发代码的时候,我们希望能够在保存代码的时候自动格式化代码,这里提到。我们可以修改.clang-format里的参数,自定义代码格式。这里的全部流程是在ubuntu上操作。...
2022-07-31 11:20:00 1782
原创 Linux添加自定义动态库搜索路径
在linux上执行程序的时候,如果需要链接动态库,一般linux系统会搜索/lib 和 /usr/lib ,这是系统默认的搜索路径,那怎么将我们自己的动态库路径添加到默认搜索路径中呢。有如下几个方法修改环境变量LD_LIBRARY_PATH,指名库路径在/etc/ld.so.conf文件中添加库的搜索路径方法一:修改LD_LIBRARY_PATH 环境变量临时方法export LD_LIBRARY_PATH=<your-lib-path>:$LD_LIBRARY_PATH# 例如
2022-01-13 17:38:24 3007
原创 MiniFlow -- 12.SGD Solution
这里使用波士顿房价完成一个完整的机器学习这里添加一个梯度下降函数def sgd_update(trainables, learning_rate=1e-2): """ Updates the value of each trainable with SGD. Arguments: `trainables`: A list of `Input` Nodes representing weights/biases.
2021-06-20 20:27:47 176
原创 MiniFlow -- 10.简单的实现梯度下降
这里我们加入学习率来实现一下简单的梯度下降我们假设输出方程为二次方程y = x**2 +5def f(x): return x ** 2 + 5他是二次方程,当x为0的时候y取得最小值,我们梯度下降就是要得到y的最小值方程的导数为2*xdef df(x): """ Derivative of `f` with respect to `x`. """ return 2*x我们假设当x=2的时候,方程的倒数为4,因此切线方程斜率为4,根据运算得到切线方程
2021-06-14 17:00:10 134
原创 MiniFlow -- 9.简单理解反向传播
我们先来实现sigmoid 类的backward 方法,这里先展示Layer的变化,Input和Linear的backpropagation 的工作方式我们先看看Layerclass Layer: def __init__(self, inbound_layers=[]): # 本层的输入层列表 self.inbound_layers = inbound_layers self.value = None self.outbound_lay
2021-06-14 16:44:33 163
原创 MiniFlow -- 8.简单理解梯度
让我们通过一个简单的例子来完成梯度计算如下一个图图中+表示加法运算,X表示乘法运算如上图,H表示乘法节点,F,G分别表示加法节点那么完整的公式如下所示当改变了F或者G,和改变a, b, x, or y,都会改变输出H。H依赖所有输入变量构成的一个多维度空间,输入一些小的变化都会改变输出H。这个多维度斜坡就是梯度。对输入向量矩阵进行偏导当前层需要获取其输入层的梯度来计算自己的梯度其实我们是向梯度的反方向移动,如上图,当计算到梯度小于0的时候,我们需要向右移动(正方向)达到谷底,当梯度
2021-06-12 18:34:15 261
原创 MiniFlow -- 7.简单理解梯度下降
我们已经实现了神经网络,激活函数,和损失函数,这个流程只是前向计算,还不具有学习的能力,接下来我们来实现学习部分BackpropagationBackpropagation 可以实现网络学习,但是怎么实现学习的功能呢,我们使用梯度下降的方式来达到学习的效果可以看看梯度下降推导 梯度下降简单实现Gradient Descent如上图,想象在三维坐标空间中一个点,在现实生活中,在一个斜坡上放置一个球的比喻很是恰当。点的高度表示当前网络的输出和正确的网络输出之间的差别,这个时候的参数是模型当前的参数。因此
2021-06-09 22:42:39 132
原创 MiniFlow -- 6.Cost
我们已经知道了什么是激活函数,但是怎么评判我们的模型的好坏的标准呢,这里我们引出损失函数。有很多技术来定义模型的精确度,都是为了产生能够尽量接近真实值,人们使用不同的名称来定义这个精准度的度量方法,可以叫做loss或者cost,这里会使用cost多些接下来我们看一个均方误差的损失公式(mean squared error(MSE)).这里的w表示神经网络里的要学习的权重,b是偏量,m是一个批次总共训练样本,可以将a看作真实值,y(x)为网络输出,我们的目的是将y(x) 和 a 尽最大程度的相似,这里
2021-06-06 16:34:25 127
原创 MiniFlow -- 5.Sigmoid Funcition
前几节写了线性方程,但是如果我们想预测概率,可能梯度爆炸,于是我们使用激活函数对输出进行约束如我们使用sigmoidsigmoid可以将输出约束到0到1线性变换对于简单的线性计算是非常有效的,但是神经网络需要更为复杂的计算。对于一个原始的神经网络设计:感知器,表现为二进制,这里会设计一些阈值和权重,当输入太大的话,就输出1,输入太小的话就输出0,但是二进制感知器是不连续的。sigmoid函数是完美的连续s函数根据求导数的规则,sigmoid的导数为...
2021-06-06 11:59:54 140
原创 MiniFlow -- 4.Linear Transform
还记得以前的要给公式上面的表述方式可以理解为和公式的方式,接下来我们使用矩阵的方式,将所有的x表示为矩阵X,所有的w为矩阵W,当然b也可以理解为一个向量如果我们认为 Linear 节点是一个1个输入,就是对应上面公式i=1,但是要对应k个输出,上面的公司就不能用了,接下来我们就得用矩阵的方式表示我们使用X表示一个 1x1矩阵W就变成了1xk矩阵但是更具行列式的相乘规则,上面的是错的,怎么也得不到一个k维向量,怎么办,只能用矩阵的广播来解释,用X里的一个和W里的逐个相乘,得到一个k向量。然后呢
2021-06-01 23:48:16 187 2
原创 MiniFlow -- 3.Learning
线性计算正如现在的 MiniFlow,我们的网络计算输入得到输出,只做了简单的加法,不能做预测,这不是我们想要的,我们可以在输入上加上权重,进行约束,来达到预测的功能一个简单的神经网络节点依赖于三个部件inputs:x(vector),这是输入向量weights:w(vector), 这个是输入的权重向量bias:b(scalar),这个是偏移标量输出就是如下公式我们可以通过改变权重,这样可以改变某一个输入对输出的贡献,神经网络就是要学习这里的权重,就能够将输入按照一定规则得到输出。反
2021-06-01 22:11:50 147
原创 MiniFlow -- 1.什么是神经网络
神经网络1. 什么是神经网络2. 前向传播3. Graphs4. Neurons and MiniFlow4. 网络节点之间的拓扑关系1. 什么是神经网络如上图,这是一个简单的神经网络,神经网络就是一个包含数学运算的流程图(Graph),这些数学运算包括矩阵运算,还有激活函数。这个图表包括节点/神经元(neurons/nodes),链接/边界线(links/edges)。每一层的节点的就是使用上一层的的输出作为本层的输入进行数学运算,当然不包括输入层次(input layer),因为输入层不进行运算
2021-05-31 21:48:19 207
原创 MiniFlow -- 2.什么是神经网络
1.神经网络如上图,这是一个简单的神经网络,神经网络就是一个包含数学运算的流程图(Graph),这些数学运算包括矩阵运算,还有激活函数。这个图表包括节点/神经元(neurons/nodes),链接/边界线(links/edges)。每一层的节点的就是使用上一层的的输出作为本层的输入进行数学运算,当然不包括输入层次(input layer),因为输入层不进行运算比如,每一个节点进行f(x,y)的运算,x和y都是将来自上一层的输出作为本层的输入。因此,每一层都会生成一个输出值,输出层除外(output .
2021-05-27 00:36:54 221 6
原创 MiniFlow -- 0.介绍
1.什么是MiniFlow在这个专题,学习优达的课程,我们来写一个非常简单的神经网络框架,没错,就像TensorFlow一样,TensorFlow是非常受欢迎的开源神经网络库之一,这里,我们来构建一个简单的TensorFlow库,因此叫做MiniFlow,为什么要这么做呢?之前你肯定学习了什么是前向学习,反像传播(backpropagation),differentiable graphs(可微图)我的理解是神经网络的链接方式,很多神经节点有规律的链接到一起,梯度下降等概念,这里我们就通过实现一个Min
2021-05-26 23:45:51 240
原创 darknet代码注释--1.激活函数
1.激活函数激活函数1.linear_activate2.logistic_activate3.relu_activate4.relu_activate5.elu_activate6.selu_activate7.relie_activate8.ramp_activate9.leaky_activate10.tanh_activate11.plse_activate12.lhtan_activate求导函数1.lhtan_gradient2.hardtan_gradient3.linear_gradient
2021-05-09 19:32:30 1386
翻译 GStreamer笔记 -- 3.Dynamic pipelines
动态管道1. 目标2. 介绍3. 代码4. 代码解读4.1. 信号4.2. 回调函数4.3. GStream 的管道的状态1. 目标这个教程将展示GStreamer的基本应用,就是怎么动态的建立一个pipeline,而不是在应用的开始就搭建好pipeline。在这个教程之后,你将获得开始 Playback tutorials教程的必要知识,这里我们将学习以下几点:怎样在链接元素的时候实现更细致的控制怎样即使获取感兴趣的事件,以便即使做出相应的动作元素的各种状态2. 介绍正如你所见的,这个
2021-04-11 18:06:47 327
原创 ResNet-50 训练猫狗分类
ResNet-50 训练猫狗分类1.ResNet网络2.猫狗数据3.训练4.测试这里介绍一下怎么搭建ResNet网络,并说明一下残差网络的结构,并使用ResNet来训练一个二分类问题1.ResNet网络对于ResNet网络的讲解可以参考这个链接(https://blog.csdn.net/koala_tree/article/details/78583979)这里说的已经很清楚了,对于视频讲解可以到网易云课堂里面搜索吴恩达的《深度学习工程师》微专业课程使用tf2的keras代码2.猫狗数据猫狗图
2020-12-06 15:54:40 1903
原创 tensorflow2 加载数据方法总结
tensorflow2 加载数据方法总结1.tfrecord1.1 tfrecord 打包1.2 tfrecord 读取2.tf.data.Dataset3.tf.keras.utils.Sequence4.tf.keras.preprocessing.image.ImageDataGenerator1.tfrecordtfrecord 是将训练数据和label数据打包成二进制文件,然后在训练的时候可以快速的读取,节省io操作1.1 tfrecord 打包tfrecord_file = "train
2020-11-28 16:47:40 561
原创 将长方形转换为正方形
批量将长方形方框转换为正方形def rect2square(boxes): h = boxes[:, 3] - boxes[:, 1] w = boxes[:, 2] - boxes[:, 0] l = np.maximum(w, h) boxes[:, 0] = boxes[:, 0] + w * 0.5 - l * 0.5 boxes[:, 1] = boxes[:, 0] + h * 0.5 - l * 0.5 boxes[:, 2:4] = boxe
2020-11-28 16:09:40 1152
原创 交并比 iou
交并比在判定预测框和真实框之间的准确度的时候,我们可以用iou进行量化,如下图,黑框为真实框,红框为预测框,并集:橙色部分面积+蓝色部分面积交集:蓝色部分面积通过计算 交集 / 并集 的比值来量化预测结果的准确度,如果为1表示预测框和真实框重合def box_iou(box, boxes): """ :param box: [4,](x1,y1,x2,y2) :param boxes: [n,4] :return: [n] """ # bo
2020-11-28 15:51:55 561
原创 非极大值抑制
非极大值抑制在进行目标检测的时候,当多个方框都预测到同一个目标的时候,我们需要去除iou小的方框,源码如下def nms(boxes, threshold, method="Union"): """ :param boxes: (n, 9) [x1, y1, x2, y2, score, offset_x1, offset_y1, offset_x2, offset_y2] n表示有n个方框 :param threshold: 阈值 float :param metho
2020-11-28 15:33:36 150
原创 常用数据打乱方法总结
数据打乱方法1.标注文件说明2.读取标注文件1.排序打乱2.切片打乱3.当我们拿到一个数据集后,我们需要先从标注文件中读取数据,然后对其进行打乱(shuffle),我们那celeba数据集为例进行说明1.标注文件说明202599image_id x_1 y_1 width height000001.jpg 95 71 226 313000002.jpg 72 94 221 306000003.jpg 216 59 91 126000004.jpg 622 257
2020-11-28 15:19:09 2338 2
原创 mtcnn系列-2.数据集讲解
mtcnn训练数据集使用的人脸数据集人脸数据集特点训练数据的比例分配每个模型的训练数据集怎么获取怎么获取训练数据集使用的人脸数据集训练mtcnn的数据集论文里使用的是WIDER FACE 和CelebA,其中WIDER FACE用作回归人脸分类和box,CelebA用来回归关键点(landmark)人脸数据集特点训练数据集里面分为 negatives, positives, part face。negatives:可以认为是图片的背景的非人脸部分,使用和真实标注框的iou<0.3posi
2020-11-17 21:00:35 5818
原创 mtcnn系列-1.模型原理
mtcnn模型原理1.mtcnn的工作流程步骤0步骤1步骤2步骤3mtcnn的损失函数1.mtcnn的工作流程mtcnn是用来做人脸检测的模型,模型采用三级联的工作方式,如下图步骤0将输入图像进行金字塔缩放,小图检测大人脸,大图检测小人脸步骤1这里使用一个全卷积网络,叫做Proposal Network(P-Net),这个网络比较简单,有4层cnn网络,最后一层是三个不同深度的1*1卷积核,一个有2个filter,用来分类有人脸和无人脸,一个是有4个filter,用来回归方框偏移量,一个有10
2020-11-17 19:15:47 1380 1
原创 计算CNN的输出
怎么根据cnn网络的参数和输入图片大小,计算一个cnn网络的输出呢,下面来说明一下现在做如下假设n:表示图像尺寸,比如图像尺寸为n*n*3f:表示卷积核尺寸,比如卷积核尺寸为f*f,可以用filter表示卷积核s:表示步进,卷积核一次移动多少个像素p:表示填充数目,表示一边填充p列像素,2p表示左右各填充p列像素,同样,在行上表示一边填充p行像素,2p表示上下各填充p行像素于是我们就可以得到如下公式不填充情况下 步进为1输出矩阵形状为:(n-f+1)(n-f+1)比如:n=10, f=3
2020-11-17 18:05:51 1776
原创 人脸识别系列--2.yolov3
人脸识别系列–1.环境搭建和训练人脸识别系列--2.yolov3在实现用ssd来检测目标后,我们用yolov3来实现目标检测。yolov3的keras实现代码推荐为https://github.com/qqwweee/keras-yolo3但是这个源码是用tf1实现的,我将其改为使用tf2。代码地址为:https://github.com/xiaofeng1990/yolov3-keras-tf2.3...
2020-10-29 16:07:27 995
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人