- 博客(81)
- 收藏
- 关注
原创 使用pytorch训练MobilenetV3-ssd并部署到arm上踩坑记录
之前使用 Tensorflow Detection API 训练 SSD 网络,改里边的 depth_multiplier 参数使网络层数降低,确实可以提高推理速度,但是因为该 API 训练的网络里有一个定制的操作符TFLite_Detection_PostProcess 不能在GPU上运行,导致推理时需要在 GPU CPU 上切换影响推理速度(猜测,因为 tflite 的 delegate 也会有类似现象),所以准备用pytorch从轮子造起,这样灵活性比较强。在github上找到了一个M...
2022-03-08 15:07:24
2518
1
原创 Armnn(v21.05)使用方法及部分源码理解
工作原因需要使用 Armnn 进行神经网络推理,之前使用 tensorflow2 的 detection API训练了自己SSD模型,转换成tflite以后使用 tensorflow lite 进行推理,效果还可以,但是部署到 Armnn 上却出现了问题。报错:what(): MemCopyQueueDescriptor: input->10 & output->40 must have the same number of elements.用tflite...
2021-12-24 11:13:02
3274
原创 使用TensorFlow Object Detection API训练自己的目标检测模型(二)配置环境、训练
由于没有显卡,租了云端的GPU服务,现在有很多厂商都提供,阿里云、腾讯云等等,但是这些大的厂商显卡比较高级所以费用比较高,找了一个比较便宜的4块钱一小时智星云。这些服务器都差不多,操作看他们的文档,我们用ubuntu,ssh连上以后就跟操作自己的电脑差不多,需要注意的是如果关闭服务器,里边的数据就都没了,如果修改环境了,也都没了,和上网吧差不多,可能比网吧还便宜...
2021-12-09 09:57:45
1251
原创 使用TensorFlow Object Detection API训练自己的目标检测模型(一)制作数据集
tensorflow detection api 训练 SSD
2021-12-08 17:01:08
2846
1
原创 TensorFlowLite + Armnn 实现神经网络推理
随着深度学习技术的飞速发展,越来越多的神经网络可以运行嵌入式设备上了,但是网上的教程多以安卓平台为主,这可能是因为手机平板等移动设备装机量巨大,所以大家都比较关注,而嵌入式linux上的相关资料和项目不是很多。最近由于工作需要,研究了一下这方面的东西,这里进行一下总结,也希望能过帮助到有需要的朋友。硬件平台: 安装了ubuntu20.04的x86笔记本 安装了ubuntu20.04的rk3399 arm 板目标: 在arm板上运行神经网络(ssd,...
2021-11-11 14:22:48
3537
2
原创 Nav2源码阅读(三)controller_server
作为一个Lifecycle_node,构造函数之外,各个状态的callback是最主要的,我们一个一个来看。on_configure
2021-06-23 11:03:37
1812
2
原创 Nav2源码阅读(一)nav2_bringup tb3_simulation_launch.py
ros2 launch nav2_bringup tb3_simulation_launch.py通过这个脚本就可以启动最简单的导航仿真,我们来分析一下这个整个过程是怎么启动的
2021-06-02 10:01:27
2045
2
翻译 Nav2官方文档阅读(一)Navigation相关概念
参考链接:https://navigation.ros.org/concepts/index.html
2021-06-01 16:57:59
1989
原创 区块连学习之波卡Polkadot(一)开发环境配置、建立节点、简单的交互
参考链接:https://substrate.dev/en/tutorialshttps://substrate.dev/docs/en/tutorials/create-your-first-substrate-chain/setup本文是根据Polkadot官方教程操作的记录,由于本人从来没有接触过网页开发,谬误之处还请指正。框架:Substrate语言:Rust编译工具:cargo包管理工具:yarn第一个教程会建立一个Node,并且通过一个前端网页和这个Node交互。
2021-05-21 11:22:37
1770
原创 ROS2 官方教程翻译(一) 关于组件(About Composition)
原文链接:https://docs.ros.org/en/foxy/Concepts/About-Composition.html目录 ROS 1 - Nodes 与 Nodelets ROS 2 -统一的 API 编写一个组件 使用组件 实际应用 ROS1-Nodes 与 Nodelets在ROS1中,我们可以把代码写成一个Node或者一个nodelet.ROS1 的node会被编译成可执行文件executables.ROS1的nodelets会被
2021-03-10 16:44:39
4540
原创 Tensorflow1.9训练ssd-mobilenet
使用Tensorflow1.9用自己的数据集训练ssd-mobilenet1.环境搭建电脑装了ubuntu20.04,nv驱动的安装比较简单了,直接在设置里就额外驱动里就可以找到,如果那里没有,就下载一个nv驱动,点击安装却并不真地安装,这样而外驱动的选项卡里就会有了1.1安装docker就按照官网的步骤安装https://www.docker.com/1.2使用docker安装tensorflow按照官网教程安装https://tensorflow.google.cn/in
2021-01-14 15:23:03
920
1
翻译 tensor_flow学习(二)keras指南
tensor_flow官网上的教程链接:https://tensorflow.google.cn/guide/keras/sequential_model这里教了最基本的全链接Dense,其中tensor的shape需要弄清楚,可以使用tensor.get_shape()来获取形状。layer1 = layers.Dense(2)x = tf.ones((1, 4))y = layer1(x)layer1.weights # Now it has weights, of shape (
2021-01-04 11:28:43
311
原创 tensor_flow学习(一)
TensorFlow好乱,各种版本,各种API,保存的模型格式都有好多种,发展得太快,已经扯到蛋了。我就是想加载一个模型,然后看一看网络结构,就这么简单的事情,真是吐了。1.用了TensorFlow2.3,因为它能够打开h5格式的模型,但是它的API变化很大,官网教程看得稀里糊涂,没什么章法,还是要到博客上去找,这里有一个取巧的办法,可以把TensorFlow2当作TensorFlow1用import tensorflow.compat.v1 as tftf.disable_v2_behav
2020-10-29 15:11:11
403
原创 depth_camera降低cpu消耗
上司突然说depth_camera的cpu太高了,其实加入amp filter以后经过调整也没有比以前高,但是人家说高,那就想办法降低呗,毕竟打工人,不过经过这个过程也学到了一些东西。1.C++程序性能分析 想降低cpu消耗首先要知道那里消耗的cpu多,好对症下药。这里使用了google的性能分析工具google-perftools.1)先到github上下载源代码:https://github.com/gperftools/gperftools/releases按照说明进行编译,因为
2020-10-28 16:12:32
591
原创 Docker学习(一)
近期要研究研究深度学习,接触到了docker,从头学习一下。这个网站不错,讲了很多干货:https://yeasy.gitbook.io/docker_practice/ide构建自己的docker image1.写Dockerfile2.构建imagedocker build [选项] [镜像名称] <上下文路径/URL/->这里的上下文就是Dockerfile 所在的文件夹docker build -t nginx:v3 .自己总结一些操作流程1.打.
2020-10-21 16:39:13
236
原创 orbbec相机安装及使用
由于之前使用的TOF相机性能比较差,决定给机器人换一个摄像头,选择了orbbec的摄像头,之前都是在笔记本上用realsense,zed,kinetic之类的,基本上下载一个sdk就可以直接用了,但是我们现在机器人用的是ARM架构,这就涉及到很多问题.实现过程中也学习到了一些知识,记录下来,以便回头查阅.1.相机驱动 orbbec给了一个ROS包,运行他的ros节点就可以获取相机的点云,rgb图像等数据.但是我们的机器人不是ros系统的,他们又没有c++的API,研究代码以及沟通之后发现他们获取d
2020-10-13 16:40:30
4834
原创 旋转矩阵(一):旋转矩阵能让什么东西旋转?
由于最近工作又要用到TF变换,所以不得不又复习一下旋转矩阵的知识,这些东西之前还挺明白的,长时间不用就忘记了,这里绕来绕去的有点懵逼,记录下来以后再懵逼的时候看看。1.网上讲旋转矩阵的有很多,但是公式上还是有一些出入的,例如绕x轴转theta角的时候,有的人说旋转矩阵是有的人说旋转矩阵是我们可以看到这是一个转置的关系,其实是因为旋转矩阵是正交矩阵,转置等于逆,也就是说上边这两种...
2020-04-12 22:36:13
1764
原创 统计学习方法(二)感知机
感知机对偶形式的理解:https://blog.csdn.net/qq_26826585/article/details/87967520?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task使用对偶形式的动机:https://www.zhi...
2020-03-06 17:26:54
145
原创 acwing基础算法(四)质数
1.质数1.质数的判定——试除法1)大于1的2)约束只有1和本身3)时间复杂度sqrt(n)#include <iostream>#include <algorithm>using namespace std;bool is_prime(int x){ if (x < 2) return false;//质数要严格大于1 ...
2020-01-10 17:06:25
313
原创 acwing算法基础(第四章)高斯消元解线性方程组、组合数、卡特兰数
1.原理:高斯消元2. 代码实现#include <iostream>#include <algorithm>#include <cmath>using namespace std;const int N = 110;const double eps = 1e-6;//浮点数需要判断是否为零int n;//未知数数量double...
2020-01-09 20:29:52
257
原创 机器学习经典模型(二)目标检测
1.图像中单个目标的定位标签为:中心点,方块的长宽2.图像中多个目标检测——滑窗法训练一个目标识别网络Net,能够判断是不是car。用滑窗法遍历图片,每一次都用Net来做预测,因为知道滑窗的位置和大小,所以可以预测出图片中物体的种类的位置。受细粒度、滑动步长影响大,计算量太大3.通过卷积来减少计算量1)通过卷积代替全连接2)通过卷积实现滑窗操作有很多计...
2019-10-27 20:36:50
1261
原创 机器学习经典模型(一)图片分类网络:LeNet-5、AlexNet、VGG-16、ResNet、GoogLeNet/Inception
1.LeNet-5用来做手写体识别的2.卷积-池化-卷积-池化-全连接-全连接-softmax3.激活函数用的sigmoid4.参数数量少,只有60k1.用来图像分类,输入为RGB图2.卷积-池化-卷积......全连接,结构并没有什么创新3.激活函数为ReLU,sigmoid的导数在稳定区会非常小,ReLU可以防止梯度消失4.参数多,有60m1...
2019-10-26 11:26:07
719
原创 ORB-SLAM Spanning Tree 的作用
1.SpanningTree存了一些什么,结构是什么样的?每个KF都有两个指针类的成员KeyFrame* mpParent; 父亲std::set<KeyFrame*> mspChildrens; 儿子,可能有多个 这些指针把的KF组织起来成为一个树形结构。2.SpanningTree是如何形成的?在kf.cc中有以下函数涉及到修改mpPa...
2019-10-25 10:18:58
1167
原创 ORB-SLAM地图点的创建
1.-------地图点创建有两种方式通过关键帧创建通过普通帧创建其中通过普通帧创建是在追踪时用的,并没有加入到地图中通过关键帧创建的地图点才是最终地图中的地图点2.-------在哪里创建的?tracking线程中的void Tracking::CreateNewKeyFrame()函数,创建关键帧顺带创建了这些地图点。具体来讲就是遍历了这个KF中的ORB特征...
2019-10-24 11:11:25
1555
原创 ORB-SLAM中共视图Covibilitygraph的作用
1----------------optimizer.cc中在局域BA优化时会获取共视的关键帧GetVectorCovisibleKeyFrames返回了mvpOrderedConnectedKeyFramesstd::vector<KeyFrame*> mvpOrderedConnectedKeyFrames;//2-----------------keyfram...
2019-10-24 10:30:50
1089
原创 搜索与图论(三)图
有向图 a --> b邻接矩阵邻接表用链表实现图的存储示例DFS给定一颗树,树中包含n个结点(编号1~n)和n-1条无向边。请你找到树的重心,并输出将重心删除后,剩余各个连通块中点数的最大值。重心定义:重心是指树中的一个结点,如果将这个点删除后,剩余各个连通块中点数的最大值最小,那么这个节点被称为树的重心。输入格式第一行包含整数n,表示树的...
2019-10-20 09:35:49
276
原创 搜索与图论(二)BFS
边的权重都为1时才能用BFS求最短路走迷宫给定一个n*m的二维整数数组,用来表示一个迷宫,数组中只包含0或1,其中0表示可以走的路,1表示不可通过的墙壁。最初,有一个人位于左上角(1, 1)处,已知该人每次可以向上、下、左、右任意一个方向移动一个位置。请问,该人从左上角移动至右下角(n, m)处,至少需要移动多少次。数据保证(1, 1)处和(n, m)处的数字为0,且一定至...
2019-10-19 14:11:12
211
原创 搜索与图论(一)DFS
DFS1.递归2.回溯,恢复现场示例1 暴力搜索给定一个整数n,将数字1~n排成一排,将会有很多种排列方法。现在,请你按照字典序将所有的排列方法输出。输入格式共一行,包含一个整数n。输出格式按字典序输出所有排列方案,每个方案占一行。数据范围1≤n≤71≤n≤7输入样例:3输出样例:1 2 31 3 22 1 32 3 13 ...
2019-10-19 10:48:14
153
原创 数据结构(五)哈希表
存储结构:开放寻址、拉链法(按冲突处理方式分)字符串哈希方式哈希函数可能把不同的数映射到同一个位置拉链法维护一个集合,支持如下几种操作:“I x”,插入一个数x; “Q x”,询问数x是否在集合中出现过;现在要进行N次操作,对于每个询问操作输出对应的结果。输入格式第一行包含整数N,表示操作数量。接下来N行,每行包含一个操作指令,操作指令为”I x”,”Q ...
2019-10-19 08:46:21
270
原创 数据结构(四)堆
如何手写一个堆需要支持的操作:1.插入一个数 heap[ ++ size] = x ; up(size);2.求集合中的最小值 heap(1);3.删除最小值 heap(1) = heap(size); siz...
2019-10-18 21:23:35
161
原创 数据结构(三)并查集
用途合并两个集合询问两个元素是否在一个集合中原理1.用树来维护每一个集合示例一共有n个数,编号是1~n,最开始每个数各自在一个集合中。现在要进行m个操作,操作共有两种:“M a b”,将编号为a和b的两个数所在的集合合并,如果两个数已经在同一个集合中,则忽略这个操作; “Q a b”,询问编号为a和b的两个数是否在同一个集合中;输入格式第一行输入整数n和m。...
2019-10-18 20:18:09
229
原创 数据结构(三)Trie树
高效存贮和查找字符串集合维护一个字符串集合,支持两种操作:“I x”向集合中插入一个字符串x; “Q x”询问一个字符串在集合中出现了多少次。共有N个操作,输入的字符串总长度不超过 105105,字符串仅包含小写英文字母。输入格式第一行包含整数N,表示操作数。接下来N行,每行包含一个操作指令,指令为”I x”或”Q x”中的一种。输出格式对于每个询问指令”Q ...
2019-10-18 19:27:40
257
原创 剑指offer(四)反向打印链表
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: vector<...
2019-10-17 21:23:52
97
原创 剑指offer(三)
class Solution {public: string replaceSpaces(string &str) { string res; for(auto x : str) if (x == ' ') res += "%20"; else ...
2019-10-17 21:18:41
106
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人