- 博客(75)
- 资源 (5)
- 收藏
- 关注
原创 cosbrower 腾讯云管理工具使用
cosbrower chttps//cloud.tencent.com/document/product/436/10976。
2022-07-20 10:52:44
326
原创 针孔相机畸变成像详解
相机成像经历三个过程:1、世界坐标系到相机坐标系。外参变换,涉及外参参数:(1)、世界坐标系到相机坐标系的旋转矩阵 R(2)、世界坐标系到相机坐标系的平移矩阵 T2、相机归一化坐标系(z=1)平面内坐标投影畸变畸变矫正, 涉及内参畸变参数:径向畸变系数:k1, k2, k3切向畸变系数:p1, p23、相机归一化坐标系(z=1)平面投影到像平面相平面投影,涉及内参畸变参数:投影焦距:fx, fy相位平移:cx, cy下面详细讲解每一个过程:世界坐标系到相机坐标系是刚体变换,不会产生形变,
2022-06-30 18:24:01
1930
原创 CV::Mat数据拷贝 memcpy 踩坑
cv::Mat img1(h, w, CV_8UC3);cv::Mat img1(h, w, CV_8UC3, data);一般cv::mat 初始化后数据内存 data 段都是连续的, 可以用isContinuous()函数判断存储是否连续。切记!切记!切记!不连续不能当一维数组处理一般经过裁剪的Mat图像,都不再连续了,如cv::Mat crop_img = src(rect);crop_img 是不连续的Mat图像,如果想转为连续的,最简单的方法,就是将不连续的crop_img 重新clon
2022-06-27 15:35:41
4259
2
原创 CUDA 二维、三维数组遍历
一个 Grid 分成 按维度分成多个Block,Block 个数为 GridDim.x * GridDim.y遍历: blockIdx.x , blockIdx.y一个Block 按维度分成多个Thread,Thread个数为 BlockDim.x * BlockDim.yThread 是最小的运行单元遍历:threadIdx.x , threadIdx.ycudaMemcpy2D( d_A, // 目的指针d_pitch, // 目的pitchbmp1, // 源
2022-06-26 23:04:57
1524
原创 C++时间统计
1、clock_gettime2、std::chrono::system_clock3、clock()不准确,不建议使用time_t t1 = clock()
2022-06-15 16:31:14
745
原创 鱼眼相机投影模型
等距投影R、T 变换将空间中一点转换到鱼眼坐标下。归一化到鱼眼Zc = 1 平面上。得到归一化(x, y)根据映射点(x, y)求 theta , theta 为入射光线与 Zc 轴夹角。加入畸变系数,求畸变thetad。rc = f * thetard = f * thetad根据等比例关系,xc / xd = rc / rd即可重新求得畸变后的相机坐标系下的(xd, yd)焦距 + 偏置求得 相面坐标 (u,v).........
2022-06-05 17:50:19
2138
3
原创 Ubuntu1804 + cudann11.3 + cudann8.2 + tensorRT8.0
CUDA11.3cuda 官网.run 文件直接sh运行,不要安装驱动安装完后配置环境:sudo gedit ~/.bashrc export PATH=/usr/local/cuda-11.3/bin:$PATHexport LD_LIBRARY_PATH=/usr/local/cuda-11.3/lib64:$LD_LIBRARY_PATHsource ~/.bashrc验证nvcc -Vcudann8.2cudann 官网(1)将cuda/include/cudnn.h
2022-05-30 01:25:31
1093
原创 Ubuntu1804 conda 源配置
conda config2.打开.condarc文件,替换掉里面的内容这里的关键是将https换成了http!channels: - defaultsshow_channel_urls: truedefault_channels: - http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main - http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free - http://mirr
2022-05-29 18:09:32
2295
原创 ubuntu openGL 安装
1、安装了opengl的核心库sudo apt-get install libgl1-mesa-dev*sudo apt-get install build-essential2、安装OpenGL Librarysudo apt-get install libgl1-mesa-dev3、安装OpenGL Utilitiessudo apt-get install libglu1-mesa-devsudo apt-get install libegl1-mesa-dev4、安装OpenGL U
2022-05-28 15:33:44
14948
原创 Ubuntu opencv 源码编译安装
1.去官网下载opencv, 下载连接http://opencv.org/releases.html,选择sources版本测试unzip opencv-3.4.1.zipsudo apt-get install cmakesudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.dev libtiff4.dev libswscale-dev libjasper-dev安装 l
2022-05-26 10:41:56
469
原创 Pytorch Dataset和DataLoader 加载训练数据
Dataset 基类torch.utils.data.Dataset 为数据集的基类, 继承这个基类,我们能够非常快速的实现对数据的加载。我们要实现自己加载数据的类,并继承于Dataset 这个类,重载类的成员函数1、__1en__方法, 能够实现通过全局的len()方法获取其中的元素个数;2、getitem 方法,能够通过传入索引的方式获取数据,例如通过dataset[i]获取其中的第 i条数据。from torch.utils.data import Dataset, DataLoader#
2022-05-19 15:37:33
543
原创 NMS、Soft-NMS、Softer-NMS
NMSNMS 顾名思义,非极大值抑制,也就是把极值周围的给抑制掉,不输出。在深度学习中叫去重,只保留最可靠的那个输出。首先定义一个相似度,深度学习中用IOU表示两个框的相似度。步骤:1、取分值最大的框。2、将IOU大于阈值(0.5)的框抑制掉。3、取剩下框分值最大的框,循环步骤1、2。很简单,是不是!代码:def NMS(boxes, scores, th): x1 = boxes[:,0] y1 = boxes[:,1] x2 = boxes[:,2]
2022-02-19 19:13:34
3855
原创 深度学习中的 BN (BatchNormalization)理解
CNN 三大算子: CONV + BN +RELU1、为什么 BN指导思想:机器学习领域有个很重要的假设:IID独立同分布假设,就是假设训练数据和测试数据是满足相同分布的。具有统一规格的数据, 能让机器学习更容易学习到数据之中的规律。具体原因:随着网络加深,数据经过激活层后趋向两侧,梯度趋于消失,分布在敏感激活区域(中间部分)的数据减少。不利于网络收敛。BN 将数据从新拉回标准正态分布。如何 BN减均值,除方差,乘scale, 加shift3、反归一化归一化有好有坏,如何取舍,最
2022-01-27 10:21:00
4408
原创 PsROI Pooling 深入理解,附代码
faster rcnn 和 rfcn 的最大不同点在于rfcn采用了PsROI Pooling 保留了局部区域的位置敏感性。输入batch_size = N 的批次训练图像。假设我们通过 RPN 层网络获取了 M 个 rois, 每个 rois 用 1*5 的向量表示,**第0 个数表示rois 所属于的图像id,**对roi 进行pooling 时要到特征图对应的batch 中。例如 rois = [[0, 1,4,6,8],[0,2,3,7,9],[1,3,5,7,9]],有3个roi,其中两个
2022-01-18 12:04:59
3401
原创 对抗网络GAN
“adversarial training is the coolest thing since sliced bread" – Yann LeCunGAN 网络主要由生成器G 和 判别器D两大部分组成。G 网络主要用于生成目标,D网络主要用于区分目标。通过二者之间的对抗,使得生成的目标越来越强大。比如我(G)要做亿万富翁,我向一个导师(D)请教:G:我要做亿万富翁D:你学识不够– 于是我开始疯狂学习知识G:我要做亿万富翁D:你投资能力不足– 于是我开始疯狂学习投资G:我要做亿万富翁D
2022-01-07 09:43:01
264
原创 FCOS : 一阶段无anchor全卷积检测网络
FCOS: Fully Convolutional One-Stage Object Detection文章链接:https://arxiv.org/pdf/1904.01355.pdfFCOS 是一阶段网络,基于 center-ness 的思想,实现没有anchor, 没有proposal的目标检测。而且召回率不亚于基于anchor 的检测算法。1、网络结构如下:网络结构借用FCN,通过反卷积上采样后进行特征融合,最后获取多尺度的特征输出,文章给出了5层尺度特征feature map, 最后在每一
2021-12-14 14:49:48
2630
原创 linux 下 CUDA + Opencv 编程 之 CMakeLists.txt
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)PROJECT(medianFilterGPU)# CUDA packageFIND_PACKAGE(CUDA REQUIRED) INCLUDE(FindCUDA)# CUDA include directoriesINCLUDE_DIRECTORIES(/usr/local/cuda/include)# OpenCV packageFIND_PACKAGE(OpenCV REQUIRED) # OpenCV in
2021-09-27 15:35:43
488
原创 CornerNet详解
论文动机1、anchor-box 好用,但是有两个缺点:1)、数量太多,造成负样本太多,样本不均衡,导致训练效率低。2)、anchor-box引入太多超级参数,数量,大小,长宽比等增加算法设计难度。所以想通过一组关键点,用左上角和右下角的点来代替bbox。网络结构Heatmaps预测哪些点最有可能是Corners点,Embeddings用于表征属于相同对象的corner的相似度。它们的通道数都为C,C是object的类别数 (不包括background) 。最后的Offsets用于对corn
2021-09-16 08:46:00
8350
2
原创 样本均衡之Focal-Loss
论文地址:Focal Loss for Dense Object DetectionICCV2007 RBG和Kaiming大神新作要解决的问题:一阶段网络出现后,发现一阶段网络的检测准确率不如二阶段网路。作者希望能通过改进 loss 来促进一阶段网络的检测精度。为什么一阶段网络检测精度明显不如二阶段,作者认为是:样本类别不均衡导致的。...
2021-09-03 08:08:00
352
原创 样本均衡之OHEM
论文地址:Training Region-based Object Detectors with Online Hard Example MiningOHEM 主要解决神经网络中困难负样本的问题。困难负样本是神经网络难以区分的负样本。我们希望模型在训练的时候,负样本的confidence接近0,但是如果不加干涉,总会有一些负样本不那么接近0。难样本挖掘就是要找到这些样本,针对性地训练。主要贡献:1、不需要设置正负样本的比例来解决类别不均衡的问题。2、数据集越大,性能越加明显。主要原理1、根据损
2021-09-02 08:29:42
470
原创 RFCN详解
解决的问题:物体目标检测包括物体种类检测和物体的位置检测。在对物体种类检测时,我们希望能保持位置不敏感(translation invariance),也就是不管物体在哪个位置都能正确分类。在进行位置确定的时候,我们希望保持位置敏感(translation variance),也就是不论物体发生什么样的位置变换都能确定物体的位置。解决神经网络对物体位置不敏感的问题,神经网络擅长提取图像的局部特征,不太关心局部特征所在的位置(我认为是因为卷积权值共享导致)。为了让神经网络做到物体检测,需要增加位置敏感特性
2021-08-31 08:25:50
3646
原创 SSD详解
论文地址:Single Shot MultiBox Detectorgithub :代码SSD300 网络结构:目标检测两大类:two-stage: 产生稀疏的候选框,然后对候选框进行分类和回归。优点在于精准,但是速度欠缺。one-stage:均匀在图片不同位置上进行密集抽样,抽样可以采用不同的尺度和宽高,然后提取特征进行分类和回归。优点是速度快,但是均匀密集采样的缺点是训练难,主要是因为正负样本分布不均衡(使用FocalLoss)。多尺度 + 先验框(anchor)预测MultiBox预测
2021-08-24 09:27:20
437
原创 YOLO V2详解
论文地址: YOLO9000: Better, Faster, Stronger如果对 YOLO 没有概念的朋友,可以先看看YOLO V1 的思路。在YOLO v1 之后,深度学习出现了许多trick,例如batch Normalization , 多尺度训练等,为了提高检测精度,v2也借鉴 RCNN 体系的anchor box。Better:1、加入BNBatch Normalization(批归一化)map 提升 2%BN 已经成为一种标配,加入BN 后,可以去掉 dropout。2、高分
2021-08-20 09:07:01
469
原创 YOLO V1详解
YOLO 顾名思义: You Only Look Onece。你只需要看一次,对比与fasterrcnn先提取前景(Proposal),再对前景进行分类和回归两步走,YOLO 意思就是一步到位,直接是backbone之后就进行分类和回归。YOLO的目的就是要追求速度。核心思想如何一步到位?最简单的就是图像网格化。如果某个object 的中心点落在这个网格,这个网格就负责预测这个object。如何预测呢?一个网格预测B个bbox, 每个bbox 预测本身的位置回归还要预测一个confidence值。
2021-08-17 08:38:43
981
原创 caffe ubuntu 安装报 google::protobuf 链接失败问题
报错问题:CXX/LD -o .build_release/tools/convert_imageset.bin.build_release/lib/libcaffe.so: undefined reference to google::protobuf::io::CodedOutputStream::WriteVarint64ToArray(unsigned long long, unsigned char*)' .build_release/lib/libcaffe.so: undefined re
2021-08-09 11:19:03
938
原创 YOLOV3详解
YOLOV3 是集成了 SSD(多尺度预测), FCN(全卷机),FPN(特征金字塔),DenseNet(特征通道concat) 网络的大成之作!YOLOV3 的主干网络backbone 称为 DarkNet, 主要有DarkNet-21 , DarkNet-53, 区别在于每层的 ResidualBlock 个数不同.yolo-v3 网络结构:1、DarkNet-53 搭建:darknet-53 由一个初始卷积层 + 5个Layer 层构成,进入layer层后进行下采样,大小减半,通道增倍。每个
2020-10-16 18:24:41
4258
原创 Torch模型权重初始化
初始化方法在 torch.nn.init 中实例化模型后,在模型init函数中初始化权重初始化函数: def initialize_weights(self): for m in self.modules(): if isinstance(m, nn.Conv2d): torch.nn.init.xavier_normal_(m.weight.data) if m.bias is not No.
2020-10-16 14:55:27
2664
原创 FasterRCNN详解
faster r-cnn 是第一个完全可微分的检测模型 。也就是从数据到模型输出的整条路径既可以 前行传播 forward ,也可以反向传播 backword 。是一个 end -to- end 模型。faster r-cnn 发展进程1. R-CNN :特点:候选区域 + 卷积特征提取 + (SVM)特征分类 和 边界回归候选区域:select serch 方法; 提取个数大约:1k...
2019-12-25 13:47:19
2850
原创 Pytorch 模型训练入门
定义是否使用GPU可有可无,默认为 cpudevice = torch.device("cuda" if torch.cuda.is_available() else "cpu")训练数据:BATCH_SIZE = 64 :批处理尺寸,即一次处理图像的张数加载训练数据 : 以cifar10 为例trainset = torchvision.datasets.CIFAR10(root=...
2019-12-20 12:29:31
295
原创 ResNet解读和pytorch实现
为什么ResNet1 . 简单地增加卷积层导致梯度发散或梯度爆炸2. 残差网络可以消除这种现象ResNet 思想网络输出为 恒等映射 + 残差映射ResNet通过改变学习目标,即由学习完整的输出变为学习残差,解决了传统卷积在信息传递时存在的信息丢失核损耗问题,通过将输入直接绕道传递到输出,保护了信息的完整性。此外学习目标的简化也降低了学习难度。...
2019-12-19 22:21:44
1021
原创 Pytorch 模型保存
方式1 :保存整个模型使用时无需自定义网络模型,保存时已把网络结构保存,不方便调整网络结构。torch.save(modelname, 'model.pkl')model = torch.load('model.pkl')方式2:保存模型参数使用时需要自己定义网络,并且其中的参数名称与结构要与保存的模型中的一致(可以定义部分网络,比如只使用VGG的前几层),相对灵活,便于对网络进行修改...
2019-12-19 16:04:57
201
原创 用cupy实现python + cuda编程
1 . 编写核函数进行数据处理kernerl.py 文件kernel_img = '''extern "C"__global__ void medianfilter( const float *input, float *output, const int w...
2019-12-05 10:07:11
2659
原创 CUDA 图像编程
CUDA 图像编程一个 Grid 分成 按维度分成多个Block,个数为 GridDim.x * GridDim.y遍历: blockIdx.x , blockIdx.y一个Block 按维度分成多个Thread,个数为 BlockDim.x * BlockDim.yThread 是最小的运行单元遍历:threadIdx.x , threadIdx.y图像处理中,一个像素对应到一个...
2019-12-04 20:57:18
1454
verilog数字钟源代码
2014-04-23
verilog数字钟,功能齐全
2014-04-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅