自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Hobart

记录你的点点滴滴

  • 博客(48)
  • 收藏
  • 关注

原创 linux 显卡驱动安装和cuda安装

1、安装系统插件yum -y install gcc kernel-devel kernel-headers2、禁止开源驱动vim /usr/lib/modprobe.d/dist-blacklist.conf添加blacklist nouveau注释blacklist nvidiafb3、重新建立文件rm -rf /boot/initramfs-$(uname -r).img.bakmv /boot/initramfs-$(uname -r).img /boot/ini

2021-05-17 16:13:53 929

原创 快速排序的经典实现

递归分治法的典型实现。每进行完一次分区操作,用基准值隔断前后的数据,前面的数据均比基准值小,后面的数据均比基准值大# 分区操作def partition(nums, left, right): pivot = nums[left] # 基准值 while left < right: while left < right and nums[right] >= pivot: right -= 1 nums[l..

2021-04-28 10:21:25 160

原创 iterm2连接远程服务器

本篇文章介绍使用iterm2,通过跳板机连接服务器的方法。其中iterm2默认已经安装并配置完成。方法一:cd ~/.ssh/vim config编辑以下内容到config.其中Host为自定义的名字;Hostname为IP地址;Port为端口号;User为用户名。具体例子如下所示Host test_nameHostname 127.0.0.1Port 22User root执行以下命令后输入密码即可登录服务器ssh test_name方法二:cd ~/.

2021-03-24 14:51:45 4619 1

原创 浅读CV中的注意力机制(Non-local,SENet,CBAM )

1.Non-local Neural Networks从Non-local Neural Networks 开始计算机视觉中使用attention开始火热,这是一种基于空间注意力机制的网络。Non-local Neural Network主要解决的问题:当图像中两个特征距离比较远时,浅层卷积无法覆盖全部特征,特征提取很难提取到完整的信息。传统的解决方案:传统CNN通过堆叠多个卷积模块来形成大感受野,使用大感受野来覆盖到全部的特征信息。这样做主要有三个缺点:(1) 捕获距离远的特征,效

2021-03-19 11:53:05 3222

原创 incremental few-shot learning论文阅读

incremental few-shot learning论文的主要目的:在不使用原始训练数据的情况下,对新增加类别的少量数据进行训练以进行增量学习。Related Work:object detection作者比较了一阶段和二阶段检测模型,并讲述了一般检测模型的不足。检测模型需要大量有标注的数据进行训练,当线上部署的模型需要新增类别时,模型的实用性和可延伸性不足的缺点暴露。作者基于CenterNet作为BackBone进行优化。Few-shot learningFew-shot lea

2020-08-28 15:36:05 1526 5

原创 YOLO1-5的BackBone和Neck

YOLO1:Backbone: GoogLeNet with no inception modulesNeck: None
Head: YOLO [fc(1570)->7*7(5*2+20)]YOLO2:Backbone: darknet19Neck: None
Head: passthrough [conv->13*13*anchor*(5+20)]7*7卷机使用3*3加1*1卷机替代。减少计算量小,防止过拟合;网络可以做的更深,更好的提取特征。 使用.

2020-08-20 13:20:40 3295 1

原创 YOLO1-YOLO5检测头的改进

YOLO1:最后检测头7*7grid,每个点预测两个框(一个大框一个小框),分类用one hot,如下图所示:YOLO2:7*7 grid 太小了,增大为13*13 每个grid对应两个人为设计的anchor增加为5个统计得到的anchor(在voc2007和coco上都进行了统计,coco相比voc小框更多) 每个anchor对应一个类别,13*13*(5*5+5*20)=422500 outputs 损失函数gt:1 >> iouYOLO3:分为3个检测头分别检测

2020-08-14 16:58:38 6575 1

原创 YOLOv5环境配置以及训练私人数据

Git地址:https://github.com/ultralytics/yolov5 1.使用anaconda安装python3.8的环境conda create -n yolo5 python=3.8 #anaconda下载地址: https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/ 2.安装pytorch1.6 torchvision0.7conda install pytorch==1.6 torchvis...

2020-08-13 21:03:22 3530

原创 CIoU的成长之路

原始的IOU损失函数只要IOU不相交。损失函数不变第一次升级,GIOU:不相交时,两个框的距离变化,loss不变,改进为GIoU loss.第二次升级,DIOU:完全包含时,两个框的距离变化,loss不变,改进为DIoU loss.第三次升级,CIOU:中心点重合但宽高比不同时, loss不变,改进为CIoU loss.CIoU的惩罚项是在DIoU的惩罚项基础上加了一个影响因子a,v,这个因子把预测框长宽比拟合目标框的长宽比考虑进去。其中a是用于做...

2020-08-05 18:22:18 7926

原创 DropBlock

(a)原始输入图像(b)绿色部分表示激活的特征单元,b图表示了随机dropout激活单元,但是这样dropout后,网络还会从drouout掉的激活单元附近学习到同样的信息(c)绿色部分表示激活的特征单元,c图表示本文的DropBlock,通过dropout掉一部分相邻的整片的区域(比如头和脚),网络就会去注重学习狗的别的部位的特征,来实现正确分类,从而表现出更好的泛化。code:import torchimport torch.nn.functional as Ffrom tor..

2020-08-05 17:53:18 322

原创 激活函数Mish

y = x*tanh(ln(1+exp(x)))实验中,随着层深的增加,ReLU激活函数精度迅速下降,而Mish激活函数在训练稳定性、平均准确率(1-2.8%)、峰值准确率(1.2% - 3.6%)等方面都有全面的提高。从图中可以看出,Mish是一个平滑的曲线,平滑的激活函数允许更好的信息深入神经网络,从而得到更好的准确性和泛化;在负值的时候并不是完全截断,允许比较小的负梯度流入。Code:# -*- coding: utf-8 -*-import torchimport torc

2020-08-05 17:09:09 1509 1

原创 Label Smoothing

在分类任务中,我们通常对类别标签的编码使用[0,1,2,…]这种形式。在深度学习中,通常在全连接层的最后一层,加入一个softmax来计算输入数据属于每个类别的概率,并把概率最高的作为这个类别的输入,然后使用交叉熵作为损失函数。这会导致模型对正确分类的情况奖励最大,错误分类惩罚最大。如果训练数据能覆盖所有情况,或者是完全正确,那么这种方式没有问题。但事实上,这不可能。所以这种方式可能会带来泛化能力差的问题,即过拟合。按softmax交叉熵优化时,针对这个样本而言,会让0.721越来越接近于1,因为这

2020-08-05 16:21:49 193

原创 数据增强Mosaic

丰富检测物体的背景,且在BN计算的时候一下子会计算四张图片的数据,使得mini-batch大小不需要很大,那么一个GPU就可以达到比较好的效果。实现思路1、每次读取四张图片。2、分别对四张图片进行翻转、缩放、色域变化等,并且按照四个方向位置摆好。3、进行图片的组合和框的组合主要代码: def load_mosaic(self, index): # loads images in a mosaic s = self.img_size // 2..

2020-08-05 14:56:21 1474

原创 CutMix

Mixup:将随机的两张样本按比例混合,分类的结果按比例分配; Cutout:随机的将样本中的部分区域cut掉,并且填充0像素值,分类的结果不变; CutMix随机生成一个裁剪框Box,裁剪掉A图的相应位置,然后用B图片相应位置的ROI放到A图中被裁剪的区域形成新的样本,计算损失时同样采用加权求和的方式进行求解主要code(Iteration过程中的实现方法):lam = np.random.beta(args.beta, args.beta)rand_index = torch.ran...

2020-08-05 14:37:28 556

原创 深度学习中的BN_CBN_CmBN

BN:反向传播时经过该层的梯度是要乘以该层的参数的,即前向有:反向传播时便有:那么考虑从l层传到k层的情况,有:其中这个便是问题所在。如果Wi小于1,就会发生提督弥散而如果Wi大于1,那么传到这里的时候又会有梯度爆炸问题BN所做的就是解决这个梯度传播的问题,因为BN作用抹去了w的scale影响。BN为了保证非线性的获得,对变换后的满足均值为0方差为1的x又进行了scale加上shift操作(y=scale*x+shift),每个神经元增加了两个参数

2020-08-04 20:16:05 5780 2

原创 kappa与quadratic weighted kappa

kappa系数是统计学中度量一致性的指标, 对于分类问题,一致性就是模型预测结果和实际分类结果是否一致. kappa系数的计算是基于混淆矩阵, 取值为-1到1之间, 通常大于0.kappa quadratic weighted kappakappakappa系数的数学表达:Po​为预测的准确率, 也可理解为预测的一致性:Pe​表示偶然一致性:例子来自:https://blog.csdn.net/weixin_38313518/article/deta...

2020-07-20 17:56:01 4194

原创 玩转NMS

NMS的改进非极大值抑制NMS是目标检测常用的后处理算法,用于剔除冗余检测框,本文将对可以提升精度的各种NMS方法及其变体进行阶段性总结。对NMS进行分类,大致可分为以下六种,这里是依据它们在各自论文中的核心论点进行分类,这些算法可以同时属于多种类别。分类:NMS,Soft-NMS (ICCV 2017) 定位:IoU-Guided NMS (ECCV 2018) 加权平均:Weighted NMS (ICME Workshop 2017) Softer-NMS (CVPR 2019) 自

2020-07-17 17:27:35 544

原创 交叉熵损失函数的进化路程

一.交叉熵损失函数(CrossEntropy Loss)1. 公式与性质交叉熵代价函数同样有两个性质:非负性:目标就是最小化代价函数 克服方差代价函数更新权重过慢的问题导数中没有σ′(z)这一项,权重的更新是受σ(z)−y这一项影响,即受误差的影响。所以当误差大的时候,权重更新就快,当误差小的时候,权重的更新就慢2.交叉熵代价函数是如何产生的? 以偏置b的梯度计算为例,推导出交叉熵代价函数:b的梯度公式为:为了消掉该公式中的我们...

2020-07-16 18:25:54 535

原创 L1 VS L2(深度学习中的L1与L2)

L1 loss L1 loss的数学公式和函数图如下所示:L1函数连续,但是在????−????(????)=0处不可导,L1 loss大部分情况下梯度都是相等的,这意味着即使对于小的损失值,其梯度也是大的,这不利于函数的收敛和模型的学习。但是,无论对于什么样的输入值,都有着稳定的梯度,不会导致梯度爆炸问题,具有较为稳健性的解。L2 loss(MSE loss)MSE曲线的特点是光滑连续、可导,便于使用梯度下降算法,是比较常用的一种损失函数。而且,MSE 随着误差的减小,梯度也在减小

2020-07-10 20:45:11 1807

原创 从YOLO1到YOLO4

Yolov11.1 yolov1网络结构:1.2 yolov1和RCNN比较YOLO将物体检测作为回归问题求解。基于一个单独的end-to-end网络,完成从原始图像的输入到物体位置和类别的输出。从网络设计上,YOLO与rcnn、fast rcnn及faster rcnn的区别如下:[1] YOLO训练和检测,特征提取和分类回归均是在一个单独网络中进行。YOLO没有显示地求取region proposal的过程。而rcnn/fast rcnn 采用分离的模块(独立于网络之外的select

2020-07-10 15:52:05 758 1

原创 Anchor-free之CenterNet

anchor-base VS Anchor-freeAnchor-base存在的问题:•与锚点框相关超参 (scale、aspect ratio、IoU Threshold) 会较明显的影响最终预测效果;•预置的锚点大小、比例在检测差异较大物体时不够灵活;•大量的锚点会导致运算复杂度增大,产生的参数较多;•容易导致训练时negative与positive的比例失衡。Anchor-free算法的优点:•使用类似分割的思想来解决目标检测问题;•不需要调优与anchor相关的超参数

2020-07-09 22:39:58 343

原创 从CornerNet到CornerNet-Lite再到训练自己的数据

从CornerNet到CornerNet-Lite再到训练自己的数据相关论文与代码 相关工作 CornerNet CornerNet-Lite 训练自己的数据一.论文论文CornerNet: Detecting Objects as Paired Keypoints论文链接:https://arxiv.org/abs/1808.01244代码链接:https://github.com/umich-vl/CornerNet论文CornerNet-Lite: Efficient Key

2020-07-08 20:33:37 737 1

原创 图像处理之霍夫变换(Hough Transform)

霍夫变换,就是一个可以让机器自己学会找直线的算法。基本原理一条直线可由两个点A=(X1,Y1)和B=(X2,Y2)确定(笛卡尔坐标)也可以写成关于(k,q)的函数表达式(霍夫空间):q=-kx1+y1q=-kx2+y2对应的变换可以通过图形直观表示:的参数,给出对比图:转存失败重新上传取消霍夫变换的算法步骤:转存失败重新上传取消编程思路1.读取一幅待处理二值图像,最好背景为黑色;2.取得源像素数据;3.根据直线的霍夫变换公式完成霍夫变换...

2020-07-06 17:14:10 1938

原创 图像处理之边缘检测

Canny边缘检测算法一直是边缘检测的经典算法,出自论文:《A Computational Approach to Edge Detection》Canny边缘检测算法的处理流程:使用高斯滤波器,以平滑图像,滤除噪声。 计算图像中每个像素点的梯度强度和方向。 应用非极大值抑制,以消除边缘检测带来的杂散响应。 应用双阈值检测来确定真实的和潜在的边缘。 通过抑制孤立的弱边缘最终完成边缘检测。1.高斯滤波去燥任何边缘检测算法都不可能在未经处理的原始数据上很好地处理,所以第一步是对原始数.

2020-07-06 16:54:26 2543

原创 图像处理中的滤波器之均值滤波,中值滤波,高斯滤波

1.均值滤波原理: 均值滤波采用线性的方法,使用模板内所有像素的平均值代替模板中心像素灰度值特点: 不能很好地保护图像细节,在图像去噪的同时也破坏了图像的细节部分,从而使图像变得模糊,不能很好地去除噪声点。均值滤波对高斯噪声表现较好,对椒盐噪声表现较差。Python-OpenCV中的实现代码:img_mean = cv2.blur(img, (3,3))#(3,3)卷积核是可调的举个例子:下面左图为椒盐噪声原始图像,右图为高斯噪声原始图像下图从左到右分别为均值滤波(3,3)(

2020-07-06 16:32:06 9133

原创 pytorch模型转tensorflow pb模型

#1.配置安装conda create -n pth_pb python=3.7pip install tensorflow==2.1.0 -i https://pypi.tuna.tsinghua.edu.cn/simplepip install tensorflow-addons==0.9.1 -i https://pypi.tuna.tsinghua.edu.cn/simp...

2020-04-24 17:11:21 7854 31

原创 shell多进程的实现

command & + wait 方式轻松搞定shell多进程,下面给出一个小例子。首先看main.sh,shell脚本的主实现。function main(){ while true do for((i=0;i<5;i++)); do { python number.p...

2019-10-14 15:13:31 381

原创 mmdetection的安装与个人数据的训练

第一部分:mmdetection的安装1. 首先查看一下gcc的版本,有的服务器gcc版本较低,导致后续安装出现问题(大部分无此问题)gcc --version官网v1.0rc0 (27/07/2019)版本要求GCC: 4.9/5.3/5.4/7.32.创建基本运行环境注:这里使用anaconda管理项目环境,不建议使用Anaconda3-2019.03-Linux-x86...

2019-08-05 16:46:49 1544 8

原创 Mac升级gcc详解

github 开源的许多项目在配置安装过程中需要 进行“pip install .”,如果是在mac上进行配置,往往会遇到一下问题。从图中 commad ‘gcc’failed with exit status 1 错误报告中可以得知问题应该是gcc版本过低导致的。Mac 默认的gcc版本为4.2,通过命令gcc --version可以产看自己的gcc版本。目前github中新开源的代码...

2019-07-31 11:50:07 4729

翻译 PyTorch学习:参数初始化

 Sequential 模型的参数初始化import numpy as npimport torchfrom torch import nn# 定义一个 Sequential 模型net1 = nn.Sequential( nn.Linear(2, 4), #nn.Linear(2, 4) shape为(4,2) nn.ReLU(), nn.Linear(4,...

2018-11-13 17:17:57 5066

翻译 PyTorch学习:多层神经网络的多种实现方式

import torchimport numpy as npfrom torch import nnfrom torch.autograd import Variableimport torch.nn.functional as Fimport matplotlib.pyplot as pltdef plot_decision_boundary(model, x, y): #...

2018-11-13 15:08:35 999

翻译 PyTorch学习:逻辑回归

import torchfrom torch.autograd import Variableimport numpy as npimport torch.nn.functional as Fimport matplotlib.pyplot as plt# 设定随机种子torch.manual_seed(2018)# 从 data.txt 中读入点#data.txt 是一个100...

2018-11-12 19:25:13 415

翻译 PyTorch学习:多项式回归的小例子

#多项式回归模型import torchimport numpy as npfrom torch.autograd import Variableimport matplotlib.pyplot as plttorch.manual_seed(2018)# 定义一个多变量函数w_target = np.array([0.5, 3, 2.4]) # 定义参数b_target = ...

2018-11-12 14:57:44 562

原创 PyTorch学习:一个非常简单的线性回归的小例子

import torchimport numpy as npfrom torch.autograd import Variableimport matplotlib.pyplot as plttorch.manual_seed(2018)# 读入数据 x 和 yx_train = np.array([[3.3], [4.4], [5.5], [6.71], [6.93], [4.16...

2018-11-12 11:56:39 717

翻译 PyTorch学习:动态图和静态图

动态图和静态图目前神经网络框架分为静态图框架和动态图框架,PyTorch 和 TensorFlow、Caffe 等框架最大的区别就是他们拥有不同的计算图表现形式。 TensorFlow 使用静态图,这意味着我们先定义计算图,然后不断使用它,而在 PyTorch 中,每次都会重新构建一个新的计算图。通过这次课程,我们会了解静态图和动态图之间的优缺点。对于使用者来说,两种形式的计算图有着非常大...

2018-11-09 15:20:21 13532 1

翻译 PyTorch学习:自动求导

自动求导是 PyTorch 中非常重要的特性,能够让我们避免手动去计算非常复杂的导数,这能够极大地减少了我们构建模型的时间,这也是其前身 Torch 这个框架所不具备的特性,下面我们通过例子看看 PyTorch 自动求导的独特魅力以及探究自动求导的更多用法。import torchfrom torch.autograd import Variable# 简单情况的自动求导# 下面我们显...

2018-11-09 15:13:12 323

翻译 PyTorch学习:Variable

tensor 是 PyTorch 中的完美组件,但是构建神经网络还远远不够,我们需要能够构建计算图的 tensor,这就是 Variable。Variable 是对 tensor 的封装,操作和 tensor 是一样的,但是每个 Variabel都有三个属性,Variable 中的 tensor本身`.data`,对应 tensor 的梯度`.grad`以及这个 Variable 是通过什么方式得...

2018-11-09 13:07:05 690

翻译 PyTorch学习:Tensor的操作

x = torch.ones(2, 2)print(x) # 这是一个float tensor 1 1 1 1[torch.FloatTensor of size 2x2]print(x.type())torch.FloatTensor# 将其转化为整形x = x.long()# x = x.type(torch.LongTensor)print(x)...

2018-11-09 11:41:26 3062

翻译 PyTorch学习:PyTorch 当做 NumPy 用

PyTorch 当做 NumPy 用:PyTorch 的官方介绍是一个拥有强力GPU加速的张量和动态构建网络的库,其主要构件是张量,所以我们可以把 PyTorch 当做 NumPy 来用,PyTorch 的很多操作好 NumPy 都是类似的,但是因为其能够在 GPU 上运行,所以有着比 NumPy 快很多倍的速度。import torchimport numpy as nppytorc...

2018-11-09 10:33:58 1190

原创 CTPN细粒度候选框合并

1.候选框分组2. 确定每个分组的坐标1.候选框的分组:im_size[1]:传入图片的宽度box[0]:细粒度候选窗口的左上角横坐标boxes_table:把所有左上角横坐标相同候选窗口放在一块,方便下面根据左上角候选窗口的横坐标等位候选窗口的索引。 boxes_table=[[] for _ in range(self.im_size[1])] ...

2018-07-23 16:13:54 1477 1

空空如也

空空如也

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

TA关注的人

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