自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(197)
  • 资源 (2)
  • 收藏
  • 关注

原创 【模型加速】PointPillars模型TensorRT加速实验(4)

接上一篇文章PointPillars模型加速实验(3),到目前为止我们已经成功的将PointPillars网络部分的3大组件PFN,MFN和RPN分别导出了onnx。接下来要将onnx文件build成TensorRT engine并序列化到文件中。对于一般的网络,onnx模型转TensorRT还是比较容易的,目前TensorRT官方对onnx模型的支持是最好的。官方的转换工具TensorRT Backend For ONNX(简称ONNX-TensorRT)也比较成熟了,最新版本已经到8.0.1....

2021-07-25 23:02:39 3667 2

原创 【模型加速】PointPillars模型TensorRT加速实验(3)

在上一篇PointPillars模型加速实验(2)中,我们成功将PFN导出dynamic shape onnx,接下来要将MFN也导出dynamic shape onnx。MFN导出Dynamic Shape ONNX 虽然叫做MFN(Middle Feature Extractor Network),具体到PointPillars中,实际上主要是一个scatter操作。借助PointPillars的源代码简单回顾一下MFN的内容。 class P...

2021-07-25 23:01:58 1672 7

原创 【模型加速】PointPillars模型TensorRT加速实验(2)

PFN导出Dynamic Shape ONNX 在上一篇文章中讲到通过make_input函数,已经准备好了模型转化所需要的输入数据。现在先考虑将PFN(Pillar Feature Network)结构转换为onnx。因为不同点云帧的点云数量是变化的,非空Pillar的数量自然也是不同的,在考虑将PFN导出onnx模型时需要采用dynamic shape。什么意思呢?就是在将PyTorch模型转成onnx模型的时候,根据输入数据的尺寸是否固定,将onnx分成static shape和d...

2021-07-25 23:00:06 1869 2

原创 【模型加速】PointPillars模型TensorRT加速实验(1)

在阅读这个系列文章之前假定你已经对PointPillars算法本身有一定的了解,并且有一个可用的Pytorch模型。这里的加速实验主要还是遵循"Pytorch-->ONNX-->TensorRT引擎-->推理"这一思路,暂不涉及使用TensorRT API手动搭建网络。 实验环境系统,Ubuntu16.04 内核,Linux version 4.15.0-112-generic CUDA,10.2 Python, 3.6 Pytorch,1.4.0 ...

2021-07-25 22:56:46 3975 4

原创 【异常处理】TypeError: __new__() got an unexpected keyword argument ‘serialized_options‘

执行pointpillars的模型转时报了一个关于protobuf的错误:nvidia@nvidia-desktop:~/hive_pointpillars/second/pytorch$ python3 hive_convert.py/home/nvidia/.local/lib/python3.6/site-packages/skcuda/cublas.py:284: UserWarning: creating CUBLAS context to get version number...

2021-07-23 16:21:01 2328 1

原创 【Jetson AGX Xavier】安装Pytorch的若干方法(ing)

nvidia@nvidia-desktop:~$ jetson_release - NVIDIA Jetson AGX Xavier [16GB] * Jetpack 4.5.1 [L4T 32.5.1] * NV Power Mode: MODE_30W_ALL - Type: 3 * jetson_stats.service: active - Libraries: * CUDA: 10.2.89 * cuDNN: 8.0.0.180 * TensorRT: .

2021-07-23 10:57:38 1057

原创 【玩转PointPillars】PillarScatter操作

ing....

2021-07-18 08:59:51 3706 2

原创 【玩转PointPillars】点云特征提取结构PFN(PillarFeatureNet)

class PFNLayer(nn.Module): def __init__(self, in_channels, out_channels, use_norm=True, last_layer=False): """ Pillar Feature Net Layer. The Pillar Fea...

2021-07-17 21:00:04 5262 7

原创 【点云处理】c++读取rosbag并转pcd和bin文件

【代码】#include <ros/ros.h>#include <pcl/point_cloud.h>#include <sensor_msgs/PointCloud2.h>#include <pcl_conversions/pcl_conversions.h>#include <pcl/point_types.h>#include <string>#include <stdlib.h>#inc...

2021-07-07 16:26:56 5169 13

原创 【玩转PointPillars】Ubuntu16.04虚拟环境中安装onnx-tensorrt

之所以安装onnx-tensorrt,是因为PointPillars用Pytorch训练的模型在转onnx后,我们借助onnx-tensorrt使用tensorrt进行模型推理,以达到模型加速的目的。 凡是不申明自己环境的软件部署都是耍流氓,我在尝试了多个不同的软件环境(包括操作系统,Python,CUDA等)后,在以下环境中成功了。ubuntu 18.04 cuda 10.2 python 3.6 TensorRT 7.1.3.4 protobuf 3.14.0 cmake...

2021-07-07 15:52:55 1258

原创 【点云处理】图达通激光点云数据转换

刚刚拿到一批图达通雷达的激光点云数据的rosbag,准备拿去做3D目标的标注。播出来看了一眼,发现点云的坐标轴的设定与我们平常使用的坐标轴设定还不太一样。下图(1)是我直接通过rviz看到的点云图像,这样看你很难看出来是个什么东西。真实的图像应该是图(2)的样子,这样路面和山坡就看的比较清晰了。图1图(2)好了,现在就是要做一个坐标转换,转换到我们熟悉的坐标轴定义下。【代码】#include <ros/ros.h>#include <pcl/po...

2021-07-05 14:24:49 1564 2

原创 【玩转PointPillars】虚拟环境中import tensorrt报错

TensorRT是由C++、CUDA、python三种语言编写成的一个库,其中核心代码为C++和CUDA,Python端作为前端与用户交互。当然,TensorRT也是支持C++前端的,如果我们追求高性能,C++前端调用TensorRT是必不可少的。导入tensorrt报错(pointpillars) zuosi@node8:~$ ipythonPython 3.6.10 |Anaconda, Inc.| (default, May 8 2020, 02:54:21) Type 'copy

2021-06-29 21:22:46 1192

原创 【玩转PointPillars】kitti数据集中有关标定的若干问题

传感器外部布局Cam0 左边灰度相机 Cam1 右边彩色相机 Cam2 左边灰度相机 Cam3 右边彩色相机 Velodyne laserscanner Velodyne64线激光雷达 标定参数标定文件P0: 7.070493e+02 0 6.040814e+02 0 0 7.070493e+02 1.805066e+02 0 0 0 1.e+00 0P1: 7.070493e+02 0 6.040814e+02 -3.797842e

2021-06-21 15:45:45 947 3

原创 【玩转PointPillars】Ubuntu18.04上部署nutonomy/second.pytorch

【我的环境】Ubuntu18.04cuda10.2GeForce GTX 1650

2021-06-19 08:40:54 2852 19

原创 【论文解读】点云深度学习网络PointNet

点云数据天然的存在无序性,直接将用于图像的网络结构用于点云效果很差。有一些研究将点云空间进行划分成规则的3D体素网格,再使用3D卷及等方式来进行处理。而PointNet这篇

2021-06-18 11:11:35 1221 1

原创 【玩转PointPillars】Ubuntu18.04上部署second

(base) ➜ ~ conda create -n second python=3.6(base) ➜ ~ conda activate second

2021-06-17 17:07:45 1224 1

原创 【异常处理】 Could NOT find jsk_recognition_msgs

Ubuntu18.04新装了ros,而且装的是完整版本(ros-melodic-desktop-full),在用catkin_make编译自己的代码的时候报了下面的错误:

2021-06-10 19:24:33 5917 1

原创 【点云处理】CropBox过滤指定立方体内的点云

之前为了剔除地面点,计算了全部点云的法向量。然后,先通过点云的法向量做一个粗过滤,剔除明显的非地面点,再通过随机采样一致性算法估算出地面方程。计算全部点云的法向量相对是比较耗时的操作,大部分的点一开是就对我们最后估算地平面方程没有什么用,所以先通过CropBox做一个立方体过滤,只保留对我们有意义的点。【代码】#include <ros/ros.h>#include <sensor_msgs/PointCloud2.h>#include <pcl/poin...

2021-06-07 08:50:51 2710 9

原创 【点云处理】结合点云法线以及RANSAC分离地面点后再做欧式聚类

这篇实验是在上一篇ros点云处理学习(5):点云法线联合随机采样一致性(RANSAC)分割地面点的基础上做的

2021-05-28 00:43:33 957 7

原创 【点云处理】点云法线联合随机采样一致性(RANSAC)分割地面点

在之前的代码中尝试直接使用随机一致性采样来分割地面点,但是在我的实验环境下效果很差,始终没有找到地表这个平面。这里尝试一种新思路,计算点云的法线。因为地面点云的法线z值较高,通过阈值先过滤出非地面点云,再对剩下的点云进行随机一致性采样得到地面点云。【代码】#include <pcl/segmentation/sac_segmentation.h>#include <pcl/segmentation/extract_clusters.h>#includ...

2021-05-28 00:22:03 1549

原创 【点云处理】pcl中使用欧式聚类

今天尝试跑一下欧式聚类,看看在路侧场景下的聚类效果。【代码】#include <stdlib.h>#include <boost/bind.hpp>#include <ros/ros.h>#include <sensor_msgs/PointCloud2.h>#include <functional>#include <pcl/point_types.h>#include <pcl_conve...

2021-05-26 23:48:57 2476 2

原创 【点云处理】使用RANSAC分割地面点

谈谈这个方法实验完的感受,在我的实验场景下至少我觉得没法分离开地面点的。我用的是Horizon的雷达,而且不是水平安装,而是像下倾斜与地面有一个30度左右的夹角。#include <stdlib.h>#include <boost/bind.hpp>#include <ros/ros.h>#include <sensor_msgs/PointCloud2.h>#include <functional>#include...

2021-05-25 23:59:29 2095 2

原创 【点云处理】PassThrough直通滤波器分离地面点

PassThrough这个很好理解了,就是沿着某个轴过滤点云。假如激光雷达是水平安装的,显然我们可以再Z轴方向上设定一个阈值,将低于该阈值的点云算作地面点。但是,我实验中的激光雷达并不是水平安装的,所以地面分离效果不佳。【代码】#include <ros/ros.h>#include <sensor_msgs/PointCloud2.h>#include <pcl/point_types.h>#include <pcl_conver...

2021-05-24 20:13:17 901 2

原创 【点云处理】使用pcl内置的Voxel Grid Filter对原始点云进行降采样

该节点会订阅"/livox/lidar"话题的点云数据,使用PCL内置的Voxel Grid Filter对点云数据进行降采样,过滤后的结果发布到"filtered_points"上。#include <iostream>#include <thread>#include <sstream>#include <pcl/point_types.h>#include <pcl_conversions/pcl_conversio...

2021-05-22 21:32:30 1973

原创 【传感器标定】路侧激光雷达和相机的标定(2)

接上篇【传感器标定】路侧激光雷达和相机的标定(1),在上文中我提到我手上由若干相机和一个激光雷达,现在要做激光雷达和相机的联合标定,将激光雷达标定到相机。从数学原理来说就是求得激光雷达坐标系相机坐标系的外参矩阵,其中包含旋转和平移。旋转以欧拉角来表示,分别为翻滚(roll),俯仰(pitch)和偏航(yaw)。位移为tx,ty和tz。手动标定代码的过程中,通过按键控制激光雷达的旋转欧拉角以及平移量,将其转化为外参矩阵。通过外参矩阵和相机内参将点云投射到图像上去。不断调整雷达坐标系位姿在可视化...

2021-05-22 10:24:29 1247 1

原创 【传感器标定】路侧激光雷达和相机的标定(1)

1.前言 这里要描叙的场景比较简单,就是在路口矗立着路杆,杆子上面安装了多路摄像机,激光雷达和毫米波雷达。其中,摄像机用来提供目标的语义信息(如:行人,车辆等),激光雷达可以提供目标的位置和形状(三维)信息,而毫米波雷达可以比较准确地测量目标的速度。因此,采用以上多传感器融合,可以全方位地掌握路口目标的状态。在设计具体的融合算法之前要先进行传感器之间的联合标定。最近实验只需要用到激光雷达和摄像头,这里暂且值谈论激光雷达和相机的联合标定,更确切地说就是讨论激光雷达到图像的转换关系。这里的转换...

2021-05-16 15:34:01 1909

原创 【玩转yolov5】使用TensorRT C++ API搭建yolov5s-v4.0网络结构(3)

接上篇【玩转yolov5】使用TensorRT C++ API搭建v4.0网络结构(2),backbone部分已经讲完了,现在进入到neck部分。PANet在FPN的基础上增加了Bottom-up Path Augmentation,主要是考虑到网络的浅层特征中包含了大量的边缘形状等特征,他们对于实例分割这种像素级别的分类任务起到至关重要的作用。上图红色的箭头表示在FPN中,因为要经过自底向上的过程,浅层特征传到顶层要经过几十甚至上白层网络,浅层信息丢失严重。红色的箭头表示作者添加的Botto.

2021-05-09 11:20:41 1244

原创 【玩转yolov5】使用TensorRT C++ API搭建yolov5s-v4.0网络结构(2)

接上篇【玩转yolov5】使用TensorRT C++ API搭建v4.0网络结构(1)。上篇说完了CBL(conv+bn+激活),现在进入到CSP结构。yolov5s中设计了两种CSP结构,以yolov5s网络为例,CSP1_X结构应用于Backbone主干网络,另一种CSP2_X结构应用于Neck中。注意:上图仅供参考,yolov5s-v4.0实际结构以代码为准,有差异。CSP结构的实现统一在下面的C3函数中,通过输入参数控制宽度,深度以及结构类型等。auto bottleneck_C

2021-05-08 17:21:29 1707

原创 【玩转yolov5】使用TensorRT C++ API搭建yolov5s-v4.0网络结构(1)

class Focus(nn.Module): # Focus wh information into c-space # 先要做一个切片,然后再做一个concat def __init__(self, c1, c2, k=1, s=1, p=None, g=1, act=True): # ch_in, ch_out, kernel, stride, padding, groups super(Focus, self).__init__() ...

2021-05-08 11:09:48 2582 13

原创 【玩转yolov5】之anchor匹配策略(build_targets)分析(2)

接上篇yolov5之anchor匹配策略(build_targets)分析(1) gxy = t[:, 2:4] # grid xy gxi = gain[[2, 3]] - gxy # inverse #这两个条件可以用来选择靠近的两个邻居网格 j, k = ((gxy % 1. < g) & (gxy > 1.)).T l, m = ((gxi % ...

2021-05-04 22:33:50 3476 10

原创 【玩转yolov5】之anchor匹配策略(build_targets)分析(1)

这里我们实际推演一下yolov5训练过程中的anchor匹配策略,为了简化数据和便于理解,设定以下训练参数。输入分辨率(img-size):608x608 分类数(num_classes):2 batchsize:1 网络结构如下图所示:def build_targets(pred, targets, model): """ pred: type(pred) : <class 'list'> """ #p:predict,tar...

2021-05-04 17:49:18 6290 6

原创 【opencv实战】海康摄像rtsp流不同方案下的时延测试(Ing)

VLC海康SDKOpenCV软解码OpenCV CUDA 解码gstreamer

2021-04-28 13:14:07 17761 18

原创 【Rviz可视化】rviz 上如何方便地定位激光雷达坐标系下 y 等于0的地面点?

先说一下文章背景,最近在标定路侧设备中激光雷达到UTM 世界坐标系,其中涉及到要在激光雷达坐标中 y等于0的地面点上放置标定杆,为了比较准确了旋转标定杆子,摸索了一下 rviz 的使用。(1). 打开 rviz正常显示激光雷达点云(2). 设置PointCloud2中的 DecayTime为一个较大的时间(如:20),累积点云显示,便于后续显示界面上的观察。(3). 首先添加一个 Grid(Add->By display type->Grid),将新加 Gri...

2021-04-28 13:02:17 2116 1

原创 【Jetson AGX Xavier】安装 opencv4.5支持gstreamer

nvidia@nvidia-desktop:~$ jetson_release- NVIDIA Jetson AGX Xavier [16GB] * Jetpack 4.5.1 [L4T 32.5.1] * NV Power Mode: MODE_30W_ALL - Type: 3 * jetson_stats.service: active我要在 Xavier 上安装支持 gstreamer 的 opencv-4.5.0,首先从官网上下载 opencv-4.5.0的源码,尝试了一...

2021-04-18 09:13:02 3340 8

原创 【Jetson AGX Xavier】宿主机与容器间的 ros 通信

我在 Agx Xavier 上启动了一个容器,在容器里面部署了 ros 程序。因为容器里面显示rviz 暂时还有点问题,所以只好放到 Xavier 宿主机上来显示。这就涉及到容器和宿主机之间的ros多机通信。这里的配置也是极其的简单的,我暂且在这里记录一下。我是以--net host 的方式启动的容器,容器的网络会附属在主机上,两者是互通的。下面我先列出宿主机和容器和主机名和 ip 信息。1、基本信息【宿主机】主机名:nvidia-desktopIP: 172.17.0.1【容器

2021-04-15 15:53:17 521

原创 【Jetson AGX Xavier】安装opencv3.4支持cuda和gstreamer

我刷机的系统是 Jetpack 4.5.1,默认已经安装了 opencv4.4.1,为了重新安装 opencv 我先卸载到默认安装的 opencv。nvidia@nvidia-desktop:~$ sudo apt purge libopencv*再来看一下,opencv 已经被完全卸载了。接下来就简单了,訪篇文章记录由热心人士直接写好的脚本进行安装,哈哈。https://github.com/jetsonhacks/buildOpenCVXavier.gitnvidia@nvidi

2021-04-14 11:25:50 2149 5

原创 【异常处理】The CXX compiler identification is unknown

从 NGC 里面下了一个容器,想在里面加个opencv,cmake 的时候遇到问题:root@ff2ae4aa882a:~/hive/repository/opencv/opencv-4.5.0/build# cmake ..-- The CXX compiler identification is unknownCMake Error at CMakeLists.txt:109 (enable_language): No CMAKE_CXX_COMPILER could be found...

2021-04-13 11:16:11 6438

原创 【Jetson AGX Xavier】安装 ros笔记

0.确定环境1.设置apt源nvidia@nvidia-desktop:~$ sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'[sudo] password for nvidia:nvidia@nvidia-desktop:~$ cat /etc/apt/sources.list.d/ro

2021-04-12 11:32:39 867

原创 ubuntu18.04安装 clion并配置ros环境

这估计是有史以来安装 clion 体验最好的一次! 都 Ubuntu18.04了,果断选择 Snap 来安装 clion。Snap 是什么?Snap是Ubuntu母公司Canonical于2016年4月发布Ubuntu16.04时候引入的一种安全的、易于管理的、沙盒化的软件包格式,与传统的dpkg/apt有着很大的区别。Snap可以让开发者将他们的软件更新包随时发布给用户,而不必等待发行版的更新周期;其次Snap应用可以同时安装多个版本的软件,比如安装Python2.7和Python3.3...

2021-03-03 18:57:02 2125 4

原创 【玩转yolov5】请看代码之自动anchor计算

早在yolov2时就了解到不同于faster-rcnn中手动设置的anchor,yolov2中的锚点是通过k-means聚类算法得的,这样更贴合实际的训练数据。这次借学习yolov5这个机会把其中关于自动anchor计算的逻辑再理一遍,主要就是分析一下utils/autoanchor.py文件的相关函数。在看代码之前先提几个问题,在后面的分析中会给出答案。1.yolov5中k-means聚类算法具体聚的是什么东西?2.聚类样本之间的距离是怎么计算的? 如果你没有在训练参数中显示...

2021-02-08 22:51:04 13631 27

搭建ZoneMinder视频监控系统可能需要到的perl的rpm包

ZoneMinder的搭建过程是需要利用到perl,而perl所需要的安装并不完全包含在系统linux的发布版中,需要到网上去找,这里搜集到一些在发布版中没有但搭建zm又需要乃至的一些包!

2012-04-27

nginx-1.0.8.tar.gz

nginx源码包!Nginx是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。

2012-03-15

空空如也

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

TA关注的人

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