自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(99)
  • 收藏
  • 关注

原创 如何通过Anaconda创建虚拟环境

做深度学习的同学们应该都受到配置环境的困扰(我也是饱受摧残)本文介绍几个踩过的坑。在anaconda下创建一个虚拟环境文件名为’pytorch’,python版本是 3.8 conda create -n pytorch python=3.8在目录 ‘/home/YHT/anaconda3/envs/’可以找到该文件夹2.进入刚出创建的环境每次跑深度学习代码都要进入对应的环境 conda activate pytorch3.使用清华镜像源 安装 pytorch清华镜.

2020-12-14 19:30:44 1391

原创 立体匹配 --视差预测‘soft argmin‘

1.立体匹配的关键任务就是预测精准的视差图,对于视差图每一个像素位置的值并不是(0-255)灰度值,而是一个视差值。2.那么这些视差值如何得到的呢,最开始是由传统方法的 ’argmin‘得到。arg min 就是使后面这个式子达到最小值时的变量的取值。例如 函数F(x,y):arg min F(x,y)就是指当F(x,y)取得最小值时,变量x,y的取值。3.但这个 'argmin’并不可微,也就是说无法反向传播。所以 GCNet这篇文章提出了’soft argmin’这个函数。这个

2020-11-16 13:15:35 3322 1

原创 BN:Batch Normalization 解读

随机梯度下降法(SGD)对于训练深度网络简单高效,但是它有个毛病,就是需要我们人为的去选择参数,比如学习率、参数初始化、权重衰减系数、Drop out比例等。这些参数的选择对训练结果至关重要,以至于我们很多时间都浪费在这些的调参上。那么使用BN之后,你可以不需要那么刻意的慢慢调整参数。1.我们知道数据在输入到神经网络之前要进行预处理,其中包括数据增强,裁剪、归一化等操作,这会使网络对数据分布达到更好的训练效果。2.那是不是考虑将每一层网络的输出也经过一次预处理再输送到下一层网络,通过这样的做法使网络.

2020-11-14 10:40:16 468

原创 smooth L1、L1、L2 损失函数的区别

感谢商汤科技给我一次面试的机会,通过面试也暴漏了自己很多问题。立体匹配中很多网络都是用的 smooth L1 loss。那他和L1、L2 loss的区别是什么呢?L1 loss(MAE)其中 x 为预测框与 groud truth 之间 elementwise 的差异。先说下L1 loss的优点:优点:L1 的导数为常数。,无论对于什么样的输入值,都有着稳定的梯度,不会导致梯度爆炸问题,具有较为稳健性的解。如果训练数据被异常值破坏的话(也就是我们在训练环境中错误地接收到巨大的不.

2020-11-13 16:51:50 1951

原创 立体匹配-- GA-Net网络结构代码剖析

一. Feature Extraction原文描述:The left and right images are fed to a weight-sharing feature extraction pipeline. It consists of astacked hourglass CNN and is connected by concatenations.下面对应着结构图看代码1.先看 GANet类class GANet(nn.Module):第一个输出 g 是训练权重的gui.

2020-11-08 10:23:55 2749 8

原创 PSMNet训练中遇到的报错

1.main.py是训练10 epochs的sceneflow的例子。2.finetune.py是训练300 epochs的KITTI的例子。只跑了这个例子首先修改了 finetune.py的路径,把KITTI路径和预训练模型加载进来。parser.add_argument('--datapath', default='./data_scene_flow_2015/training/', help='datapath')parser.add_argumen

2020-11-06 18:42:52 1743 11

原创 立体匹配 -- PSM-Net 网络模型代码剖析

只熟悉流程跑通代码不重要,重要的是理解网络的思想。GC-Net提出了3D-CNN编解码的形式做’cost volum ’ 后处理的过程,PSM-Net 加入图像金字塔的模块结合3D-CNN 输出图像视差图。一. 特征提取模块作者用 3层 33的小卷积核代替 77 的大卷积核,将图像降维1/2size. 虽然拥有同样大小的感受野,但深层的小 conv filter 显然有更少的参数,降低了计算成本。def convbn(in_planes, out_planes, kernel_size.

2020-11-02 17:03:10 4235 11

原创 立体匹配 -- GC-Net网络结构分析

参考 GC-Net pytorch版本首先看代码要对应着网络结构图和网络层的表格。一.Unary Features 特征提取1.使用2-D卷积提取深度特征。首先使用fiter size:5*5,stride:2的conv2d 将输入降维(1/2H,1/2W). imgl0=F.relu(self.bn0(self.conv0(imgLeft))) imgr0=F.relu(self.bn0(self.conv0(imgRight)))self.conv0=nn.Conv2d(3,3.

2020-10-30 23:04:59 5421 15

原创 基于深度学习立体匹配中的‘Cost Volume‘

最近太忙,我把参考资料和相关文献给大家整理一下,以及代码演示,print出来让大家看懂。一起进步!cost volume1cost volume2cost volume3cost volume4cost volume 5《Cascade Cost Volume for High-Resolution Multi-View Stereoand Stereo Matching》《Pyramid Stereo Matching Network》我把PSMNet中 左右特征图..

2020-10-26 23:31:08 4363 1

原创 “空洞卷积” --Conv2d() dilation

注意到这个参数 dilation ,就是设置空洞卷积的参数。这个参数功能是扩大感受野,因为笔者最近忙着复现文章,先把参考资料给大家,稍后出一个总结博文。空洞卷积1空洞卷积2

2020-10-26 23:14:21 1773

原创 《Pyramid Stereo Matching Network》--PSMNet 测试代码实现 +如何解决GPU内存不足问题

导师给了建议,转战DL方向做立体匹配了。PSWNet 是cvpr2018的文章,立体匹配的经典,下面介绍一下我是怎么跑通文章的测试代码,以及踩过的坑。-对于复现论文,我也是初学者,希望给更多刚入门的师弟师妹一些帮助。一.下载github源码1.一般论文都是有github连接的2.如何阅读github以下就是github中的目录注意到 dataloader 文件夹是针对数据输入预处理的,其实就是怎么 crop 图像,怎么对图像做 BatchNormalizemodels 文件夹就是.

2020-10-24 21:32:01 3225 8

原创 CNN 解析 --唐宇迪

1 卷积过程大概是这样,注意有深度信息。2.卷积的计算过程,注意卷积的深度要和图像的通道数相同3.说到卷积,一定要提到下面这张经典的图-这张图的意思,大概就是一个RGB三通道的图,conv层是两个filter组成的卷积,维度都是3,最后经过内积以及加和得到两个特征图。-大家也有注意到,本来我的图像是5*5的,添加了一圈(padding=0),这是因为卷积会重点计算靠近中心的像素点,忽=忽视边界点,补上padding是为了更好的利用边界点,这样不容易丢失特征信息。-卷积后的特征图往往会变小,补.

2020-10-14 11:27:35 590 1

原创 莫烦python--搭建CNN

和其他教程一样,莫烦大神也用MNIST作为CNN的入门一. 调用库import torchimport torch.nn as nnimport torch.utils.data as Dataimport torchvision # 数据库模块import matplotlib.pyplot as pltfrom torch.autograd import Variable # torch 中 Variable 模块对一些库进行描述torch.utils.data 用.

2020-10-11 23:02:44 996

原创 莫烦python--构建神经网络的三种方式

一.简易搭建直接使用net2即可net2=torch.nn.Sequential( torch.nn.Linear(2,10), torch.nn.ReLU(), torch.nn.Linear(10,2) )二.形参传递class Net(torch.nn.Module): def __init__(self,n_features,n_hidden,n_output): super(Net,self).__i

2020-10-10 16:14:59 238

原创 Ubuntu 20.04配置opencv3.4.8

一.下载opencv及opencv_contrib从官网下载包,选择自己需要的版本。opencvopencv_contrib需要准备一些工具 分别是 ‘CMAKE’ 与 git 。我的服务器上已经配置好了这两个工具。读者安装推荐参考cmake–git安装注意一个问题,我之前给服务器的根目录设置的空间是10G.这显然太小了,因为不论我安装什么软件都会安装到根目录下。如何查看根目录空间呢1.先 ctrl+z停止当前执行的程序,跳回主目录2.红框内的路径就是根目录,此时我扩容完毕。3.

2020-09-29 10:47:02 1969

原创 Leetcode--1:Two Sum

写下题干题目:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。我自己用的暴力解法,遍历两边数组指针,不过语法错了。看出问题的朋友可以指正出来。class Solution { public: vector <int> a(5)={}; vector<int> twoSum(vector<int.

2020-09-28 20:10:24 86

原创 Linu系统访问文件+远程编译内核代码+下载app

听了导师的建议,决定将研究方向确定为基于深度学习的立体匹配。实验室有台陈旧的1080Ti服务器,决定把它重新搞起来。系统Ubuntu20.04.我们用的内核访问端是 MobaXterm一.访问系统文件1.创建一个新文件2.插入 .cpp文本3.访问该文件二.远程编码1.这里推荐大家用notepad++进行编码2.首先要设定其为默认的.cpp文件3.打开.cpp文件...

2020-09-27 09:38:43 108 1

原创 Qt-子类之间方法的调用

前几篇博客都在讲子类如何调用mainwindow中的东西。本篇将叙述子类间,相互调用方法。本篇将用到两个类,在此说明避免读者搞混。*子类1 与其对象 robMov *ABBrobot; *子类2 与其对象 Eular_chage * eular_change;通过声明对象将主类this指针和子类1对象传递到子类2构造函数中。eular_change=new Eular_chage((void *)this,ABBrobot);子类2头文件中接收两个指针。public:.

2020-09-07 10:24:32 1299

原创 Qt-主类指针的传递(this指针、UI控件指针)

我之前的文章中,介绍过Qt创建对象的两种方法。创建对象两种方法一.创建对象时,可以通过对象构造函数传参,将界面中的值直接传给子类。mainwindow类中语法形式如下 ABBrobot = new robMov(ui->textServerData,ui->handeye_x_1,ui->handeye_y_1, ui->handeye_z_1,ui->handeye_Rx_1,ui->han.

2020-09-07 10:12:27 6810

原创 Qt两种传参形式(信号槽传参、界面传参)

一、UI界面传参在Qt中传输数据通常有两种形式,一种是把待传输的数据先保存到UI界面的控件中,然后子类从界面中读取数据。使用该控件作为参数传递承载。1.首先将计算出的数值传到控件中 ui->BCResult_0->setValue(Robticspose[0]); ui->BCResult_1->setValue(Robticspose[1]); ui->BCResult_2->setValue(Robticspose[2]);

2020-09-07 09:39:36 3911

原创 Halcon双目结构光定位(5):创建点云模板

其实讲了这么久点云处理,点云操作无非就是对一系列数组进行操作。这篇博文给大家讲解如何从获取的点云中提取ROI点云区域,并获取我们想要的点云模板。1.从调平的点云数据中提取我们想要的ROI点云通过显示算子,调正点云区域参数Pose是我们从哪个角度观察我们的点云数据,将Rx,Ry,Rz均设置成0,0,0.调正点云 Pose := [-0.1e-3,-0.47e-3,600,0,0,0,0]visualize_object_model_3d (WindowHandle, trans_Obj.

2020-08-04 14:01:07 2775 5

原创 Halcon双目结构光定位(4):选取最大点云区域的去噪手法+拟合光平面方式调平点云

1.首先对点云以高度方向初步去噪2.点云数据信息提取对于物料点云的长宽高的判别,最常用的手法是最最小外接矩形,通过获取最小外接矩形的L1,L2,L3,来确定点云的位置。也可以通过一下算子求得点云信息get_object_model_3d_params (ObjectModel3D, 'point_coord_z', GenParamValue)更正点云分割算子的参数含义//将4mm内的点云作为一个区域connection_object_model_3d (ObjectModel3

2020-08-03 23:08:14 2334 1

原创 Qt读取文件操作+QTextBrowser控件的应用

在相机标定的过程中,我们经常要读取相机SDK中的内外参以及畸变系数通过以下操作,读取相机内参,文件目录’ConfigFile.txt’ //1.内部参数的配置读取 QString str= "ConfigFile.txt"; char* ConfigFileDirection; QByteArray ba = str.toLatin1(); ConfigFileDirection=ba.data();通过setText向QT.

2020-07-31 20:58:57 3598

原创 Qt-修改项目工程名称

1.首先通过 ‘.pro’文件找到根目录2.修改’.pro’文件3.修改文件名以及build目录的名字,我上一篇博文也强调了build(msvc版本)-peoject一定要对应!!!注意:对应build文件,系统会自动生成MGW的文档,这个是vs的编译器,有些Qt项目不适用,所以要收到更改构建目录。...

2020-07-31 09:12:41 764

原创 在Qt中移植别人的程序

在Qt中运行程序会生成 'Debug’和’Release’文件在项目目录中,要注意构建目录与我们的项目要在同一目录下。通过’Mwaasage Kite’ 查看MSVC的版本。当移植别人的Qt程序的时候,经常跑不通,下面我介绍一些处理方式。1.清除‘build’下对应的‘debug’和’release’2.清除Makefile文件3.清理项目PS:这些技巧可以帮助你解决百分之60的问题了,enjoy~...

2020-07-31 09:02:30 1462

原创 Halcon 数组降序排列两种方式

1.使用API‘subset’ tuple_sort_index (Row, Indices) NewRow:=[] NewColumn:=[] if(Length>=1) *方法1 NewRow:=subset(Row,Indices) NewColumn:=subset(Column,Indices) endif2.使用一个for循环,使数组逆序排列 for

2020-07-27 08:01:38 3264 2

原创 半透明物料+高反光表面物料光源选取小技巧

好的打光方案,对于普通的机器视觉项目来说,已经成功一半了。本篇介绍几个实用的打光技巧。首先普及一个常识,根据不同的视觉方案,可以要求合作的厂家定制不同的光源,最简单的就是圆形物体的检测,使用圆形光源。矩形物体的检测,用矩形光源。一.半透明圆环物体的轮廓检测拉开物料与背景的对比度,打亮物体,黑色背景。背光亮背景,由于物料的透光度会下降,当背景很亮的时候,背景与物料的对比度就会十分明显。二.高反光物体的打光小技巧1.例如检测手机屏幕的裂纹,手机贴膜会造成反光,这是需要光源垂直于.

2020-07-26 20:06:50 3875

原创 Halcon三维测量(4):点云图转深度图+点云滤波(补洞)+断线拟合

对于三维测量的套路,都是将图像转成二维进行测量和处理我仍然以这个开关检测项目为例,开关点云有x,y,z,三个空间坐标如果对这个三维点云直接处理,有一个思路我提供给大家,将点云模型完全调平,然后针对x,y,z其中一个坐标进行测量,其实这种思路也是将三维图转为平面。一.点云图转深度图+点云滤波本篇着重讲解如何将点云模型转为深度图的思路。1.将点云模型拆分成x,y,z三个数组,这里的数据可以自动清空,具体请补充一下数据存储,堆和栈的内容。2.这里提出一个手法,将点云数据拆分成三个数组之后,有很.

2020-07-24 11:21:18 10780 18

原创 彻底卸载VS2010,VS2013,VS2015,VS2017,VS2019系列软件

本篇参考卸载VS系列1.在windows系统c盘中“C:\ProgramData\Package Cache\路径下对应自己的版本搜索:vs_enterprise.exevs_professional.exevs_community.exe2使用快捷键win+r ,输入cmd,进入控制台命令命令操作界面,使用cd +“目录名 称”,进入相应的目录下,然后输入如下命令进行卸载vs:3.在输入vs_enterprise.exe /uninstall /force4.vs2015卸载.

2020-07-19 13:40:53 4200 8

原创 Halcon-GPU加速算子

Halcon是一款封装很完美的库,但个别算子优化的还是不尽人意,比如立体匹配,比如训练模型,今天介绍一种方法,可以充分利用PC的硬件资源加速我们的例程.首先枚举设备,差点我们主机可以用加速的硬件。1.下图可以看出,我可以使用我的GPU 930M,和CPU 5500运行程序。2.跟以往halcon的套路一样,建立加速句柄,并设置参数我设置的参数是’asynchronous_execution’3.加载待加速的算子这里我测试的是‘affine_trans_image’4.开启..

2020-07-19 09:39:59 3824

原创 解决PC无法登陆github的问题

1.找到hosts 文件。2.登录如下两个网址,找到自己电脑的IP地址网址1网址二3.将自己的IP地址写入hosts文件

2020-07-18 19:50:46 1362 1

原创 Halcon2D测量-边缘直线测量+圆环测量

二维测量有一种形态学的方法,参照我之前的博客。形态学方法测量本文主要介绍一种建立测量模型的方法,对直线和圆进行测量.一.圆心度测量1.设定测量模型首先将我们将待测量圆的半径圆心,以及容错度声明出来。创建测量句柄 *1.创建测量句柄 create_metrology_model (MetrologyHandle) set_metrology_model_image_size (MetrologyHandle, Width, Height)初始化测量模.

2020-07-15 09:42:36 4558

原创 Halcon双目结构光定位(3):判别六面体+获取机器臂抓取点(六面翻转)

无序抓取(2)上一讲无序抓取,我们说到将去噪后的点云,按’z’方向从高到低排序。这一篇博文将叙述,判别匹配到的面是六面体的哪个面(正面、侧面、反面…)一.判别六面体首先将最高点的平面位姿,转换成矩阵,获得zx,zy,zz,通过判别zz的角度,确定当前平面落在那个象限内。通过zx,zy判定当前Pose的具体位姿,(正面,反面,侧面)大家可以学习一下这个switch的写法。框内的物体杂乱无章,可能会出现机器臂根本无法抓取的物料,所以此时要判别一下,当前识别的最高处,点云是否

2020-07-12 12:26:56 2175 2

原创 Halcon三维测量(3):鞋底涂胶+边缘提取

本篇文章讲解三维测量鞋底涂胶项目的思路。一.读取模型二.调平模型+预处理去噪调平三大手法由上图可知,鞋底模型是一个空间物体,且主轴明确,所以有三种方法做调平处理。调平方法1:最小外接矩形调平方法2:寻找立体物体的主轴1.首先切除鞋底模型,获得平台点云。2.寻找鞋底的主轴3.调整鞋底点云姿态调平方法3:获取平台点云,拟合平面,调整整体点云姿态。三.切片处理+获取边缘点(涂胶)将鞋底点云模型三角化处理我用间隔6mm的切片,提取92个边缘点构建切平面,提取点云边缘.

2020-07-10 15:36:12 5233 4

原创 Halcon三维测量(2):三维点云模型三角化+切片处理+边缘宽度测量

这一篇文章叙述一个开关测量的项目先讲解项目需求:1.如图是一个开关的三维点云模型,需要检测开关边缘间的距离(红圈部分),以及检测拨动部位的高度。一.调平操作1.看我下面的博文,对点云模型调平处理有深刻的讲解2.这个项目采用的是立体物理调平算法(moment)[调平三大手法]二.去噪处理获取空间ROI1.同样是采用高度筛选,以及特征点连通域分割的手法,提取ROI。点云去噪三.点云模型三角化处理三角化处理前的点云是离散的,如下图所示。三角化之后的效果图1.对三角化做一个简.

2020-07-07 13:44:58 9284 9

原创 Halcon小技巧:二维平面根据两个点确定方向向量+三维空间点确定姿态

生成两个点,这个算子在Halcon三维中常用。讲点连接成线 dev_set_line_width(2) *画点 dev_set_color('red') gen_cross_contour_xld(Cross1, 90, 103, 16, 0.785398) gen_cross_contour_xld(Cross2, 377, 341, 16, 0.785398) gen_contour_polygon_xld (line1, [90,377], [103.

2020-07-07 07:39:04 3721 2

原创 Halcon双目结构光定位(2)-三维模板匹配及按照点云高度排序

上一讲提到了点云模型的调平和去噪,下一步就是进行三维点云模板匹配。一.三维物体模板匹配1.模板图像2.模板匹配我们上一讲中输出的筛选过的点云模型,有连接在一起的部分,连通域拆分是无法拆解的。三维物体的模板匹配,就是看目标点云与模板之间重合的采样点的比例,占比越高,得分越高。将输入的点云图与模板各个面做匹配,自动拆分各个模块的点云,输出每个物料的匹配得分以及位姿(Pose)得分设置的小技巧:例如我的项目是六面空间物体的抓取,则得分不会超过1/6.不要设置过高,否则将会漏掉一部分物体。.

2020-07-06 17:54:44 6475 1

原创 Halcon双目结构光定位(1)-点云模型调平以及去噪处理在无序抓取中的应用

一.读取点云模型并调平使用前几讲的拟合平面的算法调平平台和物料。二.切除背景面在这里我分了两个步骤去噪。1.根据z轴方向的点云筛选以及连通域分割滤除平台背景。2.对去噪后的物料点云模型绘制外接箱体,获取箱体的姿态,做一个循环,从箱体上表面依次向下截取我们自定义的点云数量。直到提取到的点云数量达到要求,可以筛选出我们想要的ROI。3.去噪过程,为之后的模板匹配节约了大量的时间,并提高匹配率。...

2020-07-06 16:12:58 2809 1

原创 Halcon-三维物体仿射变换

上一讲叙述了点云模型的调平工作大家可以发现在调平模型的时候,基本都使用了姿态反转这个操作(pose_invert)本文详细描述点云模型姿态调正的细节,并与矩阵形式调整点云模型姿态做对比一.对姿态进行翻转pose_invert (MomentsPose, PoseInvert1)用姿态调整点云 rigid_trans_object_model_3d (ObjectModel3DScene, PoseInvert1, ObjectModel3DPCA)二.用矩阵形式对点云模型姿态调整.

2020-07-05 16:26:41 2823

原创 Halcon三维模型预处理(2):点云数据去噪+连通域分割

点云数据是庞大的点集合,点云模型去噪就是删除多余的点集。点云去噪的方式有两种:1.通过在x,y,z的方向去除固定范围的点云数据,提取想要的点云ROI2.通过选取连通域根据点云特征,筛选点云。一.方法1:沿x,y,z筛选点云数据将点云模型中的数据拆分成x,y,z坐标的三个集合选取’point_coord_x’, ‘point_coord_y’, 'point_coord_z’三个属性 get_object_model_3d_params (ObjectModel3DX, 'point_c.

2020-07-05 15:18:13 7373 5

空空如也

空空如也

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

TA关注的人

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