自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

劲草浅躬行

笔落惊风雨不停 诗成泣鬼神经病

  • 博客(51)
  • 问答 (1)
  • 收藏
  • 关注

原创 Tensorflow-Graph构建

构建多图正常构建多图Tensorflow 可以通过以下方式构建多图,每一个图可以独立构建结构,只是要# 第一种构建方式g1 = tf.Graph()# 第二种构建方式tf.reset_default_graph()g1 = tf.get_default_graph()with g1.as_default(): input = tf.ones((16, 32, 32, 3)) out = slim.conv2d(input, 256, [3,3])g2 = tf.Gra

2021-08-24 16:57:25 324

原创 Face landmark 论文笔记

Structured Landmark Detection via Topology-Adapting Deep Graph Learning原理先学习一个透视变换矩阵,将标准人脸关键点经过预测,粗投影到人脸上;再学习精细的变换:利用每个关键点的visual feature (D维) 和shape feature (2(N-1)维,是每个关键点和剩下N-1个关键点的二维向量) 结合成一个如下维度的数据。去学习一个移动向量;RD+2(N−1) R^{D+2(N-1)} RD+2(N−1)该文章较好

2021-06-06 13:49:28 1323

原创 C++ 编程规范-string类型的实现

1. string类型字符串存储方式的简单说明string实现方式:比较典型的有eager-copy(贪婪拷贝);copy-on-write(写时复制);small string optimization(短字符串优化)方式。string str1 = "I love China"string str2 = str1;printf("str1存储的地址:%p".str1.c_str())printf("str2存储的地址:%p".str2.c_str())可以看出采用eager-copy方式

2021-03-30 23:04:57 605

原创 C++ 编程规范-智能指针

shared_ptr智能指针实现的说明shared_ptr<int> myp(new int(5));int icount = myp.use_count(); // 某个对象有几个智能指针指向cout << "icout = " << icout << endl; // 输出1{ shared_ptr<int> myp2(myp); icount = myp2.use_count(); cout << "icout

2021-03-30 21:05:21 358

原创 C++ 编程规范-类定义的相互依赖与前向声明

类定义的相互依赖与前向声明A1与A2直接依赖,可能还会存在间接依赖,这些在程序中应该尽可能避免这种设计,而是引入一个新类,让A1和A2都依赖这个新类。// a1.hclass A1{public: A2* mpa2;}// a2.hclass A2{public: A1* mpa1;}如果已经存在这种依赖关系,那么可以通过前向声明来解决问题。类的前向声明并不是类的完整定义,有些情况下,必须要类的完整定义而并不是类的前向声明。比如在类A1中声明A2的对象在类A1的定义中

2021-03-30 20:03:25 592

原创 C++ 编程规范-命名空间的使用注意事项

命名空间的使用注意事项通过using声明命名空间的代码强烈建议不要放在.h文件中–命名空间被污染。也就是说如果想要通过using声明命名空间使用的,最好不要在xx.h文件中写using namespace语句,如果写进去的话,一旦命名有冲突,所有引用该头文件xx.h的文件都会报错。写到.cpp中去可能只会有该cpp文件才会报错。// a1.hnamesapce a1nsp{ class A {};}// a2.hnamesapce a2lnsp{ class A {};}//

2021-03-30 19:36:57 455

原创 C++ 编程规范-类设计中的技巧

1. 优先考虑为成员变量提供访问接口当需要对成员变量进行访问时,可以使用Private来修饰成员变量,然后提供一个public修饰的成员函数作为外接访问该变量的接口。class A1{public: int m_a;};class A2{public: int& getA() { return m_a; }private: int m_a;};A1 a1obj;a1obj.m_a = 3;A2 a2obj;a2obj.getA() = 5; // 左

2021-03-26 20:33:27 198

原创 C++ 编程规范-不能被拷贝构造和拷贝赋值的类对象

不能被拷贝构造和拷贝赋值的类对象A aobj1;A aobj2(aobj1); // 拷贝构造,产生新的对象A aobj3;aobj3 = aobj2; // 赋值构造,不产生新的对象如果想不能被拷贝构造 且 不能被拷贝赋值采用deleteclass A{public: A() {} A(const A& tmpobj) = delete; // c++11中增加 A& operator= (const A& tmpobj) = delete;}

2021-03-25 21:38:12 592

原创 C++ 编程规范-private继承

Private继承基础知识延伸:简单地说下C++类的3种继承方式,分别是public继承,protected继承,private继承。最常用的还是public继承。class默认的是private继承,它的member如果没写权限也是默认private。struct则相反,默认的是public继承。结合下面的图示和代码,对C++的继承就有了比较清晰的认识了。1. 父类引用子类 & 父类指针绑定子类public继承的时候,以下可行。也就是只有is-a关系的时候,才能采用父类引用绑定子类以

2021-03-25 20:10:45 3334

原创 C++ 编程规范-知识散点

pair & make_pair注意:使用pair与make_pair要包含头文件 #include < utility >pair实质上是一个结构体(类),make_pair是函数。pair主要的两个成员变量是first和second,这两个变量可以直接使用。初始化一个pair可以使用构造函数,也可以使用std::make_pair函数// 构造函数初始化一个pair对象pair <string,double> product1 ("tomatoes",3

2021-03-25 20:10:30 1690

原创 C++ 编程规范-public继承 & 类的组合关系

public代表的是一种is-a的关系,通过子类产生的对象也一定是一个父类对象。父类表现的是一种更泛化的概念,子类表现的是一种更特化的概念。比如Man是Human。检验规则,能够在父类对象上做的行为也必然能在子类对象上做,每个子类对象同时也是父类对象。1. 普通成员函数规则1:对于public继承,不建议也不应该用子类的普通成员函数遮蔽父类的同名普通成员函数。既然在父类中是普通成员函数,那么就代表在子类中不会有不同的行为,代表的是一种不变形。里氏替换原则:任何基类出现的地方,都可以无差别的用子类替.

2021-03-25 15:23:29 1125

原创 C++ 编程规范-拷贝构造函数和拷贝赋值运算符

拷贝构造函数和拷贝赋值运算符普通情况注意在默认情况下(用户没有定义,但是也没有显示的删除),编译器会自动隐式生成一个拷贝构造函数和赋值运算符,但用户可以使用delete来指定不生成拷贝构造函数和赋值运算符,这样的对象就不能通过值传递,也不能进行赋值运算。需要注意的是,拷贝构造函数必须以引用的方式传递参数,这是因为,在值传递给一个函数的时候,会调用拷贝构造函数生成函数的实参,如果拷贝构造函数的参数仍然是以值的方式,就会无限循环的调用下去,直到函数的栈溢出。void func(alpha); /

2021-03-14 21:01:32 847

原创 C++ 编程规范-静态对象与全局对象的构造顺序

类和对象静态对象与全局对象的构造顺序类中的静态对象类中的静态成员对象,即使没有被使用,也会被构造和析构。比如B类中的m_sa(类类型的静态成员变量),也会被分配内存。如果m_sa不是类类型,而是简单类型,比如double, int,那么源码中如果没有用到这个静态成员变量,编译器可能不会分配内存。函数中的静态对象:如果该函数没被调用,那么这个静态对象不会被构造和析构。class A {public: A(); ~A();};class B{public: inline s

2021-03-14 17:44:17 738

原创 pytorch的torch.autograd.Function

文章目录1. Function理解2. Function与Module差异与应用场景3. MyRelu Function4. Linear Function摘自https://zhuanlan.zhihu.com/p/277830971. Function理解Pytorch是利用Variable与Function来构建计算图的。回顾下Variable,Variable就像是计算图中的节点,保存计算结果(包括前向传播的激活值,反向传播的梯度),而Function就像计算图中的边,实现Variable

2021-03-08 20:52:07 751 1

原创 pytorch中Variable/Tensor

文章目录1. Variable & Tensor1. Variable & Tensorimport torchfrom torch.autograd import Variable # torch 中 Variable 模块tensor = torch.FloatTensor([[1,2],[3,4]])variable = Variable(tensor)print(tensor)print(variable)结果如下:tensor([[1., 2.],

2021-03-08 19:39:25 402

原创 Screen命令

1. shellscreen -ls 显示进程列表screen -r sid 恢复某个进程screen -X -S sid quit 终止某个进程screen -S my_screen_name 修改会话名称ctrl+a d 离开当前进程ctrl+a k 终止当前进程2. 窗口内部(screen session)ctrl+a A 重命名当前窗口...

2021-03-06 22:35:15 431

原创 Domain-adaptive object detection 跨域目标检测

文章目录1. 整体理解2. 实施细节2.1 DD模块2.2 MRL以及检测模块3. 总结##《Diversify and Match: A Domain Adaptive Representation Learning Paradigmfor Object Detection》1. 整体理解主要就是两个模块,一个是Domain Diversification (DD),另一个是Multi-domain-invariant Representation Learning (MRL)Domain D

2021-02-19 14:33:20 3225

原创 《浪潮之巅》读书笔记

文章目录工业革命1. 蒸汽技术革命2. 电气技术革命3. 信息技术革命4. 智能技术革命信息时代的科学基础1. 从机械论到“三论”机械论思维方式:控制论思维方式:信息轮思维方式:系统论思维方式:2. 信息时代的思维指南3. 企业制度背后的科学原理4. 大数据思维&互联网思维工业革命历次工业革命中大部分的受益者并非来自核心技术领域。变革的辐射力相当强,历次工业革命中都会有一大批核心产业之外的受益群体。它们受益的范式:现有产业+新技术=新的产业每次技术革命,都涉及企业最有价值的核心资源,掌握了它们

2021-02-18 22:05:05 394

原创 Pytorch Dataloader参数及源码详解

文章目录DataloaderDataloader首先看一下最基础的DataLoader的源码中__next__的实现。为方便理解我只选取了num_works为0的情况(num_works简单理解就是能够并行化地读取数据)。class _BaseDataLoaderIter(object): def __init__(self, loader: DataLoader) -> None: self._dataset = loader.dataset self

2021-02-18 15:22:10 3468

原创 YOLOV5网络结构&各个模块&延伸

文章目录1. 整体网络结构YOLOV3YOLOV4YOLOV52. 模块2.1 SPP (Spatial Pyramid Pooling)1. 整体网络结构摘自 https://zhuanlan.zhihu.com/p/172121380YOLOV3YOLOV4Yolov4在Yolov3的基础上进行了很多的创新。比如输入端采用mosaic数据增强,Backbone上采用了CSPDarknet53、Mish激活函数、Dropblock等方式,Neck中采用了SPP、FPN+PAN的结构,输

2021-02-18 12:42:35 10257

原创 YOLOV5源码解析-损失解释 compute_loss(), build_targtets()

文章目录1. compute_loss2. build_targets1. compute_loss中英文混合注释如下:def compute_loss(p, targets, model): # predictions, targets, model device = targets.device lcls, lbox, lobj = torch.zeros(1, device=device), torch.zeros(1, device=device), torch.zeros(

2021-01-26 14:37:03 8727 11

原创 目标检测-小目标检测涨点方法

文章目录一、图片输入层面1. 数据增强策略2. 多尺度输入3. SNIP4. SNIPER二、 Neck部分(采用金字塔结构改进方案的)1. 某种金字塔2. AugFPN3. PANet4. M2Det5. Effective FPN6. MatrixNets三、 Head部分的改进方案四、 其他一、图片输入层面1. 数据增强策略增加包含小目标样本的采样率,缓解了训练过程中包含小目标图片较少的这种不均衡;将小目标在同一张图像中多拷贝几次;增加了匹配到小目标GT的anch

2021-01-18 12:28:36 3124 1

原创 pytorch中的tensor操作和numpy的array操作

文章目录cpu,gpu, torch.tensor与numpy.array转换torch(tensor)&numpy(array)的min,maxtorch(tensor)&numpy(array)的索引异同torch(tensor)&numpy(array)的索引中的Noneexpand, repeatcpu,gpu, torch.tensor与numpy.array转换CPU tensor转GPU tensor:cpu_imgs.cuda()GPU tensor

2021-01-18 12:15:43 4038

原创 pytorch中的named_parameters(), named_modules()

文章目录1. named_modules1. named_modules内部采用yield关键字,得到生成器。可以看到函数内部给出的例子,当外部迭代调用net.named_modules()时,会先返回prefix=’’,以及net对象本身。然后下一步会递归的调用named_modules(),继而深度优先的返回每一个module。def named_modules(self, memo: Optional[Set['Module']] = None, prefix: str = ''):

2021-01-18 11:37:37 3014

原创 PIL&Matplotlib.pyplot&opencv基本使用

文章目录opencvMatplotlib.pyplotPILopencvMatplotlib.pyplot显示图片plt.imshow(x,)array-like (可以显示np.array数据结构的数据)or PIL image(或者是采用Image.open打开的数据结构的图片)The image data. Supported array shapes are:支持2,3,...

2019-03-08 18:23:32 250

原创 Tensorfow基础知识点&操作

文章目录var.name 和 var.op.namevar.name 和 var.op.nameopt = tf.train.GradientDescentOptimizer(1e-4)grads_and_vars = opt.compute_gradients(total_loss) for grad, var in grads_and_vars: p...

2019-01-11 16:41:05 496

原创 Tensorflow-模型加载推理

input/output nodesckpt.data, ckpt.meta, pb,input/output nodes1.用tensorboardpython tensorflow/python/tools/import_pb_to_tensorboard.py \--model_dir resnetv1_50.pb --log_dir /tmp/tens...

2018-09-05 13:55:45 4093 1

原创 windows 10+Tensorflow 1.5+python 3.5+CUDA 9.0+CUDNN7.0.5配置

截至目前发表此文,Tensorflow windows版本最高支持到1.5,若下载新版本的Tensorflow,其他相关的配置也要相应改变,比如CUDA要下载9.0版本的(注意CUDA9.1还不行,亲测),而cdDNN要下载7.0.5版本的。python 3.5。本文通过Anaconda安装tensorflow,使用spyder编译器很方便。 放一个非常新的安装过程的视频链接,帮助大家:Yout

2018-02-05 20:59:16 22360 3

原创 Tensorflow实现CIFAR-10分类问题-详解四cifar10_eval.py

最后我们采用cifar10_eval.py文件来评估以下训练模型在保留(hold-out samples)样本下的表现力,其中保留样本的容量为10000。为了验证模型在训练过程中的表现能力的变化情况,我们验证了最近一些训练过程中产生的checkpoint files。from __future__ import absolute_importfrom __future__ import divis

2017-12-26 16:42:20 1848

原创 Tensorflow实现CIFAR-10分类问题-详解三cifar10_input.py

从概念上来说,这部分主要是关于数据管道(data pipe)的构建,数据流向为“二进制文件->文件名队列->数据队列->读取出的data-batch”。数据块用于输入到深度学习网络中,进行信息的forward propagation,这部分在定义模型本身部分讨论。在定义整个数据管道的时候,会使用到TensorFlow的队列机制。另外,读原数据文件的时候,要结合文件本身的格式。"""Routine

2017-12-25 18:59:39 989

原创 Tensorflow实现CIFAR-10分类问题-详解二cifar10.py

我们来看cifar10.py,网络结构也主要包含在这个文件当中,整个训练图包含765个操作(operations),cifar10.py图主要有三个模块组成: + Model inputs: inputs()和distorted_inputs()用来增加读图片的操作,分别用力读原始图片和变形后的图片。 + Model prediction: inference()增加操作来perform i

2017-12-24 15:42:27 2753

原创 Tensorflow实现CIFAR-10分类问题-详解一cifar10_train.py

2017.12 北京 房间内 午饭后 纸上学来终觉浅,绝知此事要躬行 CIFAR-10分类问题是机器学习中一个经典的分类问题,图片库中包含10类物体,每一张图片都是32*32像素的RGB图片.本文就Tensorflow官网上CIFAR-10分类问题的源代码进行详细解释。官网中采用了一个较小的CNN网络实现,但是代码中采用了tensorflow的很多API功能,方便初学者学习。 代码主要包括以下几

2017-12-24 15:35:34 3023

原创 LeetCode随笔之排序算法

快速排序void quicksort(int A[],int l,int r){ if(l<r) { int i=l; int j=r; int x=A[l]; //while循环保证把第一个数A提出来,把从右往左数的比A小的放到A的坑里; //把从左往右数比A大的放到右边空出来的坑里;

2017-09-06 17:42:02 249

原创 LeetCode随笔之backtracking

LeetCode随笔之回溯

2017-09-05 14:54:48 285

原创 LeetCode随笔之DFS深度优先搜索

Given an m x n matrix of non-negative integers representing the height of each unit cell in a continent, the “Pacific ocean” touches the left and top edges of the matrix and the “Atlantic ocean” touche

2017-08-24 21:50:37 408

原创 LeetCode随笔之BFS广度优先搜索

(迷宫初级版)(迷宫进阶版)假设一个探险家被困在了地底的迷宫之中,要从当前位置开始找到一条通往迷宫出口的路径。迷宫可以用一个二维矩阵组成,有的部分是墙,有的部分是路。迷宫之中有的路上还有门,每扇门都在迷宫的某个地方有与之匹配的钥匙,只有先拿到钥匙才能打开门。请设计一个算法,帮助探险家找到脱困的最短路径。如前所述,迷宫是通过一个二维矩阵表示的,每个元素的值的含义如下 0-墙,1-路,2-探险家的起始

2017-08-24 17:14:48 675

原创 LeetCode随笔之链表

输入两个链表,找出它们的第一个公共结点。/*找出2个链表的长度,然后让长的先走两个链表的长度差,然后再一起走(因为2个链表用公共的尾部)*/class Solution {public: ListNode* FindFirstCommonNode( ListNode* pHead1, ListNode* pHead2) { int p1Len=find...

2017-08-24 16:57:27 218

原创 LeetCode随笔之栈

输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的) 入栈1,2,3,4,5 出栈4,5,3,2,1 首先1入vector stack,此时栈顶1

2017-08-23 15:39:25 258

原创 LeetCode随笔之Binary Tree(二叉树)

二叉搜索(排序)树建树及其他操作#include<stdio.h>#include<stdlib.h>typedef struct node{ double w; struct node *l,*r;}*Node;void Build(Node &rt,double a)//建树{ if(rt==NULL) { rt=new node;

2017-08-23 15:37:08 207

原创 LeetCode随笔之Array

一. Array 1. Given an array S of n integers, find three integers in S such that the sum is closest to a given number, target. Return the sum of the three integers. You may assume that each input would

2017-08-20 20:00:11 178

空空如也

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

TA关注的人

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