自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(88)
  • 资源 (1)
  • 收藏
  • 关注

原创 Stereo-Detection:YOLO v5与双目测距结合,实现目标的识别和定位测距

Stereo-Detection 是一个传统的SGBM深度测距+yolov5目标检测,并部署在Jeston nano的开源教程。它致力于让更多的大四学生毕业,以及让研一学生入门

2023-04-20 09:35:45 5054 5

原创 ECCV 2022|DynamicDepth:动态场景下的多帧自监督深度估计

🏆本文别名DynamicDepth,如本文的名字所示,本文着重处理的就是**动态场景**下的多帧自监督深度估计问题。因为MVS在动态场景下会失效,所以在动态区域的多帧深度并不可靠。现在的已有方法例如ManyDepth,利用teacher-student网络结构,让多帧部分的网络在**不可信区域**向单帧部分的网络学习,但是所谓不可信区域的判断准则仅仅是依靠多帧深度和单帧深度的差异来计算的,不一定准确。所以DynamicDepth提出的核心论点就是显示地构建动态区域的优化。

2023-01-01 17:08:16 1979

原创 CVPR 2017|SfMLearner:单目视频中深度和姿态估计的无监督算法

🏆作者提出了一个单目相机的视频序列进行深度估计与运动估计,作者的方法是完全无监督的,端到端的学习,作者使用了单视角深度网络和多姿态网络,提出了一个图像(predict)与真实的下一帧(goundturth)计算loss,作为无监督的依据,实现无监督学习。使用KITTI数据集证明了他们的有效性:1.合成的深度图与监督学习的方法是可比的;2. 在可比较的输入设置下,姿势估计与已建立的SLAM系统相比性能优越

2022-12-28 22:04:07 2078 3

原创 CVPR 2017|Deep Feature Flow for Video Recognition论文复现(pytorch版)

深度卷积神经网络在图像识别任务中取得了巨大的成功。然而,将最先进的图像识别网络转移到视频上并非易事,因为每帧评估速度太慢且负担不起。我们提出了一种快速准确的视频识别框架——深度特征流DFF。它只在稀疏关键帧上运行昂贵的卷积网络,并通过流场将其深度特征映射传播到其他帧。它实现了显著的加速,因为流计算相对较快。整个体系结构的端到端训练显著提高了识别精度。深度特征流是灵活和通用的。在目标检测和语义分割两个视频数据集上进行了验证。它极大地推进了视频识别任务的实践。

2022-12-27 19:56:19 1549 2

原创 基于不同监督强度分类的语义分割综述:A Breif Survey on Semantic Segmentation with Deep Learning

语义分割是计算机视觉中一项具有挑战性的任务。近年来,深度学习技术的应用大大提高了语义分割的性能。人们提出了大量的新方法。本文旨在对基于深度学习的语义分割方法的研究进展进行简要综述。全文将该领域的研究按其监督程度进行了分类,即完全监督方法、弱监督方法和半监督方法。文章还讨论了当前研究的共同挑战,并提出了该领域的几个有价值的发展研究点。本综述旨在让读者了解深度学习时代语义分割研究的进展和面临的挑战。

2022-10-20 18:23:46 1820 1

原创 【双目视觉】 SGBM算法应用(Python版)

我们可以通过cv.remap()函数来将img2映射到img1对应位置上并合成。:重映射,即把一幅图像内的像素点放置到另外一幅图像内的指定位置,俗称“拼接”四种模式,它们的精度和速度呈反比,可根据情况来选择不同的模式.自制的标定数据集,必须用自己相机拍摄照片制作数据集。函数为opencv集成的算法;会降低精度,但提高速度。

2022-08-22 11:56:59 19076 34

原创 STM32学习笔记(4) 高级定时器-两路互补的PWM输出(带死区和刹车控制)

目录1.实验目的2.实验效果3.理论部分3.1时钟源3.2时基单元3.3输入捕获4.程序流程4.1GPIO初始化结构体4.2时基初始化结构体4.3输出比较结构体4.4刹车和死区结构体的初始化5.程序源码1.实验目的使用高级定时器,输出两路互补的PWM输出,需要有带死区和不带死区两种情况2.实验效果图1:不带死区的两路互补的PWM输出图2 :带死区的两路互补的PWM输出3.理论部分3.1时钟源内部时钟(基本定时

2022-01-11 20:43:03 16775 3

原创 C++好项目:GPU服务器管理面板

对于搞深度学习的学生,如果你是使用公共 GPU 服务器集群的话,也许这个项目对你有帮助 它可以让你在手机上就查看服务器的显存大小, 无需 ssh 登录服务器, 然后输入 nvidia-smi 命令同时也是学习 C++ 的一个好项目,难度不大(因为我也是菜鸟😂)

2025-03-27 16:36:41 986

原创 mprpc框架代码详解

经过proto插件自动生成monitor_info.pb.h和monitor_info.pb.cc文件,里面会有MonitorManager类(供服务端使用)和MonitorManager_Stub 类(供客户端使用)在这个类中,需要定义MonitorManager_Stub的指针stub_ptr_,初始化的时候需要new MprpcChannel()自动生成的MonitorManager类中包含两个我们定义的函数,它是虚函数,意味着我们不能直接使用这个类,而是需要重写这个类。

2024-12-26 16:45:01 1037

原创 rpc中常用的数据格式:Protobuf 图文详解

protobuf也叫protocol buffer,是google 的一种数据交换的格式,它跨语言、跨平台。可以实现多种语言文件的数据传输实现(java、c#、c++、go 和 python 等),如一个cpp程序和一个python程序的数据传输。由于它是一种二进制的格式,比使用 xml 、json进行数据交换快许多。所以它的效率和兼容性都很优秀,可以把它用于分布式应用之间的数据通信。test.pb.h初看有些复杂,但其实都是有规律的。

2024-10-12 20:59:58 1521

原创 TinyWebserver的复现与改进(7):日志系统

日志类包括但不限于如下方法,公有的实例获取方法初始化日志文件方法异步日志写入方法,内部调用私有异步方法内容格式化方法刷新缓冲区class Logpublic:// 返回log对象的指针/*instance只能初始化一次,所以即便调用 get_instance() 函数多次,代码static Log instance;只执行一次,即 instance 的地址不会被改变*/private:// log文件名// 路径名FILE *m_fp;

2024-09-11 18:43:25 883

原创 webserver使用webbench工具连续压测失败

使用Webbench对服务器进行压力测试,创建1000个客户端,并发访问服务器10s。结果显示仅有少数几个请求被成功处理,0个请求处理失败,性能很差,服务器也没有返回错误。此时,从浏览器端访问服务器,发现该请求也不能被处理和响应,必须将服务器重启后,浏览器端才能访问正常。

2024-08-26 17:34:44 595

原创 TinyWebserver的复现与改进(6):定时器处理非活动连接

如果客户端长时间没有动作,会占用了许多连接资源,严重影响服务器的性能。因此需要通过实现一个服务器定时器,处理这种非活跃连接,释放连接资源。

2024-08-17 17:32:37 773

原创 TinyWebserver的复现与改进(5):HTTP报文的解析与响应

HTTP 协议是基于 TCP/IP 协议之上的应用层协议,基于 请求-响应 的模式。HTTP 协议规定,请求从客 户端发出,最后服务器端响应该请求并返回。换句话说,肯定是先从客户端开始建立通信的,服务器端 在没有接收到请求之前不会发送响应。

2024-08-14 17:26:29 944

原创 TinyWebserver的复现与改进(4):主线程的具体实现

今天我们将采用主从Reactor多线程模式,这是是大多数高性能服务器采用的模式主从Reactor多线程模式要求主线程(I/O处理单元)只需负责:1. 监听文件描述符上是否有事件发生,2. 有的话就立即将该事件通知工作线程(逻辑单元),3. 将 socket 可读可写事件放入请求队列,交给工作线程处理。除此之外,主线程不做任何其他实质性的工作。读写数据,接受新的连接,以及处理客户请求均在工作线程中完成。

2024-08-12 20:44:29 1182 1

原创 TinyWebserver的复现与改进(3):线程同步机制类封装及线程池实现

线程池有许多种实现方法,最容易想到的一种是每有一个新任务、就开一个新线程执行。这种方式最大的缺点是线程数不固定,试想如果在某一时刻有1000个并发请求,那么就需要开1000个线程,如果CPU只有8核或16核,物理上不能支持这么高的并发,那么线程切换会耗费大量的资源。为了避免服务器负载不稳定,这里采用了固定线程数的方法,即启动固定数量的工作线程,一般是CPU核数(物理支持的最大并发数),然后将任务添加到请求队列,工作线程不断主动取出请求队列的任务执行。

2024-08-11 13:02:44 895

原创 TinyWebserver的复现与改进(2):项目的整体框架

本文介绍了项目的总体框架,理清了工作顺序,下一步将会按照这个顺序梳理代码。

2024-08-10 21:11:14 1216

原创 C++ 中的静态局部变量,静态全局变量,静态成员变量,静态成员函数

在 C++ 语言中,static 关键字用于创建静态变量。与普通的局部变量和全局变量相比,静态变量有一些独特的特性和应用场景。静态变量分两种,一种是函数内的静态变量(静态局部变量),一种是全局的静态变量(静态全局变量),其特点是变量定义时带有 static 关键字。例如:局部静态变量函数内的静态变量也称为局部静态变量,其作用域只限于函数内部,别的函数不能访问。局部静态变量存储在全局数据区,只允许初始化一次,但它的生命周期和全局变量一样,自它们被定义时就一直存在,直到程序结束时才会被销毁。不会随着函数的结

2024-08-10 20:18:30 1413 2

原创 TinyWebserver的复现与改进(1):服务器环境的搭建与测试

通过项⽬作者的指示,我们终于把项⽬跑起来了,然后就可以对作者的项⽬进⾏功能测试了。

2024-08-09 22:58:09 651

原创 【简易版tinySTL】 红黑树-删除

在STL中,我们常分为 RL+RR、LR+LL两组,因为RR和LR后面的步骤都是一样的,RL和RR后面的步骤都是一样的。如下图所示,我们要删除一个15,实际上是找15的右子树上,最小值(17),替换15,实际上,就是删除17。此时原来的17就变成了双黑结点,此时兄弟结点是红色(34)判断是RR类型还是RL类型,这是因为二者的变色规则不一样。兄父变色,朝双黑方向旋转,保持双黑继续调整。则兄父变色:23变成红色,34变成黑色。在上述代码中,我们使用一个布尔变量。因为双黑结点在左边,我们将进行左旋。

2024-07-11 10:13:22 368 1

原创 【简易版tinySTL】 红黑树- 定义, 插入, 构建

对于一个平衡二叉搜索树,左子树高度为4,右子树高度为2,它们的高度差为2,破坏了平衡性(高度差<2才算平衡,因此需要调整二叉树使其平衡)当结点14右旋时,由于有右子树17,会和结点9冲突,阻碍旋转,我们需要将"冲突的右孩变左孩",即将结点9连在被旋转点14的左孩子上。当结点5左旋时,由于有左子树3,会和结点6冲突,阻碍旋转,我们需要将"冲突的左孩变右孩",即将结点6连在被旋转点5的右孩子上。假设我们要依次插入:17、18、23、34、27、15、9、6、8、5、25。

2024-06-30 21:52:20 679

原创 【简易版tinySTL】 哈希表与移动语义

哈希表(HashTable)是一个重要的底层数据结构, 无序关联容器包括内部都是基于哈希表实现。

2024-06-30 21:49:49 424

原创 【简易版tinySTL】 deque容器

把取值范围限定在[0,capacity-1]这个区间,如下图:当frontIndex = 3,在后面时,如果index = 2,capacity = 4,则(3+2)% 4 = 1;如下图:当frontIndex = 0,在后面时,如果index = 2,capacity = 4,则(0+2)% 4 = 2;当数组容量不足以容纳更多元素时,创建一个新的数组,将现有元素复制到新数组中,释放旧数组,并更新相关成员变量。需要注意的是, 原来的数组中, 逻辑上索引为0的位置(也就是。都是常量,所以输入形参是。

2024-06-20 19:45:26 669

原创 【简易版tinySTL】 vector容器

如果 p 是指向数组 arr 的指针,那么也可以使用 p[i] 来访问数组元素,它等价于。内存分配策略不同、无范围检查和异常处理、只实现了一些基本的功能,例如插入、删除、访问元素等,而没有涵盖。会分配一块新的内存空间,将原有元素复制到新的内存中,然后释放原内存。构造函数:初始化Vector对象,默认设置指针悬空,容量设置为0,当前元素的数量也为0。通常会将容量翻倍,以避免频繁的内存分配操作,从而减少系统开销。下标操作符重载,允许通过下标访问Vector中的元素。时,arr是指向数组首地址的指针。

2024-06-20 19:42:34 1144

原创 LeetCode239.滑动窗口最大值

给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。并返回滑动窗口中的最大值。

2024-04-19 16:22:43 407 1

原创 C++Primer3.2 标准类型string

读取操作时,string会自动忽略开头的空白(即空格符、换行符、制表符等),然后从第一个真正字符开始读起,直到下一处空白为止。因此,如果输入是" Hello World ",那么输出将是”Hello“,不允许有空格。值得注意得是,如果string对象、‘a’、“b”在同一条语句中使用,必须要保证+号两侧至少有一个string对象.如果上述输入是" Hello World ",那么输出将是”HelloWorld “,也不允许有空格。,如果在表达式中混用了有符号和无符号数(如。

2024-04-18 17:56:40 765

原创 C++Primer2.4 const限定符

可以从右往左阅读,离curErr最近的符号是const,说明curErr本身是一个常量,const下一个是*,说明curErr是一个常量指针,最后int确定了curErr指向的是一个int类型的变量。const类型的变量与正常的变量相似,都能参与加减乘除运算,只是const类型变量的值,不允许被改变。与引用一样,可以令指针指向常量,则称为指向常量的指针(或者指针常量),它要求不能改变所指的对象的值。把*放在const关键字前,说明指针是一个常量,表示不变的是指针本身,而不是指向的那个值。

2024-04-15 11:19:06 325

原创 C++Primer2.1 基本内置类型

char、unsigned char和char unsigned(等同于unsigned char)在C语言中都是用于表示字符或字节的数据类型,但它们在表示范围上有所不同。char可以表示正负字符或字节值,而unsigned char(或char unsigned)只能表示非负的字符或字节值。计算机中以比特(bit)序列存储数据,每个bit的值只能是0或1,形成如00011101001010……存储的基本单元称为“字(word)”,它通常由4个或8个字节组成,如1个int数据就是1个word。

2024-04-12 13:22:52 545

原创 上海大学通信829考研踩坑记录

电路的话我是跟着那个晋程班的师兄来看的,然后电路其实我当时是刷的西电的真题,因为是第一年,所以说就没有参考。我猜测就是今年上岸的这些学硕,平均分专业课是一百零几左右,然后的话主要是因为有三点嘛,第一点就是啊,他那个试卷的第一道大题信号幅值你没有给,然后算起来会有一点点的困难,然后还有信号,第四题第三问有一个初始状态他没给,然后最后都算不出来。我的模拟题是没有刷过的,我平时的真题分数大概是八十到一百一这个区间,所以说呢,我数学其实是学的相当的不好的,那么就由此引出了我这么一个观点,就是你数学一定要跟上进度。

2024-04-01 11:47:28 1736 3

原创 手把手带你在Linux上安装带GPU加速的opencv库(C++版本)

本文旨在详细指导Linux用户在系统上安装带有GPU加速功能的OpenCV库,专注于C++版本。我们将从下载OpenCV安装包开始,逐步进行环境依赖的安装,并最终完成OpenCV库的安装和配置。通过本文,读者将能够充分利用GPU加速功能,提升OpenCV图像处理的速度和效率。

2024-02-19 13:58:36 4504 5

原创 数据溢出signed integer overflow 2000000000+1000000000 cannot be represented in type ‘value_type‘

在加法运算中,如果操作数的类型不同,较小的类型会被提升(转换)为较大的类型。为了避免这种情况,可以使用更大范围的整数类型进行运算,或者在运算之前检查是否可能发生溢出。类型能够表示的最大值,并且加法运算导致了溢出,那么结果将是未定义的(在大多数系统中会发生溢出)。类型的变量时,这个表达式的运算过程会涉及到类型提升(或称为类型转换)。需要注意的是,类型提升通常是无损的,意味着在这个过程中不会丢失数值信息。类型提升是自动进行的,它保证了值在赋给更大范围的变量时不会丢失信息。,在赋值之前,加法运算得到的。

2024-02-04 10:13:14 7562 1

原创 运算符重载之前置递增和后置递增

在C++中,运算符重载允许程序员自定义运算符的行为,以适应特定的类或对象。这在许多情况下都很有用,包括处理复杂的数学运算、自定义数据结构等。 前置递增和后置递增运算符的重载是运算符重载的常见示例。这两个运算符通常用于增加变量的值。

2024-01-04 20:51:10 1712 1

原创 自然语言处理基本任务综述

在自然语言处理中,分词(Tokenization)是指将自然语言文本中的连续字符序列划分为一个个有意义的符号(token)的过程。分词是文本预处理中的一项基础任务,它是自然语言处理中的一环,而且是非常重要的一环

2023-04-24 16:12:35 2551

原创 AAAI 2023MOVEDepth:基于单目线索和速度指导的自监督多帧深度估计

MOVEDepth不再使用MonoDepth的decoder直接从cost volume中解码出深度,而是follow MVS领域的范式,从cost volume中回归得到深度,MOVEDepth认为显示利用cost volume能够最大程度保留几何信息,得到更准确的深度估计结果。然而如ManyDepth和DepthFormer中提到的,直接从cost volume回归出深度结果并不理想,这是因为在单目多帧深度估计领域,有很多“不确定因素”,例如相机静止(static frame),弱纹理、反光区域

2023-04-20 09:22:02 743

原创 2020-2022年美赛C题信件汇总

2020-2022年6篇美赛O奖C题写信部分的翻译

2023-03-30 20:29:58 9272

原创 CVPR 2021|Deep-SfM-Revisited:DeepLearn+经典SfM流程

🏆前言:文章回顾了深度学习在SfM中的应用,并提出了一种新的深度两视图SfM框架。该框架结合了深度学习和经典SfM几何算法的优点。在各个数据集上取得较好的结果。

2022-12-30 13:20:05 2094

原创 CVPR 2019|APCNet:基于全局引导的局部匹配度自适应金字塔上下文网络

本篇论文发现了一种全局引导的局部匹配度(Global-guided Local Affinity (GLA))特征,用于构造上下文语义信息。基于此特性,作者设计了自适应上下文模块,构建自适应金字塔上下文网络(APCNet)。在不使用COCO数据集预训练模型的情况下,获得了2019年PASCAL VOC2012最高的分数84.2%

2022-12-08 23:51:41 822

原创 CVPR 2019|CFNet:语义分割中的共现特性

🏆本篇论文提出了Coocurrent Feature Model,该模型可以利用整体场景中共现特征,辅助预测目标特征。该模型在Pascal Context 达到54.0%mIOU,在Pascal VOC 2012和ADE20K分别达到87.2%以及44.89%mIOU。

2022-11-13 11:22:12 985

原创 图像分割经典论文调研:DeepLabV3、DeepLabV3+、DenseASPP

本文选取了三篇图像分割初期的经典论文:DeepLabV3、DeepLabV3+、DenseASPP,重点关注每篇论文要解决什么问题、针对性提出什么方法、为什么这个方法能解决这个问题

2022-11-03 20:56:08 2975

原创 图像分割经典论文调研:DilatedNet、DeepLabV2、HDC/DUC

引言:本文选取了三篇图像分割初期的经典论文:DilatedNet、DeepLabV2和HDC/DUC,重点关注每篇论文要解决什么问题、针对性提出什么方法、为什么这个方法能解决这个问题

2022-10-31 20:13:35 1433

OpenCV4图像预处理汇总

博客Opencv4专栏汇总,供自己学习

2022-03-27

空空如也

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

TA关注的人

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