自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(58)
  • 资源 (3)
  • 收藏
  • 关注

原创 python线性规划(linear programming)与分配问题(assignment problem)—— linear_sum_assignment的使用

scipy.optimize.linear_sum_assignment(cost_matrix)主要讲解这个函数的功能和使用。它可以抽象成这样一个数学问题。我遇到的场景是这样,检测中有9个ground truth,我预测了10个检测,他们和每个ground truth的IOU矩阵如下:iou_mat: [[0. 0. 0. 0. 0.95522388 0.62583519 0.47330961 0. 0.

2021-09-13 22:10:38 5897 1

原创 pytorch 入门教程 & 常用知识整理

Tensortorch.cat 与 torch.stacktorch.cat不会增加新的维度,原来几个维度,还是几个维度torch.stack会增加一个新的维度,让n维的tensor变成n+1维x1_torch = torch.zeros(3,1)y1_torch = torch.ones(3,1)xy_1 = torch.cat([x1_torch, y1_torch], dim = 1)xy_2 = torch.stack([x1_torch, y1_torch], dim=1)xy

2021-09-06 10:34:59 310

原创 深度学习优秀博客、学习资源汇总(持续更新ing……)

1.基础理论1.1 优化算法1.1.1 从 SGD 到 Adam —— 深度学习优化算法概览(一)介绍了各个优化算法的公式发展1.1.2 一个框架看懂优化算法之异同 SGD/AdaGrad/Adam介绍各个优化算法的公式,讲的更好一点,但公式不如1.1.1准确Adam那么棒,为什么还对SGD念念不忘 (3)—— 优化算法的选择与使用策略讲了优化算法的问题,和作者的一些trick...

2021-08-24 15:15:04 235

原创 物体检测综述(RCNN系列和YOLO系列)、发展历程、学习资源汇总

1 二阶段检测的代表文章faster-rcnn的好文章懒人元 faster rcnn知乎 一文读懂Faster RCNN2 检测中常用模块2.1 FPN上下文Feature Pyramid Networks for Object Detection 论文笔记对FPN的原理进行了分析,主要是论文解读。一文看尽物体检测中的各种FPN对2020年以来的各种FPN结构进行了总结对比。先记录学习中的几个问题:1、为啥yolov3的FPN结构后对应的Cnov层那么多?...

2021-08-03 11:56:28 848

原创 deeplab系列对比总结 & deeplabv3+的实验测试

分割中的主要问题DCNNs中语义分割存在三个挑战:连续下采样和池化操作,导致最后特征图分辨率低,丢失位置信息图像中存在多尺度的物体空间不变性导致细节信息丢失deeplab v1问题的引入:关于DCNN的大量工作表明,采用端到端的训练方式,使得模型对图像的变换有着较好的不变性,但这一点却妨碍了分割任务中的定位。经过研究发现,在深度CNN中对于语义分割主要存在两个挑战:一个是重复池化与下采样使得图像的分辨率大幅降低,信息发生了丢失,不利于恢复;另一个是对图像转换的不变性影响了定位解决方案:

2021-03-11 18:04:31 4487 4

原创 Learn C++学习笔记:第M章—std :: weak_ptr解决std :: shared_ptr的循环依赖问题

为什么需要weak_ptr之前介绍的std::shared_ptr可以彼此共同管理一块内存,比喻的话,有点像链表,一个指针接一个指针,然后连接到内存上,释放一个指针这个链表少一个节(指)点(针)。所以潜在的问题就是如果是循环链表怎么办?具体举例如下:#include <iostream>#include <memory> // for std::shared_ptr#include <string> class Person{ std::string m

2021-02-26 18:55:03 404

原创 Learn C++学习笔记:第M章—shared_ptr智能指针:怎么让智能指针之间可以进行赋值

前面的文章已经提出了一个关键点,两个unique_ptr智能指针之间无法进行值传递,但是明显很多时候需要多个指针管理同一个内存。这个时候shared_ptr就应运而生了。每种智能指针都是以类模板的方式实现的,shared_ptr也不例外。shared_ptr<T>(其中 T表示指针指向的具体数据类型)的定义位于<memory>头文件,并位于 std 命名空间中。所以需要在使用前包含:#include <memory>1、shared_ptr的初始化a. 通过如

2021-02-26 16:38:26 2438

原创 Learn C++学习笔记:第M章—最常用的智能指针:std::unique_ptr & std::make_unique

1、基本使用介绍前面已经介绍了很多智能指针了,它就是一个类。这么重要的类当然不需要我们手写,有现成的可以用,它就是:std::unique_ptr①、所在头文件这是一个封装好的类,包含在头文件<memory>中。②、初始化初始的方式也跟正常的类使用一样:std::unique_ptr<YourClass> res{ new YourClass() };③、智能指针之间的复制std::unique_ptr是实现了移动语义的功能的并且禁用复制语义,在智能指针和智能

2021-02-24 21:34:41 1057

原创 Learn C++学习笔记:第M章—移动语义和复制语义:为什么移动语义效率更高 & 怎么进行移动std::move

移动语义效率更高前面讲到,之所以采用移动,原因①是为了避免多个智能指针指向同一个内存,导致的释放问题。除了这个优点之外,还有原因②移动语义还比复制语义多一个优点,效率更高。具体来看一个例子:template<class T>class Auto_ptr3{ T* m_ptr;public: Auto_ptr3(T* ptr = nullptr):m_ptr(ptr){} ~Auto_ptr3(){delete m_ptr;} // 复制语义,进行深拷贝,避免重新释放内存

2021-02-22 16:08:55 580

原创 Learn C++学习笔记:第M章—智能指针和移动语义

【前言】智能指针和移动语义是迄今为止,最难理解的两个概念。网上查的资料也都解释的要么太高深,要么泛泛为止,反复阅读了好几遍才恍然大悟,领会之后发现其实也没有那么难。智能指针为什么和移动语义有关系智能指针的概念出现其实是非常合理,毕竟有的时候会用new开辟空间,如果这块地址不及时释放,就会造成内存泄漏程序崩溃,所以如果这个指针可以自己在该释放的时候释放,不用人为管理那么多指针,岂不美哉,这就是智能指针。那么移动语义是什么?它和智能指针是啥关系?这个问题的关键就在于,指针可能被用于赋值,传递等,一个智

2021-02-18 16:58:05 193

原创 Learn C++学习笔记:第十二章—模板template类和函数的特化(定制)

一、函数模板定制函数模板可以实现对于不同的类型复用同一套代码,但是某些情况下,某些类型需要专门去实现,不能套用模板,举例比如对于数字相加

2021-01-09 17:39:48 577

原创 Learn C++学习笔记:第十二章—模板template的使用:模板函数、模板类

template编程是C++中非常重要的技巧,一些常见的stl模板就是用template写的,比如vector等,template是一种非常实用的技巧。因为C++里面的类和函数参数都要求类型,最简单的例子就是对于int、float、double这种类型,假如相同一个比大小的max函数,就得写三个,并且除了类型不一样,代码基本一样,所以一种需求就强烈诞生,把类型抽象出来。除了上面的例子,在使用中一般还有如下扩展:对于类能不能使用template?对于写好的一个模板函数,但是某个类型不适用,需要专门重

2020-12-28 18:06:18 208 2

原创 Learn C++学习笔记:第十二章—动态转换 dynamic_cast

多态允许我们把指向基类的指针可以访问派生类的内容,但是假如我们想访问的派生类中的函数不是重写的基类的虚函数,而是派生类自己的函数呢?上例子更清楚明白一点:#include <iostream>#include <string> class Base{protected: int m_value; public: Base(int value) : m_value(value) { } virtual ~Base() {}}; class De

2020-12-12 18:39:35 279

原创 Learn C++学习笔记:第十二章—抽象类、虚基类的定义、用途

抽象类,why?在前面的一直使用的animal例子里,子类需要重写父类的虚函数。那么,假如我子类忘写了,岂不是就报错了。有没有办法,强制子类必须重写虚函数?这就是抽象类的意义。进一步,假如我们写了一个模板接口,继承该模板的子类都重写规定的函数,这就是由抽象类进一步成为接口类。抽象类的定义纯虚函数如果子类都需要重写虚函数,父类的虚函数就不需要定义函数主体了,这时候父类的虚函数就可以是纯虚函数了。定义虚函数只需要给函数加上=0即可。virtual int getValue() const = 0;

2020-12-12 17:00:56 519

原创 Learn C++学习笔记:第十二章—虚拟表

12.5 虚拟表这个知识点是面试常问知识点。C++虚函数表剖析这篇文章写得比较清晰易懂。本文基本参考这篇博客和Learn C++。基础概念:类的虚表虚表(虚函数表)是一个指针数组,其元素是虚函数的指针,每个元素对应一个虚函数的函数指针。需要指出的是,普通的函数即非虚函数,其调用并不需要经过虚表,所以虚表的元素并不包括普通函数的函数指针。虚表内的条目,即虚函数指针的赋值发生在编译器的编译阶段,也就是说在代码的编译阶段,虚表就可以构造出来了。每个包含了虚函数的类都包含一个虚表。我们知道,当一个类(

2020-12-07 21:47:38 270

原创 Learn C++学习笔记:第十二章—虚函数基础知识:语法、作用、使用情况

12.1 虚函数的作用虚函数是实现C++多态特性的关键功能。引出问题:有一个animal的基类,包含可以打印动物叫声的函数speak()。每种动物的叫声函数speak都不一样,比如派生类cat的speak(),dog的speak()都不一样。如果想打印不同的动物的叫声,则针对每种动物实例化几个具体的对象,然后对每种动物调用speak()函数。问题来了,如果有10种动物呢,30种动物,1...

2020-12-01 17:55:14 319

原创 Ubuntu + pytorch1.7 + rtx3090/3080 安装DCNv2 踩坑记录

由于RTX3090/3080只能安装cuda11,cuda11适配的pytorch只有1.7。所以DCNv2的安装包目前还没有适配的,由于刚出较新,网上的资料相对缺乏,经过一系列踩坑,终于找到一个解决方案。我的配置:RTX3090Ubuntu 18.04cuda11.1pytorch1.7往上的解决方案有:日常填坑-DCNv2+pytorch1.7+vs2017编译我试了试该方案,报错,帖子下面有我的评论,总之尝试未果。在原版的DCNv2的讨论区有人给出了解决方案:Pytorch 1.6

2020-11-30 15:10:18 4750 16

原创 《剑指offer》中涉及C++的基础知识

C++中有哪4个与类型转换相关的关键字?这些关键字各有什么特点,应该在什么场合下使用?答:推荐这篇博客:《【C++】的四种强制转换》讲得浅显一些《C++的四种强制转换》这篇有搭配场景,讲得深一点static_cast:最常用的const_cast:用来转换const类型的,但是尽量不要用,毕竟const就是为了不改变的reinterpret_cast:谨慎使用,用来转换指针的。dynamic_cast:运行时进行的检查。sizeof的使用①定义一个空的类,使用sizeof后得到..

2020-08-31 21:31:56 364

原创 闫令琪:Games101 现代计算机图形学-光线追踪(三):渲染方程和路径追踪path ray tracing & 作业Assignment07解析

路径追踪技术(Path tracing,PT)已经是当下工业中离线渲染使用的主流技术,不管是商业渲染器如皮克斯的RenderMan,Solid Angle的Arnold等,还是迪士尼的in-house渲染器Hyperion以及Weta Digital的Manuka都是基于路径追踪技术。...

2020-08-05 21:37:40 2030 1

原创 闫令琪:Games101 现代计算机图形学-光线追踪(二):BVH算法及应用 & 作业Assignment06解析

scene里面add(object),

2020-07-28 22:01:43 2953

原创 闫令琪:Games101 现代计算机图形学-光线追踪(一):whitted ray trace光线追踪 & 作业Assignment05解析

计算光的折射向量https://blog.csdn.net/yinhun2012/article/details/79472364

2020-07-27 16:48:24 1723 2

原创 闫令琪:Games101 现代计算机图形学-作业Assignment03解析

本次作业的核心任务是:完成布林冯模型的shader完成凹凸贴图的shader1. 作业框架梳理因为之前两次作业都是三角形,本次是有3D模型,作业框架在之前的基础上稍微增加了一些内容,其处理流程梳理如下:a. 对3D模型的处理:专门的读取obj文件的类,读取3D文件obj文件内部其实存储的是一个个三角形面,一个三角形的三个顶点作为一个元素,存到TriangleList数组里。接下来的所有的处理都是对这个数组元素的遍历处理,也就是一个三角形一个三角形的处理b. 对三角形的坐标变换处理

2020-07-12 15:51:36 3128 13

原创 闫令琪:Games101 现代计算机图形学-作业环境配置:vs2019+win

闫老师的作业框架整体上非常简洁,只需要装两个库即可:eigen3opencv2但是也踩了很多坑,首先是vs配置c++库的时候各种包含库目录,什么的非常繁琐,发现了vcpkg之后过程大大简化。利用vcpkg进行库安装,只需要执行下面三行命令即可:.\vcpkg.exe install engin3:x64-windows.\vcpkg.exe install opencv:x64-windows.\vcpkg.exe integrate install 这里必须要配置64位的,原因在于第

2020-07-06 23:24:22 7854 21

原创 vcpkg对Visual studio进行C++的包安装和管理

vcpkg默认安装的是32位版本,所以在vs中使用的时候要注意选择解决方案平台,到底是32还是64。如果要安装64的.\vcpkg.exe install XXXX:x64-windows安装完之后需要推到vs里面,使用:.\vcpkg integrate install主要命令参考这篇文章即可:Visual Studio开源库集成器Vcpkg全教程安装eigen.\vcpkg.exe install eigen3安装opencv主要参考本篇文章window10 visual s

2020-07-05 23:04:04 1801

原创 闫令琪:Games101 现代计算机图形学-作业Assignment02解析

GAMES101-现代计算机图形学学习笔记(作业02)这篇帖子已经写的非常详尽了。本篇补充一下自己做的时候遇到的疑惑。1、关于变换的流程虽然课上感觉都听懂了,实际上具体操作的时候还是有一些没懂的地方。a.旋转矩阵:作业02中省略b.平移矩阵:把相机的位置平移到原点,物体也会被平移c.仿射变换:把透视相机变成平行相机d.平移矩阵:把变成平行相机的相机空间移到原点e.缩放矩阵:把相机空间缩放到[-1,1]。除了上面的变换之后还需要!!!f.把齐次坐标的第四分量也就是w分量变为1g.

2020-07-02 21:46:34 2622 8

原创 为什么旋转矩阵的逆等于转置矩阵

旋转矩阵(Rotate Matrix)的性质分析这篇帖子讲的非常好

2020-05-05 10:48:25 3557

原创 【亲测可行】Unity播放带有透明通道视频

本文主要参考:Unity播放透明视频该文提供了两种方法,但是第一种方法那个转换视频格式的软件安装失败,因此无法实现,所以只实现了第二种。网上很多播放透明通道视频的方法都语焉不详,或者行不通,本文按照那个链接,亲测可行。①下载avpro video,csdn上可以下载,可以淘宝上1块钱买一个下载链接。②加载该插件。③使用ffmpeg进行格式转换:./ffmpeg.exe -i you...

2020-04-23 17:23:52 2178 8

原创 Unity-C#开发知识点记录

unity3D要求类名和文件名一定要相同,大小写也必须相同C#脚本程序变量默认为private,若外部需要修改,就要改成public公用。公用变量不仅可以在其他类中修改,也可以在编辑器的界面上修改。运行中也可以修改,但是运行结束后会恢复初始值。关于锚点的讲解请看这篇博客:RectTransform详解。如果要显示多行文字,必须先利用记事本之类的文字处理软件输入好复制,到此处粘...

2020-01-16 11:36:33 503

原创 unity&C#—开发快捷键

树列表里选中某个想查看得物体,鼠标放到sense上(不需要点击),摁下F健即可将目标物体居中。摁住Alt点击树展开,则会展开所有的子节点摁住V键可以选择顶点,然后拖动该顶点,可以实现顶点吸附的作用选中物体,同时摁ctrl+shift+F,可以快速把物体放到目前视角处,比如游戏里面调整好看某个人物的视角,选择摄像机摁这个快捷键,就会直接把摄像机设置到这个视角处。CTRL+7可以调出unit...

2020-01-16 11:35:41 498

原创 Learn C++学习笔记:第十一章—向派生类中添加功能、多重继承

11.4 派生类添加函数面向对象编程的三大特性:封装、继承和多态。派生类可以继承父类的特性,但是有时候每个派生类都有可能有自己的需求。这个时候就需要继承完往派生类里面添加需要的函数。访问说明符不在类之间进行继承。比如:#include <iostream> class Base{protected: int m_value; public: B...

2019-12-30 16:56:46 144

原创 Learn C++学习笔记:第十一章—继承

继承简介C++继承语法非常简单,在class声明之后,我们使用冒号,单词“ public”以及我们希望继承的类的名称。这称为公共继承。#include <iostream> class Base{public: int m_id; Base(int id=0) : m_id(id) { std::cout <...

2019-12-27 11:58:42 136

原创 Learn C++学习笔记:第十章—类之间的关系

在面向对象的程序设计中,类之间有6中关系,分别是继承, 组合, 聚合,关联, 依赖,实现。组合(Composition)组合是将一个对象(部分)放到另一个对象里(组合)。它是一种 “has-a” 的关系。相比"聚合",组合是一种强所属关系,组合关系的两个对象往往具有相同的生命周期,被组合的对象是在组合对象创建的同时或者创建之后创建,在组合对象销毁之前销毁。一般来说被组合对象不能脱离组合对象独立...

2019-12-18 15:42:13 132

原创 Learn C++学习笔记:第九章—运算符重载

对于重载运算符,没有太多语法和语言逻辑,知道怎么做,有个模板代码,以后借鉴去改。9.6比较运算符:== != < >这是一段比较==和!=运算符的代码。#include <iostream>#include <string> class Car{private: std::string m_make; std::string m...

2019-12-05 11:03:25 111

原创 Learn C++学习笔记:第八章—测试代码运行时间

测试代码运行时间是一个很常用的需求,下面写好了一个模板,直接调用就行:#include <chrono> // for std::chrono functions class Timer{private: // Type aliases to make accessing nested type easier using clock_t = std::chrono::hi...

2019-11-26 20:08:56 86

原创 安装pyinstaller封装python代码为exe

安装pyinstaller教程里面一般直接说直接pip install pyinstaller,但是我直接安装时候报如下错误:ERROR: Command errored out with exit status 1通过去GitHub上下载安装包后进行安装:去https://github.com/pyinstaller/pyinstaller下载pyinstaller进入界面"Clon...

2019-11-26 20:04:41 127

原创 Learn C++学习笔记:第八章—this指针、const和static的类成员和类函数、friend函数或类

隐藏的this指针现在回想一下类实例的的调用方法,比如:test.func(),返过来思考一下,这个func()函数是怎么被调用的,比如,如果建立类实例的时候,从test的内存里取出func()这个函数,但是实际上这样会导致下图的存储方式:很明显,这会导致函数代码的重复,对于追求效率的C++,这显然是可以优化的地方,并且优化的形式大概也能猜出来,就是合并函数,函数只在创建类的时候存储一次,类...

2019-11-26 17:40:58 173

原创 Learn C++学习笔记:第八章— C++中类的基本知识

类和类成员

2019-11-12 20:46:07 256

原创 Learn C++学习笔记:第七章— 内联函数、函数重载、函数指针

占个位置

2019-10-16 21:10:53 164

原创 Learn C++学习笔记:第七章— 函数参数和通过值、引用和地址传递参数

函数的参数形参:函数声明中表示的变量,比如下面的x。void foo(int x){}实参:函数调用时实际传递到函数的参数,比如下面的y:void foo(int x){}foo(y);将参数传递给函数的主要方法有3种:按值传递,按引用传递和按地址传递。通过值传递函数参数通过值进行传递是最直观方式,示例:#include <iostream> void...

2019-10-16 21:09:51 168

原创 Learn C++学习笔记:第六章— void指针、std::vector和std::array

void 指针有void类型的函数,同理,也可以有void类型的指针。void类型的指针可以指向任意类型数据,示例:int nValue;float fValue; struct Something{ int n; float f;}; Something sValue; void *ptr;ptr = &nValue; // okptr =...

2019-10-16 09:57:19 1253

AVPro Movie Capture Windows.4.3.0.unitypackage

这是花重金从unity商店买的正版插件。我基本尝试过unity中所有保存音视频的插件,这个插件是质量最好的,保存下来的音视频可以做到音画同步,画面质量和声音质量也都非常高。对硬件的消耗相对也少。

2020-07-14

unity中可以保存声音的插件,非常易用,文件质量好Microphone Recorder Wrapper.unitypackage

亲测可用,使用非常简单,既有示例demo,也有现成文件,稍微改一下接口就可以融合到自己的工程里。插件直接通过导入包就可以放入unity工程中。

2020-07-14

AVPro_Movie_Capture_new.7z

亲测可用。比较吃硬件,简单易用。看全网都是要积分的,怒而免费送给大家。 可以把game界面内容保存成不同格式不同帧率的视频,可以包含场景的声音。

2020-02-25

空空如也

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

TA关注的人

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