自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++归纳整理

内联函数关键字inline功能简单、规模较小且使用频繁的函数在编译的时候将函数嵌入在调用它的地方,可以减少参数传递和控制转移等的开销定义位于类声明中的函数会自动被认为内联函数函数重载(多态)在同一个作用域中,两个及以上函数的函数名相同,但是参数类型或者参数数量不同,编译器将根据参数类型和参数个数自动匹配并调用,这就是函数重载。注意:编译器将类型引用和类型本身视为相同的参数。类的成员函数可以重载,不同类的同名函数不是重载extern “C”实现C++调用C语言的代码,..

2020-12-09 22:55:36 189

原创 数据结构

堆完全二叉树,大根堆的根节点的值大于子节点的值,小根堆根节点的值小于子节点的值堆插入操作(大根堆为例):插入新的节点,然后沿着新节点到根节点的路径执行一趟起泡操作,交换其与根节点的值;时间复杂度O(logn)堆删除操作:只能删除堆顶元素,删除堆顶之后,再将最后一个叶子结点删除,执行一次从根节点到叶子结点的操作,寻找最后一个叶子节点应该存放的位置;时间复杂度O(logn)建堆操作:对每个节点都执行一次堆插入操作;时间复杂度O(nlogn)堆初始化操作:从最后一个非叶子节点开始调整,时间复杂

2020-12-09 21:55:21 169

原创 Redis

RedisRedis是基于内存运行的高性能、支持数据持久化的key-value NoSql数据库,因为它基于内存运行,不需要读写磁盘,因此它读写速度非常快,被广泛用于缓存方向主要缺点:数据库容量受到物理内存的限制,适用于较小数据量的高性能操作和运算适用场景:会话缓存、全页缓存、队列、排行榜/计数器、发布/订阅支持的数据类型String:String类型数据的最大容量为512M,用于做一些复杂的计数功能的缓存 List:双向链表,关注列表、粉丝列表、消息列表等,List有序,适用于一些.

2020-12-09 21:51:08 209

原创 数据库事务 数据库索引 数据库优化

数据库三大范式 第一范式:原子性,每列都不可再分。举例:省市&地址,地址不够具体,无法按照省、市进行分类和查找 第二范式:唯一性,不存在部分依赖,每张表中都只能包含“一种”信息,举例:一张表中存在学生、课程和分数三个属性,存在冗余,可以分为学生表、课程表和成绩表三个表 第三范式:直接性,不存在传递依赖,每一列都应该和主键直接相关,不能包含其它表中的非主键列的信息。举例:一张表中存在学生、学校、学校地址三个属性,学校地址和学校直接相关,不和学生直接相关,存在冗余 存储过程

2020-12-09 21:40:19 188

原创 计算机网络

网络模型模型结构 模型 OSI七层模型:物理层、数据链路层、网络层、运输层、会话层、表示层、应用层;其中,物理层用于传输比特流,数据链路层用于根据MAC地址转发数据帧,网络层用于进行主机之间的通信,运输层用于进程之间的通信,会话层管理两个主机之间的会话进程,表示层处理两个通信系统中交换信息的表示方式,应用层是用户与网络之间的界面 五层模型:物理层、数据链路层、网络层、运输层、应用层 TCP/IP四层模型:网络接口层、网际层、运输层、应用层

2020-12-09 21:06:43 144

原创 SpringMVC执行流程

SpringMVC执行流程用户发送请求 DispatcherServlet:前端控制器,接收用户请求,并向HandlerMapping请求Handler HandleMapping:处理器映射 Handler:处理器,查找并返回HandleMapping执行类Handler HandlerAdapter:处理器适配器,DispatcherServlet向HandlerAdapter请求Handler执行 HandleAdaptor请求Handler调用方法,处理业务逻辑 Handler返回M

2020-12-09 19:55:11 73

原创 Spring & SpringBoot & SpringMVC

Spring,SpringMVC和SpringBoot的区别Spring:一套Java开源框架,提供了IOC控制反转和AOP面向切面编程两大核心功能Spring MVC:在Spring的基础上搭建的MVC框架,用于开发web应用,解耦Spring的组件SpringBoot:在Spring的基础上的一套快速开发整合包,简化了Spring的配置SpringMVC的各层的含义model层=entity层:存放实体类,与数据库中的属性保持一致mapper层=dao层:对数据进行持久化操.

2020-12-09 19:53:04 69

原创 MyBatis相关

概念 MyBatis是一个半ORM框架,它内部封装了JDBC,开发时只需要关注SQL语句本身。程序员直接编写原生态sql语句,可以严格控制sql执行性能,灵活度高 MyBatis从执行sql语句到返回results的过程 通过xml或注解的方式将要执行的statement配置起来 通过Java对象和statement中sql的动态参数进行映射生成最终执行的sql语句 MyBatis框架执行sql并将结果映射为Java对象返回 Dao/Mapper接口的工作原理

2020-12-09 19:44:37 151

原创 操作系统 线程 进程 IO模型

64位和32位的区别 运行能力不同:64位CPU一次可以处理8个字节的数据;32位CPU一次可以处理4个字节的数据 内存寻址能力不同:64CPU的最大寻址空间为2^64,理论可达16TB,64位CPU会设有不同的地址总线的数量,对应不同大小的寻址空间;32位CPU的最大寻址空间为4GB 运行软件不同:32位和64位CPU的指令集不同,64位操作系统可以兼容运行32位的软件,32位的操作系统不可以运行64位的软件 Linux下的线程 Linux实现的是基于核心轻量级进程的“

2020-12-09 19:41:55 246

原创 Java基础

C++&Java Java是更纯粹的面向对象的语言,C++为了兼容C还保留了一些面向过程的东西 Java经过编译得到字节码文件,再经过JVM的解释得到机器指令文件,因此可以跨平台运行;C++编译直接得到的是机器指令文件 Java有垃圾回收机制,可以释放未存活的Java对象占用的空间;C++创建对象之后需要调用delete方法销毁 C++中有多继承;Java只支持单继承,可以通过接口实现多继承 Java运行速度比C++更慢 String、StringB

2020-12-09 17:58:09 70

原创 Java注解

1.定义注解是Annonation接口的一个子接口,注解的作用是为当前读取该注解的程序提供判断依据。注解的具体实现类是Java运行时生成的动态代理类,通过反射获取注解时,返回的是Java运行时生成的动态代理对象。2.常见注解及其意义注解包括自定义的注解、JDK内置注解和第三方框架提供的注解2.1 JDK内置注解元注解修饰注解的注解@Target:表明作用范围,包括类、接口、字段、方法、参数、构造函数、局部变量、注解等 @Retention:生命周期,包括SOURCE(被编译器丢

2020-12-08 10:52:02 58

原创 Java反射机制

1.前提手动编写的类被编译后会得到一个Class对象,该Class对象保存在同名的.class文件中,可以表示类的相关信息。每个通过关键字class标识的类,在内存中有且只有一个对应的Class对象Class对象只存在私有构造函数,对应的Class对象只能由JVM创建和加载Class对象用于在程序运行过程中提供或获取某个对象的类型信息,对反射技术很重要2.反射机制Java反射机制的核心是在程序运行时动态加载类并获取类的详细信息,从而操作类或对象的属性和方法。本质是JVM得到Class

2020-12-08 10:36:56 65

原创 Spring AOP

1. 简介AOP是对面向对象编程OOP的补充和完善,用于处理系统中分布于各个模块的横切关注点,OOP适合定义纵向关系,但是不适合定义横向关系,无法解决减少出现在大多数代码中的日志管理和事务管理的代码的问题。AOP把软件系统分为了两个部分,核心关注点和横切关注点,业务处理的主要流程是核心关注点,横切关注点发生在核心关注点的各个位置处,包括权限认证、日志、事务管理等 。AOP利用“横切”技术,将影响了多个类的公共行为封装到一个可重用模块中,减少系统的重复代码,降低模块之间的耦合度,有利于未来的可维护性和

2020-12-08 10:23:56 78

原创 Spring IOC

1.Spring框架的优点 Spring是一个轻量级的非侵入式框架,不强制要求实现Spring框架中的接口或实现Spring框架中的类,使应用程序对框架的依赖最小化; 提供IOC容器。使用IOC容器管理对象以及对象之间的依赖关系,当对象之间的依赖关系发生变化时,只需要修改配置文件,不需要修改代码; AOP,面向切面编程,是对OOP的补充和完善,将所有的横切关注功能配置到切面中,通过配置的方式将横切关注功能动态添加到目标代码上,进一步实现业务逻辑和系统服务之间的分离; MV

2020-12-08 09:58:32 74

原创 线程同步之Synchronized&CAS&各种锁的介绍及对比

1.Synchronized1.1 简介Java的关键字,提供了并发场景下的数据可见性和原子性,保证线程安全1.2 应用方式修饰实例方法:对当前实例加锁,当两个不同的实例对象同时操作共享资源时,可能出现线程安全问题。public synchronized void increase()修饰静态方法:对当前类的Class对象加锁,当多个实例对象同时操作静态方法中的共享资源时,可以保证线程安全。线程A调用一个实例对象的非static synchronized方法,线程B调用类的stat

2020-12-06 23:22:49 488

原创 JVM优化

JVM常用参数-Xms:初始堆大小-Xmm:最大堆大小-Xmn:年轻代大小-Xss:线程栈大小,默认1M-XX:NewRatio:年轻代和年老代的比值-XX:SurvivorRatio:Eden和两个Survivor的比值-XX:UseParallel:年轻代设置并使用Parallel Scavenge-XX:UseConcMarkSweepGC:年老代设置并使用CMSJVM配置方面设置初始堆大小-Xms和最大堆大小-Xmm相同,避免了堆动态变化的过程;新生代尽量

2020-12-06 22:32:36 168

原创 JVM垃圾回收(GC)

1.简介垃圾回收器的主要工作区域是堆内存,JDK1.8之后JVM的堆区分为年轻代和年老代,这样做可以优化GC性能,因为大多数对象存活时间都比较短,对象新创建时将其放入年轻代,年轻代空间满了之后进行回收,称为Minor GC,回收时扫描年轻代,可以腾出来大量的空间。年老代内存占满之后执行Full GC回收年老代的内存空间。总内存=JVM内存+系统内存JVM内存=堆+元数据空间+虚拟机栈+本地方法栈+程序计数器堆=年轻代+年老代年轻代=Eden区+Survivor区,Survivor区分为大

2020-12-06 21:48:04 85

原创 JVM运行时数据区&Java内存管理JMM

JVM运行时数据区Java运行时数据区是指JVM运行过程中将数据分区域存储,强调对内存空间的划分。JVM运行时数据区包括线程共享区域和线程私有区域两大部分,线程共享区域主要是指堆和方法区(JDK8之后移除该区域,改为元数据空间),线程私有区域主要是指虚拟机栈、本地方法栈和程序计数器。堆:线程共享的内存区域,虚拟机启动时创建,是JVM中最大的内存区域,用于存储对象和数组,JDK8之后将字符串常量池也移动到了堆中,堆是垃圾收集器主要的工作区域; 方法区:线程共享的内存区域,存放JVM已加载的类的信

2020-12-06 17:38:23 104

原创 Java类加载器

Java类加载器图片来源类加载器自上至下的顺序分别为Bootstrap ClassLoader、Extension ClassLoader、APP ClassLoader和CustomClassLoader。 Bootstrap ClassLoader:引导类加载器,加载$JAVA_HOME/lib/rt.jar包中的类,C++实现 Extension ClassLoader:扩展类加载器,加载Java平台中扩展功能的一些jar包 APP ClassLoader:应

2020-12-05 09:57:48 134 1

原创 HashMap

原理存储key-value对,加快查找速度,是非线程安全的哈希散列,其底层原理是数组+链表+红黑树。红黑树是JDK1.8新加进来的,为了解决哈希冲突太严重导致查找时间复杂度变为O(n)的问题,当链表长度大于8时,链表会自动转换为红黑树,当链表长度小于8时,红黑树会自动退化为链表。注:红黑树是一棵高度平衡的二叉搜索树,时刻维持树高为logn,可以保证查找性能为O(logn),在插入或删除操作时通过“旋转”维持树高。hash冲突的解决方案开放地址法线性探测:从冲突位置依次向后寻找空闲位置,会

2020-12-05 09:40:41 87 1

原创 Java线程池

线程池作用降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。 提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。 提高线程的可管理性。线程池七大参数 corePoolSize:核心线程数量 maximumPoolSize:最大线程数量 keepAliveTime:非核心空闲线程最大存活时间 unit:存活时间单位 workQueue:阻塞队列 handle:线程池饱和策略事件 threadFa..

2020-12-04 23:33:21 75

原创 C++归纳整理

C++基础内联函数关键字inline功能简单、规模较小且使用频繁的函数在编译的时候将函数嵌入在调用它的地方,可以减少参数传递和控制转移等的开销定义位于类声明中的函数会自动被认为内联函数函数重载(多态)在同一个作用域中,两个及以上函数的函数名相同,但是参数类型或者参数数量不同,编译器将根据参数类型和参数个数自动匹配并调用,这就是函数重载。注意:编译器将类型引用和类型本身视为相同的参数。类的成员函数可以重载,不同类的同名函数不是重载extern “C”实现C++调用C

2020-11-10 15:17:57 173

原创 Python基础

1.矩阵和tensor转换# tensor转numpymatrix_numpy = matrix_tensor.numpy()# numpy转tensormatrix_tensor = torch.from_numpy(matrix_numpy)2.矩阵切割# eg:切割部分图像,前两个维度分别代表高和宽,第三个维度是RGB,全选clip_image = whole_img[left:right,top:bottom,:]3.根据由RGB组成的二维矩阵显示并保存图像imp

2020-10-19 14:40:23 187

原创 RuntimeError: can‘t alloc && pytorch——RuntimeError: CUDA RUN OUT OF MEMORY

起初程序在CPU上运行,报错RuntimeError: can't alloc,查了一下是内存分配问题,但是搜到解决这个问题的方法很少,用top指令查看内存使用情况,发现内存占用在以很快的速度增长,尝试安装内存管理相关的包,教程如下:https://discuss.pytorch.org/t/conv-module-in-forward-cant-alloc/94372/13,发现没有效果,尝试用del手动释放内存,依旧没有效果。之后由于CPU上运行速度很慢,所以转移到GPU上跑程序,但依旧遇到显存不够

2020-10-19 12:03:51 523

原创 根据二维RGB矩阵保存图片

import matplotlib.pyplot as pltfrom PIL import Imagepil_img = Image.fromarray(np.uint8(imageArray))pil_img.save(savePath)

2020-10-15 18:16:59 481

原创 Failed building wheel for llvmlite,Failed building wheel for opencv-python错误解决

在按照requirements.txt安装依赖包时,使用命令pip3 install -r requirements遇到了两个错误,分别是Failed building wheel for llvmlite,Failed building wheel for opencv-python(解决过程中忘记截图了,本文中出现的一些图来自其它博客)1.Failed building wheel for opencv-python这个错误的提示信息是 Problem with the CMake ins

2020-10-01 11:41:07 13401

原创 FANTrack代码阅读笔记

1.FANTrack系统结构图用于相似性学习的Siamese网络:bounding box分支:appear 分支关联网络相似图的计算(用于得到最后的追踪结果,训练过程种不需要这一步)2.FANTrack我理解的框架图与mmMOT不同的是,FANTrack先分别得到Bbox相似性矩阵和表观相似性矩阵,并基于Bbox和appear特征分别计算它们的权重,再进行加权融合得到最终的相似度矩阵。而在mmMOT中,是先融合特征,再使用融合后的特征计算相似性矩阵。FANTrack中也加入了对

2020-09-25 15:15:54 627 1

原创 mmMOT代码阅读笔记

1.mmMOT系统框架图2.我理解的框架图3.代码结构4.代码解读自上往下的顺序,从main文件开始,逐渐详细main.py程序主文件,用来训练和验证模型获取配置文件,追踪模型初始化global args, config, best_mota args = parser.parse_args() with open(args.config) as f: config = yaml.load(f, Loader=yaml.FullLoader)

2020-09-24 18:11:37 1353 5

原创 使用Open3D实现MOT结果的可视化

可视化部分的代码运行部分代码借鉴:(https://blog.csdn.net/Oreooooo/article/details/107281003?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2allfirst_rank_v2~rank_v25-1-107281003.nonecase)源码地址:https://github.com/xueyaqing/MOT_results_visualize介绍使用的工具是Open

2020-08-12 10:48:01 736 3

原创 基于GNN的3D MOT和轨迹预测联合框架论文阅读

Joint 3D Tracking and Forecasting with Graph Neural Network and Diversity Sampling论文下载地址这篇文章联合训练3D追踪和预测网络,同时完成追踪和预测任务,本篇读书笔记主要研究MOT任务。本文仅仅使用了运动特征,没有使用表观特征。本文使用双层LSTM获取历史轨迹的运动特征,双层MLP获取识别结果的运动特征,使用两层GNN网络融合节点特征,GNN网络的特征融合不独立计算,最终使用匈牙利算法得到匹配结果。亮点:与AB3

2020-07-28 14:53:23 1327

原创 AB3DMOT代码阅读

简介AB3DMOT是一个提出了准确、简单、实时的3D MOT框架。创新它不是在2D图像空间或者鸟瞰图视角下进行3D MOT,而是将Kalman过滤器拓展到了3D领域,包括3D 位置、尺寸、速度和方向。此外本文作者还提出了将KITTI 2D MOT评估扩展到3D MOT评估工具(并非像之前一样,把3D轨迹投影到2D然后再进行评估,这样可能会丢失信息)。提出了新的评估矩阵可以更好地评估追踪结果(解决单一 trajectory confidence threshold的问题,此评价方法平均了多个thr

2020-07-25 21:13:10 5000 2

原创 2D/3D MOT调研总结及归纳

两种主流方式Re-ID+Kalman过滤器(预测、更新)+匈牙利算法GNN方法基本步骤①检测 ②特征提取、运动预测 ③相似度计算 ④数据关联检测:上游框架,检测质量对追踪质量的影响最大检测用于计算车辆/行人之间的特征,区分前景和背景特征提取,运动预测:第t帧识别结果和前t-1帧轨迹特征的提取,包括运动特征和表观特征两种运动特征:匀速运动模型、LSTM(轨迹预测)&MLP(第t帧)表观特征:Re-ID(行人重识别)、CNN、光流运动预测:Kalman滤波、联合概率数据关联、

2020-07-24 15:36:31 1204

原创 强化学习笔记整理

强化学习:自动进行决策并且可以做连续决策,包括agent、状态、行动、奖励四部分,目标是获得最多的累计奖励强化学习的反馈有延时,可能要走很多步才知道某步的选择是好是坏 强化学习面对的输入总是在变化,每次做出的行为都会影响下次决策的输入 在exploration(尝试不同的)和exploitation(尝试最有效的)之间做权衡学习方法基于值函数的学习方法原理:求解最优策略等价于求解最优的值函数值函数选取策略更新的方式:贪婪策略:确定性策略,对已知知识的利用 策略:探索+利用,有利于

2020-07-09 18:23:07 130

原创 《机器学习(西瓜书)》——线性模型

1.线性回归如果只有一个输入属性x,则,使用最小二乘法求解模型最优解即可。如果有多个输入属性,,当X时满秩矩阵或者正定矩阵矩阵时,有解析解.对数线性回归:,形式线性回归,是输入空间到输出空间的非线性映射2.对数几率回归——分类任务对数几率函数:用极大似然法估计w和b的值3.线性判别分析LDA给定训练样例集,将样例投影到一条直线上,使同类样例投影点尽可能靠近,异类样例投影点尽可能远离。用拉格朗日对偶问题求解,具体过程不再赘述当两类数据同先验、满足高斯分布

2020-07-09 16:20:04 210

原创 PV-RCNN学习笔记

本文提出了一个基于LiDAR点云进行3D目标识别的框架PV-RCNN。系统体系结构图如下:该框架融合了voxel-based和point-based的优点进行特征学习,提出了一个双阶段的体系结构,分别用voxel CNN生成目标提议并对目标提议进行优化。在优化的过程中,本文将整个点云抽象为一组关键点,再用关键点的特征增强提议,丰富提议的上下文信息,得到更精确的预测结果。本文最精彩的地方是关键点的获取,这样既能达到优化提议的目的,又能节省计算和内存资源。此外本文在关键点特征融合和提议优化步骤都使用了多尺

2020-07-09 10:16:11 2624

原创 深度学习笔记整理(六)——深度学习的应用

1.物体识别深度学习之前:尺度不变特征变换方法和支持向量机等机器学习方法组合应用; 2012年:多伦多大学研究团队提出CNN、ReLU、DropOut的使用,可以自动捕捉到多个方向的边缘和颜色渐变、网纹图案等; 2013年:反卷积网络的提出,可以恢复卷积结果,直观确认训练后网络的好坏; 2014年:深度神经网络的提出,22层的GoogleNet和19层的VGG。2.物体检测确定图像中物体的位置的方法。分类:事先限定检测对象:人脸检测、行人检测; 非类别限定对于非类别限定的物体检测

2020-06-11 18:19:59 166

原创 深度学习笔记整理(五)——提高泛化能力的方法

1.训练样本数据增强方法:通过对样本图像平移、旋转或镜像翻转,增加样本数量; 优点:使有限的数据得到最大程度的有效利用。使用大规模数据集ImageNet:基于WorldNet,按层级图像分类,动物植物食物等,末梢节点包含多张对应图像; Place:在SVNDatabase基础上的扩展,包括多种场景,室内、室外、交通工具、建筑物等。其它设置图像中间区域为感兴趣区域,可以防止变换后的样本偏离图像区域; 对样本会产生形状变化的情况,如手写字符识别,先变形再数据增强,可以使用弹性变换算法,

2020-06-11 11:54:42 5432

原创 深度学习笔记整理(四)——自编码器

1.自编码器基本原理概念一种基于无监督学习的数据维度压缩和特征表达方法; 通过不断调整参数,重构经过维度压缩的输入样本,重构结果和输入样本的模式相同,重构结果的图像相对模糊。应用构建一种能够重构输入样本并进行特征表达的神经网络; 训练多层神经网络时,对样本训练得到参数初始值,当神经网络层数较多时,会面临梯度消失的问题,可以通过自编码器逐层训练参数并计算参数初始值。原理编码器: 解码器: 自编码器的本质是确定参数的过程,根据计算 使用误差反向传播算法调整参数值 编码器和解码

2020-06-10 19:39:59 1155

原创 深度学习笔记整理(三)——卷积神经网络

1.神经认知机模型由负责对比度提取的G层,负责图形特征提取的S细胞层和抗变形的C细胞层交替排列组成。经过交替排列,反复迭代,底层提取的局部特征会逐渐变成全局特征; 因输入模式变化引起的畸变可以很好地被C细胞消除,对变形有较好的稳健性。2.卷积神经网络CNN基于人类视觉皮层感受野的结构得到的模型,由输入层、卷积层、池化层、全连接层、输出层组成,接下来分别具体介绍不同层。卷积的本质:如果全部都是全连接层,参数太多,无法调整,无法实现,因此改用卷积核,共享参数,减少参数量。卷积层由输入

2020-06-09 20:47:05 732

原创 深度学习笔记整理(二)——神经网络

1.神经网络的历史第一阶段(1940-1970)1943年,形式神经元模型的产生(M-P模型); 1958年,感知器的提出(经过训练确定神经元的连接权重); 1969年,提出感知器无法解决线性不可分问题。第二阶段(1980-1990)1980年,神经认知机的提出; 1982年,Hopfield模型的提出; 1986年,误差反向传播算法的提出(利用多层感知器解决线性不可分问题); 1989年,卷积神经网络的提出。2.M-P模型假设有三个参数,相应的M-P模型如下: 其中

2020-06-08 11:33:17 691

空空如也

空空如也

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

TA关注的人

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