- 博客(39)
- 收藏
- 关注
原创 java后端笔记
ThreadLocal是每个Thread线程内部维护了一个ThreadLocalMap的成员变量,Map中的每个元素是一个Entry,key-value形式,key是对ThreadLocal对象的弱引用,value是具体set和get的Obect。弱引用是如果引用的对象只剩下弱引用,那么GC的时候就会把该对象回收,因此key被回收了,则无法通过key找到value,且Entry中对value是强引用,value将一直不会被回收。
2023-09-18 22:42:41
458
原创 C++笔记
记录下写得比较好的文章!externC/C++中extern关键字详解面试题C++面试常问问题汇总2017年阿里面试必会20道C++面试题!
2022-03-06 22:57:43
158
原创 C++之main之前执行函数
全局变量、全局static变量是在程序加载后,main函数执行之前进行初始化的,借助这一特性,可以实现main之前执行特定函数。#include <iostream>using namespace std;int func1() { cout << "func1()" << endl; return 0;}int i = func1();static int j = func1();int main() { cout <
2022-03-06 17:21:12
304
原创 C++之构造、析构函数在继承中的调用关系
继承关系中,构造函数、析构函数的调用顺序:在构造派生类时,调用顺序为:父类构造-子类构造-子类析构-父类析构class Base1 {public: Base1() { cout << "Base1()" << endl; } ~Base1() { cout << "~Base1()" << endl; }};class Derived1 : public Base1 {public: Derived1() { cout
2022-03-02 21:54:08
1655
原创 C++之extern
本文会从实践中总结出extern关键字的作用。全局变量extern只是声明了变量,并未定义变量,即没对变量分配内存空间。如下例子,我只编译main.cpp:main.cpp:#include<iostream>using namespace std;extern int i;int main() { ++i; cout << "i: " << i << endl; return 0;}编译:g++ main.
2022-03-01 21:35:05
2935
原创 基于EasyDarwin、ffmpeg实现rtsp推流,及VLC播放
文本主要是对工具等的一些实现,并不包含代码。主要是在本地,借助EasyDarwin启动rtsp服务器,用ffmpeg进行rtsp数据源的推流,最后用vlc在本地播放视频流。安装EasyDarwin官网:http://www.easydarwin.org/ffmpeg官网:https://ffmpeg.org/其中linux版本,解压之后,./configure --prefix=/usr/local/ffmpegVLC官网:https://www.videolan.org/wind
2022-02-19 21:03:57
3648
原创 CMake之add_custom_target
本文介绍了CMake中的add_custom_target命令。使用的CMake版本是3.22.1。CMake中一切都是基于target的,如add_library会产生一个library的target,add_executable会产生一个exe的target…本文的add_custom_target会根据命令的参数生成一个target,这个target相对的可以更定制化一点。官方文档:https://cmake.org/cmake/help/v3.22/command/add_custom_tar
2022-02-08 22:08:32
18945
1
原创 CMake之ExternalProject安装boost
这是CMake中用于管理第三方库的命令。本文使用的CMake版本是3.22.1。官方文档:https://cmake.org/cmake/help/v3.22/module/ExternalProject.htmlExternalProject_Add定义一个target,包括以下的步骤:downloadupdate/patchconfigurebuildtestdownload支持指定网上压缩包的url,以及本地的压缩包。...
2022-01-24 23:09:55
1859
1
原创 CMake之add_executable
本文使用CMake版本为3.22.1。add_executable的官方文档:https://cmake.org/cmake/help/v3.22/command/add_executable.html?highlight=add_execuable语法创建名为<name>的target,这个target在make的时候会编译为可执行文件。编译的源文件为[source1] [source2]…。根据平台的不同,编译后的可执行文件名可能为<name>.exe或者。关于编译的产
2022-01-23 09:42:53
23938
1
原创 Centos7的docker安装配置
安装dockeryum install docker启动dockersystemctl start docker启动可能会失败:根据systemctl status docker -l:需要以新的内核启动或者在启动docker的时候禁用selinux解决方式:修改/etc/sysconfig/docker对OPTIONS='--selinux-enabled…改为OPTIONS='--selinux-enabled=false修改后再启动即可。自启动docker每次打开服务
2022-01-12 21:06:03
291
原创 并不详细的计算机视觉算法汇总(持续更新)
目标跟踪常见比赛VOTVOT: Visual Object Tracking官网: https://www.votchallenge.net/评价指标(2020):Accuracy准确率Robustness鲁棒性,也是错误率EAO(Expected Average Overlap)综合了Accuracy和Robustness的评价指标评价指标每年都不太一样,可参考官方对当年Challenge的公告。GOTURN 2016GOTURN:Generic Object Tra
2021-01-24 17:53:29
1601
原创 github笔记
创建版本库: git init工作区(Working Directory)→暂存区(stage): git add file暂存区→master分支: git commit -m "comment"查看版本库状态: git status查看修改: git diff file,对比当前file与master分支的变化查看修改(工作区和分支的指定版本): git diff HEAD -- file,git diff id -- file查看历史记录: git log查看历史记录(简易输出): gi
2020-12-20 10:54:47
233
翻译 【论文翻译】SORT:SIMPLE ONLINE AND REALTIME TRACKING
SIMPLE ONLINE AND REALTIME TRACKINGAlex Bewley†, Zongyuan Ge†, Lionel Ott⋄, Fabio Ramos⋄, Ben Upcroft†Queensland University of Technology†, University of Sydney⋄论文: https://arxiv.org/abs/1602.00763代码: https://github.com/abewley/sortABSTRACT本文探讨了一种实用
2020-11-25 14:14:06
2834
翻译 【论文翻译】ROLO:Spatially Supervised Recurrent Convolutional Neural Networks for Visual Object Tracking
Spatially Supervised Recurrent Convolutional NeuralNetworks for Visual Object TrackingGuanghan Ning∗, Zhi Zhang, Chen Huang, Zhihai HeDepartment of Electrical and Computer EngineeringUniversity of MissouriColumbia, MO 65201{gnxr9, zzbhf, chenhuang,
2020-11-24 16:41:14
1404
1
原创 C++之重载、覆盖、隐藏、虚函数
C++的重载、覆盖、隐藏、虚函数、纯虚函数等概念,都体现于多态的体系中,我会用简单的例子阐述清楚。本文提及的 父类 即 基类,子类 即 派生类。先看demo:#include <stdio.h>class OverLoadClass{ public: void run(int i) {printf("int: %d\n", i);} void run(float i) {printf("float: %f\n", i);}// void run(float j) {pr
2020-11-02 21:24:50
615
原创 华为机试:购物单问题(动态规划)
题目描述:王强今天很开心,公司发给N元的年终奖。王强决定把年终奖用于购物,他把想买的物品分为两类:主件与附件,附件是从属于某个主件的,下表就是一些主件与附件的例子:主件附件电脑打印机,扫描仪书柜图书书桌台灯,文具工作椅无如果要买归类为附件的物品,必须先买该附件所属的主件。每个主件可以有 0 个、 1 个或 2 个附件。附件不再有从属于自己的附件。王强想买的东西很多,为了不超出预算,他把每件物品规定了一个重要度,分为 5 等:用整数 1 ~ 5 表示,第
2020-10-21 16:23:02
1483
1
原创 Python的深拷贝与浅拷贝
Python的拷贝应该是有三种形式分别是赋值:origin2 = origin浅拷贝:cpy1 = copy.copy(origin)以及深拷贝:cpy2 = copy.deepcopy(origin)比较好的例子是列表嵌套各种元素,先看一下实验对比结果:可以看出赋值只是用另一个名字指向同一个内存空间,而浅拷贝和深拷贝都开辟了新的内存空间。可以看出==是逐个元素去对比是否相同,而is是判断是否指向同一内存空间。浅拷贝的结果直接指向了嵌套内的列表内存,而深拷贝连嵌套
2020-10-13 12:46:03
731
1
原创 batch size浅谈
Batch Size的概念:每个Batch(批次)的大小。例如所有训练集有1000个样本,每把1000个Sample跑完就是一个epoch。那么在一个epoch中,同时取多少个sample进行训练,就是batch size。当今神经网络的训练中,所需要的训练集是非常庞大的,因此我们没办法一次性把所有训练集放进内存或显存中,统一训练。在同时训练的数量差别上,分三种类型:batch size=1;batch size=n (dataset > n > 1);batch size=siz
2020-09-25 10:43:31
1842
原创 Numpy判断某维度是否相同
在 语义分割(Semantic segmentation) 领域深度学习的label预处理工作中,要把3通道的label数据转为单通道的mask作为训练样本。例如把一堆黑色和红色的像素,转为全是0和1的单通道 mask。最Normal的处理流程为:判断像素的颜色;根据颜色赋值对应的label。那么在步骤一中,就要判断 label 的 channel 维度(例如shape为(480, 1280, 3),则channel维度为最后的3)和 color是否相同。假设 label 大小为 4 x
2020-09-18 18:25:30
1576
原创 解决方案:AttributeError: module ‘labelme.utils‘ has no attribute ‘label_colormap‘
使用labelme的GitHub中提供的json批量转voc格式的脚本,报错如下:后发现是因为copy脚本时选择的版本不对:只要选回master或者自己安装的对应版本再copy就好了:
2020-09-18 09:46:59
1110
3
原创 图像边缘检测
1. 一阶导(First-order derivative)∂f∂x=f(x+1)−f(x)\frac {\partial f}{\partial x} = f(x+1) - f(x)∂x∂f=f(x+1)−f(x)2. 二阶导(Second-order derivative)∂2f∂x=f′(x+1)−f′(x)=f(x+2)−f(x+1)−f(x+1)+f(x)=f(x+1)+f(x−1)−2f(x)\begin{aligned}\frac {\partial^2 f}{\partial
2020-08-02 09:12:06
572
原创 快速排序quicksort笔记
快排采用了分治法的思想和递归的方式进行排序,每次递归都会确定一个位置的数值(此处是位置i)。def _quicksort(l, left, right): if left >= right: return i = left j = right key = l[left] while i < j: # 先从后往前扫,直到小于key while i < j and key <= l[j]: j -= 1 a[i] = a[j] # 此时a[i]已经有了
2020-07-22 22:55:31
323
原创 LintCode刷题笔记
1. DFS1.1 Palindrome Partitioning题目跳转:https://www.lintcode.com/problem/palindrome-partitioning/descriptionclass Solution: """ @param: s: A string @return: A list of lists of string """ def partition(self, s): # write your c
2020-07-16 12:00:59
1214
原创 卡尔曼滤波学习笔记(含公式推导)
假设Kalman Filter用于对位置的预测,那么我们要预测变量有二:位置和速度。1. 位置转换在当前k时刻,p和v分别表示位置(position)和速度(velocity):xk^=(pk,vk)\hat{x_k} = (p_k, v_k)xk^=(pk,vk)每个预测的元素之间都会相互关联,我们用协方差矩阵(covarance matrix)表示:sk=[∑pp∑pv∑vp∑vv]s_k = \begin{bmatrix}\sum_{pp} & \sum_{pv}
2020-06-25 17:06:07
1151
原创 focal loss学习笔记
背景目标检测中,one-stage相比two-stage,要在更稠密的样本中进行筛选和学习(即Dense Predict),而且后者基于proposal的思想,已经初筛掉大部分easy background。因此前景背景(foreground-background)的不平衡(imbalance)是one-stage训练时的主要问题。one-stage在训练时都会面临class-imbalance的问题,会导致两个弊端:训练不高效,大多数位置都是easy negtive,贡献很少的有用学习信号(use
2020-06-20 17:30:14
478
原创 基于Pytorch源码对Adagrad、Adadelta、RMSProp、Adam等自适应学习率进行学习
公式是实现的原理,而源码才是让想法落地的媒介。希望能透过源代码,对原理有更具体的理解,回顾公式,也会有更深入的感受。前期基于Pytorch的源码,对SGD进行了学习:基于torch.optim.sgd.py源码对SGD、momentum、Nesterov学习本文会基于Pytorch源码,对Adagrad进行学习。Adagrad在SGD的年代,我们只能通过学习率(learning rate)来宏观控制网络的参数的学习速度,这从直观上是不太细致的。随着人脑突触的实验进展,发现人脑神经元是有一定稀疏性的
2020-06-16 22:03:34
1051
原创 基于Pytorch源码对SGD、momentum、Nesterov学习
目前神经网络的监督学习过程通常为:数据加载(load)进神经网络经过网络参数对数据的计算,得出预测值(predict)根据预测值与标注值(label)之间的差距,产生损失(loss)通过反向传播(BP:Back Propagation)对神经网络的各个参数产生梯度(gradient)依据特定的梯度下降算法(如SGD:Stochastic Gradient Descent随机梯度下降),基于梯度对参数进行更新前五步重复,直到网络参数收敛(convergence)本文主要想基于Pytorch的
2020-06-14 22:34:48
5298
2
原创 二维卷积神经网络的初始化为0及其他初始化方式对比
今天想结合实验及公式讨论下,二维卷积神经网络下,初始化为0初始化为常数kaiming初始化3种初始化方式的结果。并分析复杂模型不能初始化为0的根本原因。1. 实验背景先介绍下实验模型,用的是Pytorch下两层卷积网络,各接BN层和ReLU层:class Model(nn.Module): def __init__(self): super(Model, self).__init__() self.conv1 = nn.Conv2d(3, 3, 3, padding=1, bi
2020-06-07 20:54:39
2332
原创 Batch Normalization的理解体会
网络上对于Batch Normalization的讲解也非常多了,本文主要想记录下对此的心得体会,并总结下我所理解的BN的优势。在此先mark一下我认为写得比较全面的资料:BN的原理(文章1):【深度学习】深入理解Batch Normalization批标准化BN的论文:Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate ShiftBN work的原因(文章2):为什么B
2020-06-06 20:23:37
292
原创 softmax+cross-entropy的前向计算、反向传播的公式推导
本文偏公式推导。1. Softmax前向计算把Softmax把Softmax把Softmax输出的概率定义为 pip_ipiSoftmax(ai)=pi=eai∑jNeajSoftmax(a_i) = p_i = \frac {e^{a_i}} {\sum_j^N e^{a_j}}Softmax(ai)=pi=∑jNeajeai模型输出[a1,a2,...,aN][a_1, a_2, ..., a_N][a1,a2,...,aN],共N个值。其中aia_iai代表第iii
2020-05-29 08:36:42
2581
1
原创 目标检测的AP(Average Precision)代码解析与深入思考
1. 引言Average Precision的原理可见 多标签图像分类任务的评价方法-mAP ,个人感觉文章对计算流程、PR曲线(Precision-Recall)、图例都展示得比较好。另外,忘记从哪篇文章中提到的一句讲得特别精髓,大致意思如下:对confidence socre降序排列后,再把第k行作为top-k的分界线,进行Precision和Recall的计算。所以我们计算AP是对conf排序后,从上往下的计算,一直从top-1到top-N。通常情况下,从top-1到top-N伴随的是召
2020-05-26 23:13:51
1934
原创 Evaluation中Percision和Recall的理解
1.评价指标在机器学习、深度学习快速发展的时代,模型和技巧层出不穷,那么就需要有一定的指标去量化地评价这些新的idea,是否work,优化的幅度有多大。2.混淆矩阵在分类任务中,通常可以用混淆矩阵比较直观地分析,各类别的预测准确度,模型在哪个类别的性能较低,以确定后续优化的方向。预测 \ 标签猫狗总计猫16117狗41923总计202040据混淆矩阵所示,共40张图待预测,其中20张猫、20张狗。可直观得知,模型对于狗的预测效果更好。此
2020-05-25 21:40:42
710
原创 Pytorch损失函数之BCELoss与BCEWithLogitsLoss
1.先说结论nn.BCEWithLogitsLoss等于nn.BCELoss+nn.Sigmoid。主要用于二分类问题,多标签分类问题。图为Pytorch Document对于BCEWithLogitsLoss的描述,这个损失函数结合了Sigmoid和BCELoss。2.公式分解BCEWithLogitsLoss假设有N个batch,每个batch预测n个标签,则Loss为:Loss={l1,...,lN}, ln=−[yn⋅log(σ(xn))+(1−yn)⋅log(1−
2020-05-24 10:05:37
8827
1
原创 Pytorch损失函数之nn.NLLLoss与nn.CrossEntropyLoss
1. 先说结论nn.CrossEntropyLoss(简称CEL)等于nn.NLLLoss(简称NLL)+torch.log+F.softmax主要用于多分类问题的损失计算。图为Pytorch对于CEL的描述,这个criterion(指标)结合了nn.LogSoftmax()和nn.NLLLoss()nn.LogSoftmax()其实也就是torch.log+F.softmax2.CrossEntropyLoss(CEL)公式分解CEL(x,class)=−log(exp(x[class])
2020-05-23 21:26:25
2021
原创 非极大抑制nms(non-maximum suppression)的pytorch实现
nms作用于目标检测模型中,从众多感兴趣的区域中筛选出最优的结果。如R-CNN系列的目标检测,数千个ROI(region of interes感兴趣区域)经过模型的计算后,仍输出了不少的bounding box(后简称bbox)。实际上,图像中的目标寥寥无几,nms就是从bbox中提取每个目标最可信的结果。非极大值抑制,顾名思义,就是对置信度并非最大的bbox进行抑制(或进行排除),只留...
2020-04-04 12:05:13
1908
原创 pytorch的cross_entropy实现
据pytorch的官方文档,torch.nn.functional里的cross_entropy是基于log_softmax和nll_loss实现的。没关系,通过最简单的torch原函数复现,可以较深理解当中的原理。import torchdef my_cross_entropy(input, target, reduction="mean"): # input.shape: torch...
2020-04-03 21:39:23
5255
原创 LintCode-605 Sequence Reconstruction 序列重构
描述判断是否序列 org 能唯一地由 seqs重构得出.org是一个由从1到n的正整数排列而成的序列,1 ≤ n ≤ 10^4。重构表示组合成seqs的一个最短的父序列 (意思是,一个最短的序列使得所有 seqs里的序列都是它的子序列).判断是否有且仅有一个能从 seqs重构出来的序列,并且这个序列是org。样例例1:输入:org = [1,2,3], seqs = [[1,2...
2020-03-09 23:01:03
389
原创 pandas获取近两个月时间的index
为了通过近两个月的日期作为index,制作pandas库的DataFrame,因此我需要分别获取近两个月的天数,再用pandas.data_range(start, end, periods)生成近两个月的表头。有两种思路:1)获取两个月的起始与结束日期;2)获取两个月的起始日期和天数。天数其实就是基于起始和结束日期所得,因此用思路(1)更方便。据我所知,python有三个处理时间、日期...
2019-07-30 11:25:51
698
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人