- 博客(46)
- 资源 (6)
- 收藏
- 关注
原创 MIxformerV2的onnx和tensorrt加速
主要是针对目标跟踪算法MixformerV2的工程化应用,进行了onnx加速和tensorrt加速。
2023-10-26 17:26:00
540
2
原创 C++中的简单并发
文章目录并行与并发C++11中的并行和并发实现并行与并发首先,并行表示多个任务同时执行,即多个任务处理单元可以同时处理多个任务;并发则表示两个任务交替执行,以达到看似并行的目的,即不用等待上一个任务执行完再执行下一个任务;C++11中的并行和并发实现C++11中主要通过线程的方式作为并发编程的基础,需要包含thread头文件;可通通过get_id获得线程的Id;使用join加入一个线程;在并发编程时,为了能够保持对内存某块区域操作的独占性,需要对该操作设置锁机制。C++11对临界区的保护
2021-10-24 17:56:21
852
原创 cuda编程基础
文章目录第一章第二章第三章3.1 and 3.23.3 查询设备第四章第五章 线程协作第六章 常量内存与事件第一章用途:加速三维成像,计算流体力学,分子模拟计算等等,这些应用场景大都需要进行大量的科学计算,GPU的强大并行计算的能力使得其能够完成这些超大量的计算任务,为任务缩短计算时间,降低计算代价;第二章首先需要安装cuda toolkit,添加环境变量;其次,vs创建工程,并在项目中加入cuda的bin,inlcude和lib;编写.cu代码,需要以__global__开头,并且使用e
2021-10-09 20:53:17
374
原创 Adam如何自适应学习率的?
Adam是如何做到自适应学习率的?优化算法统一公式待优化参数:wtw_twt;优化目标:f(wt)f(w_t)f(wt);当前参数梯度:gt=∇f(wt)g_t=\nabla{f(w_t)}gt=∇f(wt);一阶动量和二阶动量:ηt=α⋅mt/vt\eta_t=\alpha· m_t/\sqrt{v_t}ηt=α⋅mt/vt;统一的更新公式为:wt+1=wt−ηtw_{t+1}=w_t-\eta_twt+1=wt−ηt;Adam时如何自适应调整学习率
2021-10-09 20:39:44
5551
原创 Accurate 3D Object Detection using Energy-Based Models
问题3DOD的任务是在所给顶的感知数据上估计出包围目标的3D框,大致分为两个子任务:将给定的候选3D框中将目标进行分类,然后回归出该目标的bbox;如何在复杂环境下使用激光雷达数据对3D bbox进行准确回归;3DOD中基于概率密度回归的bbox回归方法在推理时需要使用梯度上升最大化p(y∣x;θ)p(y|x;\theta)p(y∣x;θ),要求DNN的标量输出fθ(x,y)f_\theta(x,y)fθ(x,y)对bbox yyy是可微的,但当前方法无法满足可微这一条件;解决方案使用
2021-09-14 22:07:33
291
原创 cmake之如何构建环境
构建环境检测操作系统在不同的操作系统上,CMake需要根据操作系统启用条件编译,就需要检测当前的操作系统;进行操作系统匹配的变量为CMAKE_SYSTEM_NAME,该名称为CMAKE为操作系统定义的,使用if的条件语句可以进行操作系统的匹配,如下if(CMAKE_SYSTEM_NAME STREQUAL "Linux") message(STATUS "Configuring on/for Linux")endif()唯一需要注意的是,操作系统有不同的名称,如macOS对应“D
2021-09-10 17:29:59
655
原创 2021-09-08 cmake之从可执行文件到库
cmake之从可执行文件到库从可执行文件到库从可执行文件到库一些基础的注意事项# set minimum cmake version 项目构建的开始需要设置最小的cmake版本,并定义不满足这一要求时的cmake行为cmake_minimum_required(VERSION 3.5 FATAL_ERROR)# project name and language 项目名称和支持的编程语言project(recipe-01 LANGUAGES CXX)# 编译和链接源文件hell0-wor
2021-09-08 16:13:32
251
原创 High-Performance Long-Term Tracking with Meta-Updater 阅读
**High-Performance Long-Term Tracking with Meta-Updater**问题方案实现问题长时跟踪没有利用在线更新的优势;引入在线更新到长时跟踪很危险,因为长时跟踪存在长时的不确定性和噪声观测;方案引入Meta-Updater解决上述问题;判断在当前帧跟踪时,跟踪器是否准备更新,由此过滤长时跟踪中的噪声样本,使用更加准确的样本进行更新;实现整体框架其中,local tracker为短时的局部跟踪器,此处使用ATOM。局部跟踪结果得到之后
2021-08-31 22:08:32
429
原创 YOLOX阅读
YOLOx问题从YOLOv2开始,yolo一直使用基于anchor的方法。但近几年基于anchor-free、标签分配策略、端到端(NMS-free)检测技术并没有整合到YOLO中,包含yolov4和v5;方案以YOLOV3-SPP为baseline,因为v4和v5都是基于anchor做的改进。训练策略微小改动,添加了EMA权重更新、余弦学习率训练方案、IOU loss、IOU-aware分支。使用BD=CE用于训练分类和obj分支,IOU loss训练回归分支,只使用RandomHorizo
2021-08-25 16:22:00
470
原创 You only look once (YOLO) V4
You only look once (YOLO) V4目的:提高神经网络在生产系统中的速度和优化并行计算;网络模型的选择: CSPResNext50在ImageNet上的分类效果比CSPDarknet53好,CSPDarknet53在COCO上的检测效果比CSPResNext50好;选择额外的模块增强感受野和参数聚合方法:相比于分类,检测算法要求:(1)更高的输入分辨率,以检测到多个小尺寸的目标;(2)更多的层,以覆盖高分辨率的输入;(3)更多的参数:增强在单幅图像中检测多个不同..
2021-08-18 17:48:48
159
原创 You only look once (YOLO) V3
You only look once (YOLO) V3相比于yolov2的不同v3使用逻辑回归为每个bbox预测一个objectness score,如果一个先验框与ground truth 有重叠并且大于其他任意一个先验框与gt的重叠,则objectness score应该为1。如果一个先验框和gt重叠并超过一定阈值,但却并不是最佳的,则v3中忽略该预测,即不认为其中含有目标(在众多的先验框中,和某一个gt框进行重叠计算,只取给具有最佳重叠的那个先验框分配objectness为1,即将该先验框
2021-08-18 17:48:11
276
原创 You only look once (YOLO)V2
You only look once (YOLO)V2yolov1中的召回率和定位精度比较低。v2的目标是在维持分类准确率的同时,主要改善recall和localization;在每层卷积测后面添加BN层,帮助正则化该模型,同时移除dropout;v1使用224×224224\times 224224×224的图像用于训练分类网络,使用448×448448\times 448448×448的图像用于训练检测模型。v2中,将分类网络放到448×448448\times448448×448的ImageN
2021-08-18 17:47:06
170
原创 Generating Masks from Boxes by Mining Spatio-Temporal Consistencies in Videos
Generating Masks from Boxes by Mining Spatio-Temporal Consistencies in VideosGenerating Masks from Boxes by Mining Spatio-Temporal Consistencies in Videos问题方案实现Generating Masks from Boxes by Mining Spatio-Temporal Consistencies in Videos问题如何使用现有的bbox标注
2021-08-18 17:40:56
339
原创 SVM
svmsvm和逻辑回归一样,也是用来学习得到一个决策边界(decision bundary)的,只不过在某些情况下比逻辑回归更加有效。1.引子-逻辑回归hθ(x)=11+exp(−θTX)hθ(x)=11+exp(−θTX)h_{\theta}(x) = \frac{1}{1+\exp(-\theta^TX)} 对于该假设: - if y = 1,then hθ(x)=1h...
2021-05-12 21:35:26
120
原创 感知机
感知机感知机介绍错误分类样本到超平面的距离损失函数的定义收敛性证明感知机算法感知机算法的对偶形式感知机介绍感知机是一种线性二分类器。与一般的模型一样,具有输入T=(x1,y1),...,(xN,yN)T = {(x_1, y_1), ..., (x_N, y_N)}T=(x1,y1),...,(xN,yN)(其中,(xi,yi)(x_i, y_i)(xi,yi)是一个样本)、输出w...
2019-02-08 16:48:39
245
原创 决策树
决策树1.概念决策树(decision tree)是一种机器学习方法,通过对给定训练集的学习得到一棵树状的模型,以此来对新的样本进行预测分类。树中的结点在学习过程中进行了划分,划分是用某一属性进行的,某结点划分后的分支是该划分属性的一个取值(离散)或一段取值(连续),需要注意的是,用来进行划分的属性需要经过一定的选择,来使得划分后所获得的“纯度提升”最大。在训练过程中,也需要注意过拟合...
2018-08-29 14:06:21
181
原创 对率回归的实验
对数几率回归在python中的实现在做分类任务时,需要找一个单调可微函数将分类任务的真实标记y与线性回归模型所预测的值联系起来。对数几率函数是用来“替代”单位跃阶函数的,满足单调可微的条件。以下是对数几率函数:y=1/(1+e−z)y=1/(1+e−z)y=1/{(1+e^{-z})},其中z=wTx+bz=wTx+bz= w^Tx+b。对其进行取对数,得到ln(y/(1−y))=wTx+bl...
2018-08-27 16:27:51
2429
1
原创 caffe中用自己的数据训练网络之生成lmdb数据库
在编译好的caffe中,其tools/Release下有一个convert_imageset.exe的文件,其是用来将自己准备的图像数据集进行转化的。在convert_imageset.exe所在的文件夹下执行convert_imageset命令会发现有这样的结果: 由此可见,该命令的使用格式为:convert_imageset [FLAGS] rootfolder/ ...
2018-04-16 16:27:08
406
原创 caffe中使用自己的数据训练网络之数据的划分
现假设我们得到了一批已经分好类的数据,但是这些数据却没有做划分,即没有分为:training set/dev set/test set,现在,我们将得到的数据做training和dev的划分。现假设我们对于training和dev的划分为3:1,则:# -*- coding: utf-8 -*-"""Created on Sun Apr 15 22:37:28 2018@autho...
2018-04-16 15:37:13
202
原创 caffe中使用训练好的模型进行图像识别
# -*- coding: utf-8 -*-"""Created on Fri Apr 6 09:33:13 2018@author: Daniel"""import caffe import numpy as npimport PILfrom PIL import Imageimport matplotlib.pyplot as pltimport osimport...
2018-04-09 13:36:30
2695
原创 大端到小端的转换
假设要转换的数的32位的十六进制格式为:0X12345678大端模式:地址 4000 4001 4002 4003 数据 0x12 0x34 0x56 0x78转换为小端模式为:地址 4000 4001 4002 4003 数据 0x78 0x56 0x34 0x12转换方式有很多,总的来说,就...
2018-03-12 20:28:33
9580
1
原创 C++中的数组
数组维度首先,数组是一种符合类型,声明如a[d],d是维度,维度必须是是一个常量表达式。Int a[] = {1,2,3}; Int I = 1; a[i] = 2;//错误,因为i是变量; Constexpr size_t I = 1; a[i] = 2;//正确,i是常量begin和end在数组中的使用数组和vector类似,都有begin...
2018-03-12 20:24:13
2136
原创 caffe框架中Blob细则
Blob是一个类模板,封装了SyncedMemory类,作为基本计算单元服务Layer,Net,Solver等。使用同步时必须#include”caffe/syncedmem.hpp”。//Blob中的shape_string()函数 inline string shape_string() const{//使用const的函数,使得传入的this是const的,所以不能对数据成员...
2018-03-12 20:18:11
268
原创 Blob的基本用法
Blob简介 在caffe中Blob相当于tensorflow的tensor,即张量,是caffe框架中数据流的基本存储单位,caffe中关于数据的运算和存储都是基于Blob进行的。Blob的使用 Blob是一个模板类,在创建对象时需要制定模板参数,例如:Blob<float> a;//声明一个Blob对象a cout<<"Size: "...
2018-03-12 20:13:04
11844
原创 protobuf的使用
在使用protobuf定义数据结构之前,首先使用:syntax = “proto2”或”proto3”来定义protobuf的版本。此处使用protobuf2作为说明,protobuf3y与protobuf2有一些不同,取消了一些关键字的使用,详细见https://developers.google.com/protocol-buffers/docs/cpptutorial定义数据结构之前,使...
2018-03-12 20:08:46
209
原创 caffe中的卷积实现
在caffeine中,作者并没有按照传统的卷积方式来实现卷积,而是按照matlab中的方法imcol来实现卷积的。具体实现方式如下: 按照caffe中做一次前向传播时卷积层的计算量方法得出: Calculation(MAC) = I*J*M*N*K*L I*J表示卷积核的大小,M*N表示输出特征图的大小,K表示输入通道,L表示输出通道。所以,由以上参数得:对于输入和输出分别为K和...
2018-03-08 17:28:45
1285
原创 深入探讨构造函数
1.类的成员的初始化和赋值之间的差异在类的构造函数如果对类的成员使用了初始值列表,则是对这些成员实行了初始化,在这之前,类还未为这些成员初始化;如果在构造函数的函数体内对成员进行赋值,则是对成员进行了赋值,在这之前,类已为这些成员进行了初始化。如下:Sales_data::Sales_data(const string &s,unsigned cnt,double price)...
2018-02-10 21:09:58
173
原创 常函数及其由来
1. this铺垫首先,我们先要了解在c++中的面向对象编程中,当我们调用成员函数时,实际上实在替某个对象调用它。若果mem_function指向对象中的某个成员,则它隐式地指向调用该函数的对象的成员。成员函数通过名为this的额外的隐式参数来访问调用它的那个对象。当我们调用一个成员函数时,用请求该函数的对象地址初始化this。编译器负责把对象的地址传递给成员函数的隐式参数this,可以等
2018-01-13 23:05:33
460
原创 迭代器的使用
**在c++中,有的类型存在迭代器,利用迭代器可以对对象进行间接访问,像指针一样。 迭代器有有效和无效之分,有效的迭代器只想容器的元素或尾元素的下一位置。 有迭代器的类型同时拥有返回迭代器的成员,比如begin和end成员。begin成员返回的容器第一个位置的元素,end成员返回的是容器尾元素的下一个位置。尾后迭代器end是一个不存在的元素,本身无任何含义,但是仅仅是个标记而已。如果容器为空,
2018-01-08 00:17:29
374
原创 C++中的static深度剖析
C++中的staticstatic的作用 在C语言中,static的作用有两个: 一是使得static声明的变量只能在当前文件中被访问,即当其他的文件中想通过像使用全局变量一样(如:extern int i;)使用static声明的变量时,就会在link的时候出错。其功能就相当于使得该文件中static声明的变量隐藏于该文件中而不被其他文件所发现。 其第二个作用是使得s
2017-09-28 00:45:44
280
原创 为什么要使用拷贝构造?
先构造这样的代码:static int objectCount = 0;class HowMany {public: HowMany(){objectCount++;print("HowMany()");} //HowMany(const HowMany& o){objectCount++;print("HowMany(const HowMany&)");} HowMan
2017-09-27 00:54:15
550
原创 再说引用
函数的参数传引用、指针、值的本质区别和不同参数传入引用时,实际上是一个标签化的过程,一般需要传入的是一个变量,即可以作为左值的东西。有这样一种解释:在数值(注意数值和变量的区别)传入的过程中,会先将参数赋值给一个const 类型的变量,然后再由该变量将值传给函数中的参数。这样一来,如果函数的参数类型不是const的,则会发生错误,因为const的变量不允许赋给非const的变量。假设有这样一个函数的
2017-09-23 01:30:03
217
原创 windows10下的caffe框架的编译
Caffe框架window上编译 本次主要是在windows10++vs2015+python3.5+cuda8.0下安装caffe框架,默认已经安装好了以上的软件。(一定要先安装好这些软件,如:python不在这之前安装,编译时就会发生找到不匹配的python版本或找不到python,该添加到环境变量的就要添加到环境变量)。
2017-09-19 02:03:51
980
原创 const的普通用法及其在对象中的使用
const的普通用法 在C++中,常数在编译时是放在代码段的,所以与其他的变量不同,常数是要在编译器做编译时就要知道值的。比如说: const int bufsize;//这是错误的写法。因为在编译时编译器不知道其值,所以正确的写法是在声明时就要赋值。 如果在其他的文件中含有一个叫做bufsize的变量,那么在当前的文件中做了这样的事情:extern const int bufsize;//这
2017-09-19 01:44:22
552
原创 引用的使用及其本质
引用的本质: 在C++中,为了避免像指针一样去访问某个变量,引入了引用这一类型。实际上,虽然确实在使用上没有了指针的复杂性,但是引用的本质实际上就是通过const指针实现的。所以,可以从这两个方面来理解引用: ü 引用是一个左值的标签,引用就代表着所引用的那个变量。可以通过引用改变所代表的那个变量的值。如: Int x = 10; Int &
2017-09-19 01:31:29
515
windows下caffe安装教程
2018-10-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人