自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(80)
  • 资源 (3)
  • 收藏
  • 关注

原创 pip使用国内源

【代码】pip使用国内源。

2024-10-05 10:44:56 98

原创 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

原创 图片数据增强

【代码】图片数据增强。

2024-02-21 17:45:10 484

原创 ROS-6.参数的使用

命令功能获取参数从文件加载参数保存参数到文件删除一个参数列举所有参数。

2023-10-15 16:59:28 190

原创 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

原创 ROS-2.ros工具简单认识

ros提供了丰富的命令行工具。

2023-08-20 23:12:17 117

原创 ROS-1.安装ROS

安装ros

2023-08-20 11:43:09 242

原创 Docker容器支持opencv中文

需要在图片上输出中文,但是opencv不支持中文,容器没有中文环境。

2023-04-19 20:22:37 335

原创 ubuntu开放端口

ubuntu 排查端口

2023-03-06 17:55:10 990

原创 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

原创 【1.c++笔记-- 域运算符的作用】

c++中有符号,叫做域运算符,这个符号有多种作用。

2022-08-21 10:22:37 589

原创 【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

原创 numpy生成网格方法

nump生成网格矩阵

2022-06-12 13:14:23 1226

原创 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

英伟达烧写工具.rar

英伟达烧写镜像工具

2020-03-05

3.onvif-2.8.15.rar

onvif实现探测摄像头的rtmp地址,使用gsoap-2.8.15 onvif实现探测摄像头的rtmp地址,使用gsoap-2.8.15

2019-11-20

onvif-discover.rar

使用onvif实现设备发现,probe指令,整理的完整工程代码

2019-11-12

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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