- 博客(31)
- 资源 (8)
- 收藏
- 关注
原创 BLIP2中Q-former详解
Querying Transformer,在冻结的视觉模型和大语言模型间进行视觉-语言对齐。为了使Q-Former的学习达到两个目标:学习到和文本最相关的视觉表示。这种表示能够为大语言模型所解释。需要在Q-Former结构设计和训练策略上下功夫。具体来说,Q-Former是一个轻量级的transformer,它使用一个可学习的query向量集,从冻结的视觉模型提取视觉特征。采取两阶段预训练策略。
2023-10-30 16:30:25
41483
3
原创 linux g++ 重要编译参数
-g 编译带调试信息的可执行文件1# -g 选项告诉 GCC 产生能被 GNU 调试器GDB使用的调试信息,以调试程序。23# 产生带调试信息的可执行文件test4g++ -g test.cpp-O[n] 优化源代码 1## 所谓优化,例如省略掉代码中从未使用过的变量、直接将常量表达式用结果值代替等等,这些操作会缩减目标文件所包含的代码量,提高最终生成的可执行文件的运行效率。 2 3# -O 选项告诉 g++ 对源代码进行基本优化。这些优化在大多数情况下都会使程序执行的更...
2022-04-11 17:27:50
2229
原创 YoloV5+Deep SORT
Deep SORT是多目标跟踪(Multi-Object Tracking)中常用到的一种算法,是一个Detection Based Tracking的方法Deep SORT算法的前身是SORT, 全称是Simple Online and Realtime Tracking。简单介绍一下,SORT最大特点是基于Faster R-CNN的目标检测方法,并利用卡尔曼滤波算法+匈牙利算法,极大提高了多目标跟踪的速度,同时达到了SOTA的准确率。这个算法确实是在实际应用中使用较为广泛的一个算法,核心就是两个
2022-03-02 13:44:17
2069
原创 YoloV5 部分原理解析
输入端改进思路:Mosaic数据增强主要思想是将四张图片进行随机裁剪,再拼接到一张图上作为训练数据。这样做的好处是丰富了图片的背景,并且四张图片拼接在一起变相地提高了batch_size,在进行batch normalization的时候也会计算四张图片,所以对本身batch_size不是很依赖,单块GPU就可以训练。对四张图片进行拼接,每一张图片都有其对应的框,将四张图片拼接之后就获得一张新的图片,同时也获得这张图片对应的框,然后我们将这样一张新的图片传入到神经网络当中去学习,相当于一下子传入四张图
2022-02-15 15:19:11
5067
原创 argparse.ArgumentParser()用法解析 python模块
argparse是一个Python模块:命令行选项、参数和子命令解析器。主要有三个步骤:创建 ArgumentParser() 对象调用 add_argument() 方法添加参数使用 parse_args() 解析添加的参数name or flags - 一个命名或者一个选项字符串的列表,例如 foo 或 -f, --foo。action - 当参数在命令行中出现时使用的动作基本类型。nargs - 命令行参数应当消耗的数目。const - 被一些 action 和 nargs 选择所需
2022-01-13 15:53:35
674
原创 PaddleOCR训练自己的数据
一 、数据准备采用PPOCRLabel标注自己的数据PPOCRLabel是一款适用于OCR领域的半自动化图形标注工具,内置PP-OCR模型对数据自动标注和重新识别。使用Python3和PyQT5编写,支持矩形框标注和四点标注模式,导出格式可直接用于PaddleOCR检测和识别模型的训练。1.1 安装PaddlePaddlepip3 install --upgrade pip# 如果您的机器安装的是CUDA9或CUDA10,请运行以下命令安装python3 -m pip in.
2021-12-29 15:59:02
11690
原创 linux基础知识
linux系统目录结构以下是对这些目录的解释: /bin: bin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令。 /boot: 这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。 /dev : dev 是 Device(设备) 的缩写, 该目录下存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的。 /etc: etc 是 Etcetera(等等) 的
2021-12-22 16:27:24
98
原创 coco数据可视化
"""coco_visual.py可视化COCO数据集Usage:python coco_visual.py 标注文件路径 图片文件夹 [-s=可视化结果保存路径]"""import argparseimport cv2import osimport shutilimport asyncioimport numpy as npfrom skimage import drawfrom pycocotools.coco import COCOfrom typing impor..
2021-12-03 14:38:25
3614
原创 深度学习网络训练常见概念
卷积神经网络基础为什么要引入卷积?全连接神经网络空间特征丢失 图片尺寸增大,模型参数过多,容易过拟合卷积操作感受野池化激活函数(实现非线性)批归一化 Batch Normalization训练时计算在整个数据集上的均值和方差,并将结果保存预测时计算丢弃法Dropout过拟合...
2021-12-02 19:21:58
915
原创 手写数字识别网络结构
非线性网络输入层+隐含层+隐含层+输出层隐含层数量增加,模型的表达能力越强卷积神经网络分类任务选择优化目标分类任务输出是一个标签,类似牛顿第二定律,采用均方误差时,减去一个标签不合理发现观测数据和背后规律之间的关系,输出某一标签的概率SoftMax,为什么采用e的指数最大似然思想交叉熵分类任务损失函数优化算法:调整学习率SGD:minibatch 收敛过程中震荡Momentum:不仅该mini...
2021-12-02 15:59:26
9729
原创 神经网络模型-波士顿房价预测
数据拆分 数据归一化模型设计模型的损失与优化训练过程采用均方误差,求导不是一个常量,可以看到下降趋势梯度下降特征尺度归一的另外原因是为了统一步长(学习率)...
2021-12-01 16:19:53
673
原创 深度学习入门(paddlepaddle)
机器学习深度学习深度学习的历史单层神经元没法计划异或问题,停滞一段时间多层神经网络 不明显比SVM效果好互联网兴起数据量增大、GPU计算机器学习 需要做特征工程,依赖于行业经验、建模能力深度学习 端到端的学习能力...
2021-12-01 15:25:22
150
原创 C/C++ dll的隐式调用与显式调用
1.头文件、lib文件、dll文件头文件:存放函数声明dll文件:存放函数的定义,动态链接库文件Dynamic Link Library,运行时使用lib文件:具体分静态编译与动态编译,编译时使用静态编译静态编译将导出声明和实现都放在lib中。编译后所有代码都嵌入到宿主程序。静态编译的优点是编写出来的程序不需要调用DLL和载入函数,直接可以当成程序的一部分来使用。静态编译的缺点也是显而易见的,使用静态编译的程序体积会比动态编译大,原因是函数的实现被嵌入为程序代码的一部分。动态
2021-11-22 16:58:27
11454
1
转载 深度学习backbone、neck、head等术语解释
backbone:主干网络,用来提取特征,常用Resnet、VGG等head:获取网络输出,利用提取特征做出预测neck:放在backbone和head之间,进一步提升特征的多样性及鲁棒性bottleneck:瓶颈,通常指网络输入输出数据维度不同,通常输出维度比输入维度小很多GAP:Global Average Pool全局平均池化,将某个通道的特征取平均值Warm up:小的学习率先训练几个epoch,这是因为网络的参数是随机初始化的,一开始就采用较大的学习率容易数值不稳定参考链接
2021-10-29 17:14:50
9642
原创 目标检测各系列简介
1.区域卷积神经网络R-CNN对每个anchor做cnn提取特征,然后SVM分类Fast RCNN对整张图做cnn提取特征,然后把每个anchor对应的特征映射出来,再进行分类Faster R-CNNRPN网络获取更好的锚框Mask R-CNN2.单发多框检测(SSD)3.YOLO...
2021-09-02 16:48:13
122
原创 缺陷检测
基本框架如下:1.图像处理图像增强图像滤波(高斯滤波、均值滤波、中值滤波)直方图均衡化伽马变化图像分割基于阈值的分割基于区域的分割基于形态学分水岭的分割2.特征提取几何特征(区域周长、面积大小、位置、缺陷质心)形状特征(矩形度、细长度、圆形度、致密度、不变矩、偏心率)颜色特征(颜色直方图、颜色聚合向量、颜色矩)纹理特征(统计法_直方图、频谱法_傅里叶)灰度特征(灰度直方图信息_方差、均值、熵)缺陷图像的特征提取实现了从图像空间到特征空间的转换.
2021-04-08 15:41:40
3643
原创 面向对象与面向过程编程的区别
一、面向对象面向对象技术是目前流行的系统设计开发技术,它包括面向对象分析和面向对象程序设计。面向对象程序设计技术的提出,主要是为了解决传统程序设计方法——结构化程序设计所不能解决的代码重用问题。面向对象的编程方法具有四个基本特征:1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。比如,我们要设计一个学生成绩管理系统,考察学生这个对象时,我们只关心他的班级、学号、成绩等,而不用去关心
2021-03-10 11:42:06
1811
原创 边缘检测算子
边缘检测可以说是一种定向滤波,图像分为垂直频率(垂直方向的变化)和水平频率(水平方向的变化)两个方向,总体来说就是用后一个像素点的值减去前一个像素点的值得到的结果,我们称之为梯度,就是我们最后要求得边缘。也就是说用下图中第3列减去第二列得值,但是我们怎么实现这种操作呢,我们就用图像滤波方式来实现,区别在于滤波器得值我们在这里指定了大小,正负。以一个3∗3大小的为例,中心点为 f(x,y) ,如图:Robert算子我们首先定义Robert算子得卷积核,如下图:得到的X,Y方向的梯度就是
2021-03-02 19:23:49
3145
原创 机器人手眼标定
相机的装载位置不在手上(eye-to-hand)相机固定在一个地方,机械手的运动不会带着相机一起移动。在手上(eye-in-hand)相机安装在机械手上,随着机械手一起移动。较为常用。这个实际上和eye-to-hand类似。可以快速有效地标定被测物体的坐标。这种情况的标定过程实际上和相机和机械手分离的标定方法是一样的,因为相机拍照时,机械手会运动到相机标定的时候的位置,然后相机拍照,得到目标的坐标,再控制机械手,所以简单的相机固定在末端的手眼系统很多都是采用这种方法,标定的过程和手眼分离
2021-02-23 15:13:35
2406
原创 保边滤波中双边滤波与引导滤波的区别
双边滤波双边滤波是一种同时考虑了像素空间差异与强度差异的滤波器,因此具有保持图像边缘的特性。高斯滤波器如下:其中W是权重,i和j是像素索引,K是归一化常量。公式中可以看出,权重只和像素之间的空间距离有关系,无论图像的内容是什么,都有相同的滤波效果。再来看看双边滤波器,它只是在原有高斯函数的基础上加了一项,如下其中 I 是像素的强度值,所以在强度差距大的地方(边缘),权重会减小,滤波效应也就变小。总体而言,在像素强度变换不大的区域,双边滤波有类似于高斯滤波的效果,而在图像边缘等强度
2021-02-18 11:17:32
1279
原创 图像中卷积与滤波的区别
图像处理中滤波和卷积是常用到的操作。很多人认为卷积就是滤波,两者并无区别,其实不然。两者在原理上相似,但是在实现的细节上存在一些区别。这篇博文主要叙述这两者之间的区别。1、滤波简单来说,滤波操作就是图像对应像素与掩膜(mask)的乘积之和。比如有一张图片和一个掩膜,如下图:那么像素(i,j)的滤波后结果可以根据以下公式计算:其中G(i,j)是图片中(i,j)位置像素经过滤波后的像素值。当掩膜中心m5位置移动到图像(i,j)像素位置时,图像(i,j)位置像素称为锚点。滤波步
2021-01-25 09:43:15
629
原创 棋格盘角点提取函数说明findChessboardCorners/cornerSubPix
1.FindChessboardCornersFindChessboardCorners是opencv的一个函数,可以用来寻找棋盘图的内角点位置。函数形式int cvFindChessboardCorners( const void* image, CvSize pattern_size, CvPoint2D32f* corners, int* corner_count=NULL, int flags=CV_CALIB_CB_ADAPTIVE_THRESH );参数说明Image:输
2021-01-22 10:43:54
1691
原创 机器人手眼标定(川崎与发那科区别)
机械臂末端参数(opencv):对于六轴机械臂而言,在控制器端通常会有六个参数表征当前机械臂末端的状态(x, y, z, rx, ry, rz),其中(x, y, z)表示以机械臂的基座为原点(0, 0, 0)的OXYZ坐标系下机械臂工具的坐标值,其中地面为xoy面,垂直方向为z轴,而(rx, ry, rz)表示末端工具分别围绕基座的x、y以及z轴旋转的角度,即欧拉角(eular)。发那科机器人:变化值(X,Y,Z,W,P,R)刀具坐标系用来定义刀尖点(TCP)的位置和刀具姿势的坐标系。刀具
2020-12-23 11:07:13
4325
原创 C++中指针和引用的区别
文章目录前言 一、主要区别? 二、代码示例 1.值传递 2.指针传递 3.引用传递 总结前言从概念上讲,指针从本质上讲就是存储变量地址的一个变量,在逻辑上是独立的,可以被改变,包括其指向的地址的改变和其指向的地址中所存放的数据的改变。引用是一个别名,在逻辑上不独立,其存在具有依附性,所以必须一开始就被初始化,其引用的对象在其整个生命周期中是不能被改变的,自始至终只能依附于同一个变量。一、主要区别 引用必须被初始化,但是不分配存储空间。...
2020-12-18 15:38:00
282
原创 C/C++内存管理
一、变量存储区域常见的共分为以下几个区域:1. 内存栈区: 存放局部变量名;2. 内存堆区: 存放new或者malloc出来的对象;3. 常数区: 存放局部变量或者全局变量的值;4. 静态区: 用于存放全局变量或者静态变量;5. 代码区:二进制代码。1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区...
2020-06-03 17:58:09
126
VS2010实现RobHess源码SIFT算法.zip
2019-06-13
VS2010mfc+opencv2.410扣绿,完美解决边缘反绿现象
2018-10-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人