自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(57)
  • 资源 (2)
  • 收藏
  • 关注

转载 minAreaRect

函数 cv2.minAreaRect() 返回一个Box2D结构 rect:(最小外接矩形的中心(x,y),(宽度,高度),旋转角度)。分别对应于返回值:(rect[0][0], rect[0][1]), (rect[1][0], rect[1][1]), rect[2]借用原博主的图片(侵即删):注意 :1. 旋转角度θ是水平轴(x轴)逆时针旋转,与碰到的矩形的第一条边的夹角。并且这个边的边长是width,另一条边边长是height。也就是说,在这里,width与height不是...

2021-07-27 13:47:32 663

原创 制作Pascal Voc 格式标柱文件

# -*- coding: utf-8 -*-import osimport cv2import shutilfrom xml.etree import ElementTreefrom xml.etree.ElementTree import Element, SubElementdef pretty_xml(element, indent, newline, level=0): """ 通过加入缩进、换行,美化xml :param element: Elment类.

2021-07-21 10:07:44 145

原创 感受野的理解

Receiptive Field: 特征图上每个grid(一个特征向量, 维度=nchannels)所对应的输入图片上一个矩形区域感受野不是越大越好 ,比如在文本识别任务中,特征序列的每个step的感受野和一个word的大小相当理论上是最好的,太大的话,一个激活对应这个几个文字,反而不利于分类。...

2021-07-18 15:27:54 465

原创 梯度是怎么计算的

梯度是怎么计算的import torch a = torch.randn((3,3), requires_grad = True)w1 = torch.randn((3,3), requires_grad = True)w2 = torch.randn((3,3), requires_grad = True)w3 = torch.randn((3,3), requires_grad = True)w4 = torch.randn((3,3), requires_grad = Tru...

2021-07-18 15:19:44 1037

转载 python 派生类方法重写必须要有相同的函数签名吗

QuestionPython Method overriding, does signature matter?Lets say I haveclass Super(): def method1(): passclass Sub(Super): def method1(param1, param2, param3): stuffIs this correct? Will calls to method1 always go to the sub cl...

2021-04-28 11:44:19 1194

原创 pytorch computation graph

1. 动态图 vs 静态图pytorch 是动态建图,好处是方便使用python control flow statements控制计算流走向,每个iteration可以有完全不同的计算图,同时也比较容易处理shape不确定的tensors or variables。除此,dynamic graphs are debug friendly, becuase it allows for line by line execution of code and you can have access to al

2021-04-25 15:03:39 9398

转载 3D Human Body Reconstruction

本文简要介绍与 3D 数字人相关的研究,包括常用 3D 表示、常用 3D 人体模型、3D 人体姿态估计,带衣服 3D 人体重建,3D 衣服建模,以及人体动作驱动等。常用3D表示目前 3D 学习中,物体或场景的表示包括显式表示与隐式表示两种,主流的显式表示包括基于 voxel、基于 point cloud、和基于 polygon mesh 三种,隐式表示包括基于 Occupancy Function[1]、和基于 Signed Distance Functions[2]两种。下表简要总结了各种表...

2021-04-13 17:55:55 1554

转载 谈谈基于深度相机的三维重建

三维重建(3D Reconstruction)技术一直是计算机图形学和计算机视觉领域的一个热点课题。早期的三维重建技术通常以二维图像作为输入,重建出场景中的三维模型。但是,受限于输入的数据,重建出的三维模型通常不够完整,而且真实感较低。随着各种面向普通消费者的深度相机(depth camera)的出现,基于深度相机的三维扫描和重建技术得到了飞速发展。以微软的Kinect,华硕的XTion以及因特尔的RealSense等为代表的深度相机造价低廉,体积适当,操作方便,并且易于研究者和工程师进行开发。三维重...

2021-03-25 16:45:29 7226 2

原创 pytorch 获取分布在不同GPU上的某个tensor的值

torch.distributed支持3中backends,'gloo', 'mpi' 和 'nccl', 每种backend支持的函数是不同的,需要查表确认https://pytorch.org/docs/stable/distributed.html#下面以backend = 'nccl' 为例, 演示获取分布在不同GPU上的某个tensor的值的方式1. reduce or all_reduce # 获取该tensor的均值box_iou = comput...

2021-03-13 17:00:14 1870

原创 pytorch DistributedDataParallel

1. 为什么每个epoch都要调用distributed_sampler.set_epoch(epoch) 函数一次?torch.utils.data.distributed.DistributedSampler: 在多机多卡情况下分布式训练数据的读取也是一个问题,不同的卡读取到的数据应该是不同的。dataparallel的做法是直接将batch切分到不同的卡,这种方法对于多机来说不可取,因为多机之间直接进行数据传输会严重影响效率。于是有了利用distributed_sampler确保datalo...

2021-02-23 10:01:41 345

翻译 Linux 磁盘分区大于2T

Linux机器磁盘分区,如果分区大于2T,使用 fdisk /dev/xxx 划分后的分区可能会小于等于2T。 fdisk is not an option root@turtle:~# fdisk /dev/sdbDevice contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabelBuilding a new DOS disklabel with disk identifier 0xbe0...

2021-02-20 14:29:51 818

原创 python 派生类方法可以改变函数签名

派生类方法是可以改变父类方法的函数签名的,但为了避免出错,父类方法要满足LSP.class Super(): def method1(*args): passclass Sub(Super): def method1(param1, param2, param3): stuffIn Python, methods are just key-value pairs in the dictionary attached to the class. When you a

2021-01-23 17:33:07 256

原创 Linux Shell 学习

Linux Shell 学习1. 基础#!/bin/bash# 变量声明a=1 # 等号两边不能有空格# 使用expr做整数运算b=`expr 2 \* 2` # 乘法中的*号需要做转义\*c=`expr $b + 1` # 条件表达式要放在方括号之间,并且要有空格if [ $b == $c ]then echo "b 等于 c"elif [ $b != $c ]then echo "b 不等于 c"fi# 关系运算, 关系运算符只支持数字,不支持字符.

2021-01-21 17:48:04 76

原创 Linux 命令

1. nautilus最近使用Ubuntu的时候发现了一个很好用的小命令:nautilusnautilus是GNOME桌面下的一个文件管理工具。通过这个命令我们可以在终端下非常方便的打开指定目录的文件。$ nautilus your_pathyour_path支持绝对路径和相对路径两种方式;当your_path 省略时,默认打开家目录“~”。如果当前打开了多个文件管理器,不需要鼠标一个个点掉,一个命令就可以将其尽数关闭 $ nautilus -q...

2021-01-18 09:58:19 70

原创 mmdetection 环境配置

1. 配置清华源镜像通道conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anac

2021-01-05 19:08:03 377

原创 双目测距的基本公式推导

双目深度估计使用两个camera,通过双目矫正把问题从深度估计转化到特征点匹配、视差计算的问题,这样的转换将学习目标从深度变成了视差,这样做是因为视差相对于深度来说更直观一些。双目校正是根据摄像头定标后获得的单目内参数据(焦距、成像原点、畸变系数)和双目相对位置关系(旋转矩阵和平移向量),分别对左右视图进行消除畸变和行对准,使得左右视图的成像原点坐标一致。视差图是同一个场景在两个相机下成像的像素的位置偏差,下图中的即是视差。P是待测物体上的某一点,OR与OT分别是两个相机的光心,点P在两个相机感

2020-12-22 11:44:27 4801 1

原创 python 修饰器

修饰器就是一个普通的python函数,接受一个函数作为其唯一的参数, 并返回一个新函数(一般是传入函数的封装)。下面的my_decorator就是一个简单的修饰函数:def my_decorator(func): def wrapper(): print("Something is happening before the function is called.") func() print("Something is happening a

2020-12-22 10:12:43 177 1

原创 Python打包分发工具setuptools简介与扩展

Python打包分发工具setuptools简介作为Python标准的打包及分发工具,setuptools可以说相当地简单易用。它会随着Python一起安装在你的机器上。你只需写一个简短的setup.py安装文件,就可以将你的Python应用打包。本文就会介绍下如何编写安装文件及如何打包分发。首先,如果你需要另外安装setuptools,你可以使用下面的命令:$ wget http://peak.telecommunity.com/dist/ez_setup.py$ sudo pyth.

2020-12-16 13:36:34 296

原创 Ubuntu 通过NFS挂载远程目录到本地

Ubutun 通过NFS挂载远程目录到本地本地机器每次对于自身挂载的远程文件的访问,实际上都是发送了一次新的RPC请求,请求目标服务器,将其对应的数据实时返回到本地机器的文件当中;(Linux中存在这样一个应用即:Network File System即NFS网络文件系统,一种使用于分散式文件系统的协定,让应用程序在客户端通过网络访问位于远程磁盘中的数据,是在类Unix系统间实现对应的磁盘文件共享的一种方法)。NFS于RPC的关系:NFS在文件传送或信息传送过程中依赖于RPC协议。RPC...

2020-12-03 17:49:12 2230

原创 磁盘查看/挂载/修改目录

磁盘查看/挂载/修改目录查看df -h 查看分区情况及数据盘名称,只能查看已经挂载的 fdisk -l 可以查看所有磁盘,包括未挂载的挂载把已经挂载在/home目录上的硬盘挂载到/data目录上, 如下操作mkdir /data(如果没有data目录就创建,否则此步跳过)umount /home(卸载硬盘已挂载的home目录)mount /dev/sdb3 /data (挂载到data目录)vim /etc/fstab (编辑fstab文件修改或添加,使重启后可以自动挂载)..

2020-12-03 17:15:49 760

原创 Git 学习

基础命令1. git --version 查看机器上安装的git的版本2. git config配置git的配置文件,git配置级别主要有以下3类:git config --local 仓库级别, 优先级最高,仓库级别对应的配置文件是当前仓库下的.git/configgit config --global用户级别,优先级次之,用户级别对应的配置文件是用户宿主目录下的~/.gitconfiggit config --system系统级别,优先级最低,系统级别对应的配...

2020-11-11 10:48:57 80

原创 Background Matting: The World is Your Green Screen

文章要点用手持相机拍摄的图片(包含主体) + 小位移背景图 (不包含主体)作为模型的主要输入,并先在Adobe Matting Dataset 合成数据集上进行正常监督学习,最后再通过teacher-student learning + adversarial learning 减少合成数据和真实拍摄数据间的 domain gap, 提高模型的泛化能力。1. 模型输入不同于matting常见的 image + trimap 组合, 论文提出使用image I + background B‘.

2020-11-06 16:25:13 439

转载 h5py vs npy/npz

Data engineering for computer visionLately, I've been thinking hard about the best way to organize my data before feeding it to a machine learning classifier or regressor. I have a few guiding princ...

2020-04-30 15:17:08 1189

转载 python multiprocessing 中imap和map的不同

本篇文章讲python的multiprocessing中imap、map、imap_unordered和map_async方法之间的区别。参考链接主要有以下两个区别:它们使用你传递给它们的可迭代的对象的方式。 它们返回结果的方式。map通过将改可迭代的对象转换为列表(假设它不是列表), 将其分解为块,并将这些块发送到池中的工作进程中。 将该对象分解为块比一次直接执行一个对象要更...

2020-04-30 14:13:20 6393

原创 Linux下批量Kill多个进程的方法

命令:ps -aux | grep keyword | grep -v grep | cut -c 9-15 | xargs kill -9拆解:ps -aux : 查看系统进程的命令 | : 管道符用来隔开两个命令,管道符左边命令的输出会作为管道符右边命令的输入 grep kw : 筛选出含有关键字的进程 grep -v kw: 筛选出不包含关键字的进程(即去除包含关键字的进...

2020-04-16 12:44:08 179

转载 linux中grep命令的用法

作为linux中最为常用的三大文本(awk,sed,grep)处理工具之一,掌握好其用法是很有必要的。首先谈一下grep命令的常用格式为:grep [选项] ”模式“ [文件]grep家族总共有三个:grep,egrep,fgrep。常用选项:  -E :开启扩展(Extend)的正则表达式。  -i :忽略大小写(ignore case)。  -v :反过来(inv...

2020-04-15 10:28:10 133

转载 map vs imap in multiprocessing.Pool

There are two key differences betweenimap/imap_unorderedandmap/map_async:The way they consume the iterable you pass to them. The way they return the result back to you.mapconsumes your iterabl...

2020-04-14 14:14:52 319

原创 Group Normalization vs Batch Normalization

BN 存在哪些问题:1. BN 依赖大batch size, 当 batch size 太小时, batch statistics 变得不准确; 而显存限制了batch size变大,尤其在检测、分割等比较占用显存的模型上。 batch size上又是一个工程问题, 毕竟去年的coco,Face++主要赢在大batch上,这是最重要的motivation。2.BN要求batch分布比较理...

2020-03-03 17:58:43 321

转载 Normalization vs Regularization in Machine or Deep learning

Normalisationadjusts the data;regularisationadjusts the prediction function.

2020-03-03 13:44:55 137

原创 论文阅读笔记 -- ParsingNet

ParseNet: Looking Wider to See BetterThe FCN approach can be thought of as sliding an classification network around an input image, and processes each sliding window area independently. In par...

2020-02-24 11:49:05 602

原创 argparse

1) argparse是python用于解析命令行参数和选项的标准模块,用于代替已经过时的optparse模块。例如 python parseTest.py input.txt output.txt --user=name --port=8080。使用步骤:1:import argparse2:parser = argparse.ArgumentParser()3:parser.ad...

2019-03-06 12:04:53 465

转载 Image Similarity Siamese Network

OverviewWith the kernel I am trying to run a simple test on using Siamese networks for similarity on a slightly more complicated problem than standard MNIST. The idea is to take a randomly initialized...

2018-03-27 20:56:49 728

转载 numpy einsum

What does einsum do?Imagine that we have two multi-dimensional arrays, A and B. Now let's suppose we want to...multiply A with B in a particular way to create new array of products; and then maybesum ...

2018-03-15 16:24:25 943

原创 拉格朗日乘子解Robust PCA以及Python实现

Robust PCA 将一个矩阵X分解成一个低阶矩阵A和一个稀疏矩阵E.1.  Problem Formulation  由于rank 和 L0 norm 都是non-convex and non-smooth, 所以我们通常把它们转化成求解下列松弛凸优化问题:     nuclear norm and L1 norm 都是 convex 的, 因此可以转化为经典的凸函数优化问题.2. Solve...

2018-03-13 14:59:50 5950 3

转载 Spatial Transformer Network

STN架构中,分为三个部分:Localisation netGrid generatorSamplerLocalisation net 把feature map U作为输入,过连续若干层计算(如卷积、FC等),回归出参数θ,在我们的例子中就是一个[2,3]大小的6维仿射变换参数,用于下一步计算;Grid generator 在source图中找到用于做插值(双线性插

2018-01-08 17:37:06 658

转载 How a Kalman filter works, in pictures

I have to tell you about the Kalman filter, because what it does is pretty damn amazing.Surprisingly few software engineers and scientists seem to know about it, and that makes me sad because it i

2017-12-31 17:59:02 339

转载 A Comprehensive guide to Fine-tuning Deep Learning Models in Keras

In this post, I am going to give a comprehensive overview on the practice of fine-tuning, which is a common practice in Deep Learning.First, why do we fine-tune Models?When we are given a

2017-12-21 13:33:37 321

转载 opencv 鼠标选择ROI

鼠标操作属于用户接口设计,以前一直使用Qt来做,但是如果只需要简单的鼠标,键盘操作,直接调用opencv库的函数也未尝不可,鼠标操作之前已经接触很多了,在MFC,QT,OpenGL,等等中,理论主要就是两点,一是监控鼠标操作,鼠标点击,移动,松开,然后通过mouse_event识别判断出那一种鼠标的操作,根据不同的操作然后进行处理,二是在主函数中加入鼠标的回调函数,将鼠标操作与程序的窗口绑定。

2017-12-07 15:57:56 508

转载 Caffe训练源码基本流程

Caffe简介一般在介绍Caffe代码结构的时候,大家都会说Caffe主要由Blob Layer Net 和 Solver这几个部分组成。Blob::: 主要用来表示网络中的数据,包括训练数据,网络各层自身的参数(包括权值、偏置以及它们的梯度),网络之间传递的数据都是通过 Blob 来实现的,同时 Blob 数据也支持在 CPU 与 GPU 上存储,能够在两者之间做同步。

2017-11-21 16:27:37 224

原创 为什么caffe在训练时准确率很高,而用classification测试时准确率很低

预处理不一致造成的。在训练时, 网络应该使用的是pixel mean, 而在使用网络时,在classification.cpp中默认计算的是channel mean. 解决方式:在classification.cpp里的setMean方法计算的是图片每个channel的平均值,即channel_mean, 需要改成每个pixel 的平均值,即pixel_mean. 其实mean

2017-11-21 15:07:12 5021

L298N中文数据手册

L298N详细中文手册,包括直流电机和步进电机两个模块。。

2012-10-02

c/c++获取系统时间

利用c/c++编程实现获取系统时间,制作日历或时钟

2012-10-02

空空如也

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

TA关注的人

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