自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

大琪子的博客

为自己的游戏人生

  • 博客(81)
  • 资源 (1)
  • 问答 (1)
  • 收藏
  • 关注

原创 Unity 背追相机的简单实现思路

核心代码只有一行,基于玩家的位置和相机的朝向来计算相机新的位置。public class CameraCtrl : MonoBehaviour{ public Transform mainCameraTransform; public Transform playerTransform; public float m_TargetDistance = 2.0f; public float m_Yaw = 0; void Update() {

2022-01-10 23:09:45 2033

原创 visual studio 2017 配置lua 5.x 开发环境

参考帖子:https://www.freesion.com/article/54861371918/自己简单的总结了一下。去官网下载任意一个lua包,经过测试lua5.1.1编译之后的lib文件,无法运行。新建一个Visual Studio的Visual C++项目,编译方式为静态库。在项目中的头文件和源文件中,分别把对应lua解压包中src的.h和.c文件导入进来。注意源文件不需要导入lua.h和luac.h。编译在Release目录下,将xxx.lib文件,复制到指

2021-10-07 11:44:09 844

原创 Unity apply root motion和bake into pose之间的联系

如果总结有误,还请批评Unity apply root motion和bake into pose之间的联系官网资料https://docs.unity3d.com/Manual/RootMotion.html正文unity中动画的变换分为body transform和root transform。body transform ,动画发生位移,和旋转只是单纯的动画效果root transform ,动画发生的位置和旋转会改变模型实际的位置和旋转。apply motion的作用启动root

2020-06-05 17:38:40 905

原创 Unity学习资源汇总 2021/4/16 更新

打算学一学Unity,然后四处查找资料,发现 资源真的是鱼龙混杂,国内很多教程都是半教程半卖课性质的,看得人头疼。想找本好书,但是发现大部分的书籍都是基于Unity5.x的,而目前已经有Unity2017,2018,2019以及2020的阿尔法版了,学习起来不敢保证是否过时了。在各大论坛找了个遍,最终去官网学习了,踩了一些坑之后,终于找到了Unity学习的正确姿势了。这里才是最好学习Unity的地方。https://learn.unity.com/courses注意这里的教程全都是英文的,视频也是

2020-05-13 21:49:45 1289

原创 计算机面试 资源收集汇总

资源都收集自互联网,侵删大汇总https://github.com/wolverinn/Waking-Up操作系统常见面试题汇总:https://blog.csdn.net/justloveyou_/article/details/78304294pv操作https://my.oschina.net/u/3705835/blog/1550188原子操作虽然答非所问,但是可以形成对...

2020-04-17 12:38:09 161

原创 二叉树 常见面试题 C++实现

文章目录1. 前序遍历的非递归实现2. 中序遍历的非递归实现3. 后序遍历的非递归实现4. 求二叉树的深度待续1. 前序遍历的非递归实现LeetCode 144class Solution {public: vector<int> preorderTraversal(TreeNode* root) { vector<int> vec; ...

2020-04-17 10:07:30 187

原创 C++Primer 第2章 变量和基本类型

第二章2.1 基本类型C++的基本类型分为空类型和算术类型,空类型就是void,算术类型就是整型,字符型,浮点型,布尔型char分为,unsigned char,signed char和char,其中char是有符号还是无符号取决于编译器对于无符号类型,如果赋值超过了其表示范围,则结果为该无符号类型所能表示的数值个数%赋值的数。unsigned char c = -1;//256%...

2020-04-09 09:27:44 216

原创 刷题的一些技巧

1.两个整数相加防止溢出int mid = low + (high - low) / 2;2.判断正整数是否溢出int value=xxx;unsigned v= value;v=v+xx;if((v&INT_MIN)!=0){cout<<"溢出了"<<endl;}else{cout<<"没有溢出"<endl;}...

2020-03-29 14:48:30 224

原创 第18章 用于大型程序的工具 18.3 多重继承和虚继承

多重继承实在是一个折磨人的东西。。。18.3 多重继承和虚继承18.3.1 多重继承派生类的派生类表可以继承多个类,默认的继承方式和单继承是一样的,即class类默认使用private,struct默认使用public。派生类构造函数初始化所有基类的时候,我们一般会在初始化列表中调用基类的构造函数。一个多重继承的派生类其构造顺序是按照派生列表中声明的顺序进行的。对于多重继承,一个相同的基...

2020-03-24 22:59:53 141

原创 第18章 用于大型程序的工具 18.2命名空间

18.2 命名空间命名空间可以有效的防止变量名重复,命名空间就是一个作用域,可以在命名空间中定义命名空间,但是不能在类和函数中定义。18.2.1 命名空间定义使用这种方法来定义命名空间namespace xxx{}命名空间都是一个作用域,所以和作用域中的变量是一样的,变量名字不能重复。和作用域不一样的是,命名空间可以不是连续的。我们定义一个命名空间,如果之前没有这个空间,则创建这个...

2020-03-23 18:55:17 116

翻译 Class-incremental Learning via Deep Model Consolidation 翻译

Abstract深度神经网络(DNNs)在增量学习(IL)过程中经常遭受“灾难性遗忘”——当训练目标适应于新添加的一组类时,原始类的性能会突然下降。 现有的IL方法倾向于产生一个偏向于旧类或新类的模型,除非借助旧数据的范例。 为了解决这个问题,我们提出了一种称为深度模型整合(Deep Model Consolidation, DMC)的类增量学习范式,即使在原始训练数据不可用的情况下,它也能...

2020-03-08 20:15:31 2393 2

翻译 Take Goods from Shelves A Dataset for Class-Incremental 翻译

摘要在自助售货机中实现自动可视化结账的目标检测在零售业中引起了广泛的关注。 然而,一些关键性的挑战还没有得到足够的重视。 首先,迫切需要大规模、高质量的零售图像数据集来训练和评估检测模型。 其次,训练有素的模型应该能够以较低的成本应对频繁增加的新产品,而大多数前沿模型则不能。 本文提出了一种新的分层的大规模目标检测数据集——货架取货(TGFS),包含24个细粒度和3个粗类的38K图像。 ...

2020-03-07 10:22:31 766 2

翻译 RILOD Near Real-Time Incremental Learning for Object Detection at the Edge 翻译

抽象配备相机的边缘设备附带的物体检测模型无法覆盖每个用户感兴趣的物体。因此,增量学习功能是许多应用程序依赖的强大且个性化的对象检测系统的关键功能。在本文中,我们提出了一个高效而实用的系统RILOD,以逐步训练现有的对象检测模型,使其能够检测新的对象类别而又不会失去检测旧类别的能力。RILOD的关键组件是一种新颖的增量学习算法,该算法仅使用新对象类的训练数据就可以针对一个阶段的深层对象检测模型进...

2020-03-07 10:13:14 961

翻译 iCaRL Incremental Classifier and Representation Learning 翻译

摘要在通往人工智能的道路上,一个主要的开放问题是逐步学习系统的开发,该系统可以随着时间的推移从数据流中学习越来越多的概念。 在这项工作中,我们引入了一种新的培训策略,iCaRL,它允许以这样一种类增量的方式学习:只有少量类的培训数据必须同时出现,并且可以逐步添加新的类iCaRL同时学习强分类器和数据表示。 这与早期的工作不同,早期的工作从根本上局限于固定的数据表示,因此与深度学习架构不兼容。 ...

2020-03-05 23:46:42 2462

原创 leetcode中剑指offer的习题 C++语言实现(2)

面试题9 用两个栈实现队列/*在写的时候知道只要利用另外一个栈,将其原来栈中的内容反转就可以了,但是忘记了stack_2中只要还有元素,那么它就可以出栈,因为它已经是元素的逆序了。但是我在每次删除元素的时候都将stack1中的元素,变到stack2中,出栈之后再压会stack1中,这样耗费的很多性能,真的是有够笨的*/// class CQueue {// public:/...

2020-03-05 23:22:14 129

原创 常用排序算法 C++实现

待更新算法平均时间复杂度最坏时间复杂度空间复杂度是否稳定排序适用情况快速排序O(nlog2n)数组有序时O(n^2)T(log2n)~T(n)否n较大,且数组无序1.快速排序快速排序的思想在于通过一次交换来解决多个元素逆序的问题,要解决多个元素逆序问题就不能和冒泡一样只交换相邻元素的位置,所以快速排序会跨着跳。不同于使用两个low和high两个下标...

2020-03-05 12:38:53 160

原创 C++ Primer 第十六章 16.1定义模板

16.1.1 定义函数模板使用template+模板参数列表来定义一个函数模板。template<typename T>bool compare(const T&a,const T&b){ return a<b;}compare(1,1);在具体调用时,会根据传入的实参类型,将函数模板中的模板参数替换掉,转换为一个具体的函数实例。 这个过程叫做实...

2020-03-04 20:10:54 152

翻译 Learning without Forgetting 翻译

已弃坑,希望以前翻译的论文对感兴趣的人们有所帮助。机翻+自己手动改一些内容。Learning without Forgetting摘要在构建统一视觉系统或逐渐向系统添加新功能时,通常的假设是始终可以获得所有任务的培训数据。但是,随着任务数量的增加,对这些数据的存储和再培训变得不可行。在我们向卷积神经网络(CNN)添加新功能时出现了一个新问题,但其现有功能的训练数据不可用。我们提出了我们的学...

2020-03-04 20:10:02 3250 5

原创 leetcode中剑指offer的习题 C++语言实现(1)

面试题5 替换空格第一种方法使用str的成员函数replace来完成。第二种方法先创建一个容量足够大的string,然后将源字符串中的元素一个一个加进去,如果遇到空格,则加入%20.因为返回值是string需要调用构造函数,但是返回值后,局部变量将被销毁,所以调用std::move()将返回值转化为右值,使其调用移动构造函数,可以提高运行速度。// #include<algorit...

2020-03-04 19:45:57 181

原创 C++ Primer 第十五章 面向对象程序设计 15.9

15.31位取反,位与,位或的优先级分别时~ > & > |所以a,最终创建一个OrQueryb,最终创建一个OrQueryc,最终创建一个OrQuey15.32Query对象被拷贝q的引用计数+1被赋值,原来指向的对象引用计数-1,赋值语句左边的对象引用计数+1,如果左侧对象引用计数为0则调用析构销毁对象回收的内存。被移动,q引用计数变为传入左值的引用计...

2020-03-03 00:09:28 250

原创 C++ Primer 第十五章 面向对象程序设计 15.8 容器和继承 练习和总结

15.8 容器和继承在容器中管理继承体系的类时,如果需要多个子类都调用某一个操作,往往保留的是基类的指针,这做会更加的灵活。练习15.8 15.29 vector<shared_ptr<Quote>> vec; /*vec.push_back(make_shared<Bulk_quote>("123", 20, 10, 0.9)); vec.push...

2020-03-02 18:38:59 132

原创 C++ Primer 第十五章 面向对象程序设计 15.7 构造函数和拷贝控制 练习和总结

15.7 构造函数和拷贝控制15.7.2 虚析构函数在继承体系中,基类的指针,引用可以绑定派生类的对象,使用指针时,我们使用delete来回收这个指针所管理的对象。但是在继承体系中,这个指针可能指向的是其子类的对象,为了正确的调用子类的析构函数,应该将基类的析构函数声明为虚析构函数。只要基类的析构函数为虚析构函数,那么其子类的析构函数(编译器合成的或者自己定义的)也默认是析构函数。注意,一...

2020-03-02 15:43:01 209

原创 C++ Primer 第十五章 面向对象程序设计 15.6 继承中的类作用域 练习和总结

15.2 继承中的类作用域每一个类都有自己的作用域,派生类的作用域在基类的作用域中。从派生类的对象访问某一个成员如果在派生类中没有找到该名字,则从直接基类中查找,一直往继承链的上面找,如果一直没有找到则报错。对于名字查找,这依赖于变量(普通变量,指针或者引用)的静态类型,即:变量的静态类型决定了这个变量只能访问哪些成员。这就很好理解为什么用基类的引用或者指针只能访问基类的成员(虚函数除外),另...

2020-03-01 21:53:43 142

原创 C++ Primer 第十五章 面向对象程序设计 15.5访问控制与继承 练习和总结

15.5 访问控制和继承在继承体系中,有两个地方需要用到访问限定符,第一个地方是类中 ,protected修饰的成员可以在派生类中直接访问,但是不能在用户代码中直接访问。在派生类中我们只能通过派生类对象来访问基类的protected数据成员,不能通过基类变量访问基类的protected数据成员。class A {public: int pub_value;protected: int...

2020-03-01 18:37:50 182

原创 C++ Primer 第十五章 面向对象程序设计 15.3 虚函数 15.4抽象基类 练习和总结

15.3 虚函数只有在基类的指针或者引用访问虚函数的时候才会发生动态绑定。 如果由一个基类或者一个派生的对象直接访问虚函数则访问的就是其自己定义的那个函数,不会发生动态绑定。此时如果想访问基类的函数则需要使用作用域运算符来访问。重写虚函数时,返回值类型和参数列表中的参数需要完全一样,否则派生类重写的函数实际是定义了一个新的函数,为了防止开发人员误操作,C++提供了override函数,显式的表...

2020-02-29 13:56:30 161

原创 C++ Primer 第十五章 面向对象程序设计 15.2 定义基类和派生类 练习和总结

15.2 定义基类和派生类15.2.1 定义基类练习15.1使用virtual关键字修饰的函数时虚函数15.2用protected修饰的成员,使用类的用户不能直接访问,但是继承该类的派生类可以访问。使用private修饰的成员,使用这个类的用户不能直接访问,继承该类的派生类也不可以直接访问。15.3class Quote{public: Quote()=default; ...

2020-02-28 21:20:06 501

原创 C++ Primer 第十四章操作重载与类型转换 14.9 重载、类型转换与运算符 练习和总结

14.9 重载、类类型转换与运算符在学习构造函数的时候,我们知道如果构造函数只有一个形参或者只有一个形参没有默认值,那么可以通过隐式转换,将该形参类型转化为类类型。同样,我们也可以将类类型转化为其他的类型,虽然C++提供了这样的操作,但是我们应当尽量避免使用类型转换运算符,因为使用类型转换运算符可能会造成很多潜在的风险,比如各种二义性,以及如果二者的转换规则不明显可能会造成代码可读性非常差。...

2020-02-28 13:29:24 157

原创 C++ Primer 第十四章操作重载与类型转换 14.8 函数调用运算符 练习和总结

14.8 函数调用运算符重载了函数调用运算符的类,它的对象可以做出像函数 一样的行为,因此我们称这样的对象为函数对象。相对于普通的函数,函数对象可以保存一些状态,这些状态其实就是他的数据成员。这其实就又和lambda表达式一样了,lambda表达式其实就是一个类的对象。练习14.33零个,一个,多个都可以,而且参数可以有默认值14.34struct IfThenElse{ i...

2020-02-28 11:55:15 308 1

原创 C++ Primer 第十四章操作重载与类型转换 14.1~14.7 练习和总结

第14章的内容过一遍就可以了,通过重载运算符实现的方法,定义函数也可以实现。重载运算符类型建议定义在哪里返回值类型参数类型注意事项<<非成员ostram&ostream&,const CLS&>>非成员istream&istream&,CLS&需要考虑输入流错误的情况,一般将对...

2020-02-28 00:55:03 274

原创 C++ Primer 第十三章 13.6 对象移动 练习和总结

13.6 对象移动练习13.45一句话:左值引用可以绑定左值,const 左值引用和右值引用可以绑定右值。左值引用可以绑定返回值类型为引用的函数、赋值、下标、解引用、前置递减递增运算符等返回左值的表达式的结果上。const类型的左值引用和右值引用可以绑定在返回非引用类型的函数、算术、关系、位、后置递增递减等返回右值的表达式的结果上。13.46int &&r1 = f...

2020-02-26 21:56:28 269

原创 C++ Primer 第十三章 13.5 动态内存管理类 练习和总结

13.5 动态内存管理类类中管理动态的内存最好的方法是使用容器或者使用智能指针,但是可能如果我们自己要设计一套库,那么就需要让这个库的性能处于一个较好的水平。这个时候我们可能需要使用一些较为低层的管理内存的函数。像vector这样的容器如果push的时候空间不足,贼会开辟新的空间,此时需要将原来的元素都拷贝到新的空间中去。所以这里会调用拷贝构造函数,调用拷贝构造函数意味着需要消耗性能,那么有...

2020-02-26 13:41:19 229

原创 C++ Primer 第十三章 13.4 拷贝控制示例 练习和总结

13.4 拷贝控制示例练习13.33因为如果形参类型是const Folder&,那边形参是一个常量。那么folders的类型必须是常量指针。那么调用的Folder的AddMsg和remMsg就必须是常量函数。而这两个函数肯定会修改Folder中数据成员的值,因此不能被设置为常量函数。所以只能讲save和remove的形参定义为非const类型。13.34class Me...

2020-02-25 19:55:33 517

原创 C++ Primer 第十三章 13.3 交换操作 练习和总结

13.3 交换操作对于管理资源的类(我的理解是数据成员有动态分配的内存的类),一般需要定义一个swap函数。默认的swap是这样的:A temp = v1;v1=v2;v2=temp;代码会创建一个临时变量,并且使用两次赋值语句。想一下,如果一个对象中有一个指针指向了一个占用内存非常大的对象。这样创建临时变量是比较消耗性能的。**所以不创建临时变量,而是只交换两个对象内部的数据。...

2020-02-25 17:01:26 1573 1

原创 C++ Primer 第十三章 13.2 拷贝控制和资源管理 练习和总结

13.2拷贝控制和资源管理练习13.22这个练习是错误的示范,正确的示范在练习13.23中class HasPtr {public: HasPtr(const std::string& s = std::string()) :ps(new std::string()), i(0) {}; HasPtr(const HasPtr& hasptr) :ps(new str...

2020-02-24 22:51:42 202

原创 C++ Primer 第十三章 13.1 拷贝赋值和销毁 练习和总结

定义一个类我们需要显式或者隐式的指定这个类在拷贝,赋值,移动,销毁时需要做什么,我们需要定义拷贝构造函数,移动构造函数,拷贝赋值运算符,移动赋值运算符和析构函数来控制这些操作。拷贝和移动构造函数定义了一个对象初始化本对象时,需要做什么。拷贝和移动赋值运算符则决定了将 一个对象赋值给同类型的另一个对象时需要做什么。析构函数定义了销毁对象时需要做什么。这些5个成员函数被称为拷贝控制操作。1...

2020-02-24 20:18:16 218

原创 C++ Primer 第十二章 12.3 使用标准库:文本查询程序 练习

练习12.27这个程序已经可以完成论文所作的功能了class QueryResult { //懒得重复写,所以使用类型别名 using str_vec_ptr = std::shared_ptr<vector<string>>; using str_set_map_ptr = std::shared_ptr<map<string, set<s...

2020-02-20 21:13:11 172

原创 C++ Primer 第十二章 12.2 动态数组 练习和总结

12.2动态数组之前学到new和delete是可以创建/删除一个对象的,但是我们有时候需要创建一组对象和删除一组对象。现在我们可以使用容器来这么做,vector,list,不过new和delete也提供了创建/删除一组对象的操作。创建动态数组使用new创建动态数组我们可以使用如下的方式用new创建动态数组。int* p = new int[10];using TenArr = int[...

2020-02-20 18:45:39 240 1

原创 C++ Primer 第十二章 12.1 动态内存与智能指针 练习和总结

前文之前我们只学习过静态内存和栈内存。现在还有一个堆内存,他们保存的变量类型分别为内存名字该内存中保存的类型静态内存static局部变量、类的static数据成员、定义在函数体之外的变量栈内存函数体中的所有非static变量堆内存动态分配内存空间的变量12.1动态内存和智能指针我们可以使用new关键字动态的分配内存空间,并返回指向该对象的指针,我们...

2020-02-20 13:44:24 358

原创 C++ Primer 第十一章 11.4 无序容器 练习和总结

11.4无序容器C++11新增了4中容器,他们是无序关联容器,因为他们组织元素不靠比较运算符,而是使用一个哈希函数和==运算符,这些容器组织的元素没有明显的顺序,所以他们是无序关联容器。有序的关联容器,在某个时候维护序需要较大的代价,如果我们并不会利用元素的序,那么可以使用无序关联容器。因为无序关联容器也有multi版本,因此大部分情况下,有序关联容器和有序关联容器都是可以互换着使用的。无...

2020-02-18 20:27:15 190

原创 C++ Primer 第十一章 11.3 关联容器操作 练习和总结

11.3 关联容器操作关联容器定义的额外的类型。注意map的value_type是一个pair类型,而且pair的first成员是const类型,这是因为我们从map中得到的pair返回的是引用,这意味着我们可以修改pair中的数据成员,而first成员是map容器的关键字,关键字是不允许改变的,为了防止我们修改了关键字,所以将first设置为const。mapped_type表示的是ma...

2020-02-18 19:31:50 255

private.zip

Incremental Learning of Object Detectors without Catastrophic Forgetting 里面用到了EdgeBoxes,如果matlab版本太高的话,需要修改代码,代码是我从github的issues上拷贝下来的。 放在edges的private下面,覆盖原始的文件。

2019-07-06

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

TA关注的人

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