![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
计算机视觉
文章平均质量分 79
Fighting_1997
唯有勤奋不会辜负于你。
展开
-
卷积层和池化层总结
卷积层和池化层卷积层通常是用作对输入层输入数据进行特征提取。池化层负责对感受域内的特征进行筛选,提取区域内最具代表性的特征,能够有效地降低输出尺度,进而减少模型所需要的参数量卷积层次特征类型浅层卷积边缘特征中层卷积局部特征深层卷积全局特征卷积的类型标准卷积扩张卷积/空洞卷积转置卷积可分离卷积池化类型一般池化重叠池化空间金字塔池化(多尺度目标训练)区别卷积层池化层结构零填充时输出维度不变,而通道数改变通常特征原创 2022-04-21 22:07:41 · 2594 阅读 · 0 评论 -
Python 自动生成环境依赖包 requirements
一、生成当前 python 环境 安装的所有依赖包1、命令# cd 到项目路径下,执行以下命令pip freeze > requirements.txt # 或者使用如下命令pip list --format=freeze > requirements.txt2、常见问题1、中使用 pip freeze > requirements.txt 命令导出已安装的模块,其中部分模块显示了 @ file:///…,而不是具体的版本号,如下图:此时,如果我们直接在其他机器上边使原创 2022-04-19 17:59:21 · 1640 阅读 · 0 评论 -
解决物体检测中的小目标问题
为了提高模型在小物体上的性能,我们建议使用以下技术:提高图像捕获分辨率提高模型的输入分辨率平铺图像通过扩充生成更多数据自动学习模型锚过滤掉多余的类1. 提高图像捕获分辨率非常小的物体在边界框中可能只包含几个像素——这意味着提高图像的分辨率以增加检测器可以从该小框中形成的特征的丰富度非常重要。因此,如果可能,我们建议尽可能捕获高分辨率的图像。2. 提高模型的输入分辨率一旦我们拥有更高分辨率的图像,我们就可以扩大模型的输入分辨率。警告:这将导致大型模型需要更长的训原创 2022-04-18 19:42:57 · 3330 阅读 · 0 评论 -
cnn、max_pool和avg_pool Python实现
numpy实现import numpy as npfrom numpy.lib.stride_tricks import as_strideddef pool2d(A, kernel_size, stride, padding, pool_mode='max'): A = np.pad(A, padding, 'constant') output_shape = ((A.shape[0]-kernel_size)//stride+1, (A.shape[1]-kernel_size原创 2022-04-15 20:24:47 · 866 阅读 · 0 评论 -
暗通道去雾算法原理及实现
1. 算法原理基本原理来源于何凯明大神的CVPR09的论文Single Image Haze Removal Using Dark Channel Prior暗通道所谓暗通道是一个基本假设,这个假设认为,在绝大多数的非天空的局部区域中,某一些像素总会有至少一个颜色通道具有很低的值。这个其实很容易理解,实际生活中造成这个假设的原因有很多,比如汽车,建筑物或者城市中的阴影,或者说色彩鲜艳的物体或表面(比如绿色的树叶,各种鲜艳的花,或者蓝色绿色的睡眠),颜色较暗的物体或者表面,这些景物的暗通道总是变现为原创 2022-04-06 20:34:30 · 12294 阅读 · 3 评论 -
大气散射模型解释
大气散射模型的推导大气中粒子的散射作用是产生雾霾的主要原因。无论是用人的肉眼观察,还是从拍摄获取的图像中观察,雾天的景象总是存在对比度和视野降低的问题。1925年,Keim & Nemnich[1]等人提出雾天图像能见度较低是大气中的悬浮粒子对光的吸收和散射造成的。1976年,John Wiley & Sons[2]等人提出粒子的散射作用造成目标和相机之间光在传输过程的衰减,并且增加了一层大气散射光(Airlight)。1999年,针对雾天能见度低的问题,Srinivasa G. Nara原创 2022-03-28 23:13:18 · 8313 阅读 · 0 评论 -
transformer代码
1. 模型总览代码讲解之前,首先放出这张经典的模型架构图。下面的内容中,我会将每个模块的实现思路以及笔者在Coding过程中的感悟知无不答。没有代码基础的读者不要慌张,笔者也是最近才入门的,所写Pytorch代码没有花里胡哨,所用变量名词尽量保持与论文一致,对新手十分友好。我们观察模型的结构图,Transformer模型包含哪些模块?笔者将其分为以下几个部分:接下来我们首先逐个讲解,最后将其拼接完成模型的复现。2. config下面是这个Demo所用的库文件以及一些超参的信息。单独实现一个Co原创 2022-03-20 17:28:16 · 1690 阅读 · 0 评论 -
transformer灵魂21问
原文链接(https://zhuanlan.zhihu.com/p/363466672)1.Transformer为何使用多头注意力机制?(为什么不使用一个头)答:多头可以使参数矩阵形成多个子空间,矩阵整体的size不变,只是改变了每个head对应的维度大小,这样做使矩阵对多方面信息进行学习,但是计算量和单个head差不多。2.Transformer为什么Q和K使用不同的权重矩阵生成,为何不能使用同一个值进行自身的点乘?答:请求和键值初始为不同的权重是为了解决可能输入句长与输出句长不一致的问题。并且原创 2022-03-20 17:27:38 · 1057 阅读 · 0 评论 -
transformer
1.Transformer 整体结构首先介绍 Transformer 的整体结构,下图是 Transformer 用于中英文翻译的整体结构:Transformer 的整体结构,左图Encoder和右图Decoder可以看到 Transformer 由 Encoder 和 Decoder 两个部分组成,Encoder 和 Decoder 都包含 6 个 block。Transformer 的工作流程大体如下:第一步:获取输入句子的每一个单词的表示向量 X,X由单词的 Embedding(Embeddi原创 2022-03-20 16:05:01 · 267 阅读 · 0 评论 -
CycleGAN网络详解
注:CycleGAN的生成器和判别器结构大家都没有去详细介绍,这里我给补充一下哦简介论文下载地址https://arxiv.org/abs/1703.10593前言CycleGan是一种实现图像风格转换功能的GAN网络。早在它出现之前就存在着Pix2Pix实现图像风格转换,但pip2pip具有很大的局限性,主要是针对两种风格图像要对应出现,而现实中很难找到一些风格不同相同图像,也能难去拍摄获得,于是CycleGan就实现这个功能,在两种类型图像之间进行转换,而不需要对应关系,非常强大和实用!!!这原创 2022-03-18 16:11:58 · 42073 阅读 · 34 评论 -
yolov4和yolov5详解
YOLOv4YOLOv4的三大贡献:设计了强大而高效的检测模型,任何人都可以用 1080Ti 和 2080Ti训练这个超快而精准的模型。验证了很多近几年 SOTA 的深度学习目标检测训练技巧。修改了很多 SOTA 的方法, 让它们对单GPU训练更加高效,例如 CmBN,PAN,SAM等。作者总结了近几年的单阶段和双阶段的目标检测算法以及技巧,并用一个图概括了单阶段和双阶段目标检测网络的差别,two-stage的检测网络,相当于在one-stage的密集检测上增加了一个稀疏的预测器作者也对多原创 2022-03-14 17:38:14 · 14411 阅读 · 0 评论 -
yolov3
YOLOv3YOLOv3的总体网络架构图可根据官方代码中的yolov3.cfg进行一一对应,标号000是第一个[convolutional]Darknet-53和DarkNet-19一样,同样下采样32倍。但是darknet-19是通过最大池化来进行,一共有5次。而darknet-53是通过尺寸2,步长为2的卷积核来进行的,也是5次。darknet-19是不存在残差结构(resblock,从resnet上借鉴过来)的,和VGG是同类型的backbone(属于上一代CNN结构),而darknet-5原创 2022-03-13 22:32:08 · 3124 阅读 · 0 评论 -
yolov2
YOLOv2Add BN使用BN层提高准确度(Accuracy improvements)神经网络学习过程本质就是为了学习数据分布,一旦训练数据与测试数据的分布不同, 那么网络的泛化能力也大大降低; 另外一方面,一旦每批训练数据的分布各不相同, 那么网络的 Batch 梯度下降算法就要在每次迭代都去学习适应不同的分布, 这样将会大大降低网络的训练速度。解决办法是对数据都要做一个归一化预处理。YOLOv2网络通过在每一个卷积层后添加 批归一化 (batch normalization) ,极大的改善原创 2022-03-13 21:10:10 · 2751 阅读 · 0 评论 -
FPN(特征金字塔)论文详解
FPN(特征金字塔)论文:Feature Pyramid Networks for Object Detection下载链接:https://arxiv.org/abs/1612.03144解决问题:《Feature Pyramid Networks for Object Detection》这篇论文主要解决的问题是目标检测在处理多尺度变化问题是的不足,现在的很多网络都使用了利用单个高层特征(比如说Faster R-CNN利用下采样四倍的卷积层——Conv4,进行后续的物体的分类和bounding原创 2021-11-16 21:52:08 · 5202 阅读 · 0 评论 -
yolov1详解
YOLOv1YOLOv1是单阶段目标检测方法,不需要像Faster RCNN这种两阶段目标检测方法一样,需要生成先验框。Yolo算法采用一个单独的CNN模型实现end-to-end的目标检测。整个YOLO目标检测pipeline如上图所示:首先将输入图片resize到448x448,然后送入CNN网络,最后处理网络预测结果得到检测的目标。相比R-CNN系列算法,其是一个统一的框架,其速度更快,而且Yolo的训练过程也是end-to-end的。具体来说,YOLO将全图划分为S×SS×SS×S的格子,原创 2022-03-12 21:40:19 · 28645 阅读 · 16 评论 -
sigmoid与softmax的区别与联系
阅文原文Softmax与Sigmoid有哪些区别与联系?1. Sigmoid函数SigmoidSigmoidSigmoid函数也叫LogisticLogisticLogistic函数,将输入值压缩到(0,1)(0,1)(0,1)区间之中,其函数表达式为:Sigmoid(x)=11+e−xSigmoid(x) =\frac{1}{1+e^{-x}}Sigmoid(x)=1+e−x1函数图像如图所示:其求导之后的表达式为:Sigmoid′(x)=Sigmoid(x)⋅(1−Sigmoi原创 2022-03-09 22:47:15 · 1012 阅读 · 0 评论 -
深度学习面经总结
1. BN层的作用(1)BN使得网络中每层输入数据的分布相对稳定,加速模型学习速度(2)BN使得模型对网络中的参数不那么敏感,简化调参过程,使得网络学习更加稳定(3)BN允许网络使用饱和性激活函数(例如sigmoid,tanh等),缓解梯度消失问题(4)BN具有一定的正则化效果详细内容学习2. 空洞卷积空洞卷积(dilated convolution)是针对图像语义分割问题中下采样会降低图像分辨率、丢失信息而提出的一种卷积思路。利用添加空洞扩大感受野,让原本 3×33\times 33×3的卷原创 2022-03-09 22:46:47 · 1526 阅读 · 0 评论 -
深度学习优化算法
深度学习各类优化器借用古代炼丹的一些名词,我们可以把训练模型中的数据比做炼丹药材,模型比做炼丹炉,火候比做优化器。那么我们知道,同样的药材同样的炼丹炉,但是火候不一样的话,炼出来的丹药千差万别,同样的对于深度学习中训练模型而言,有时候模型性能不好,也许不是数据或者模型本身的原因,而是优化器的原因。由此可见优化器对于深度学习来说是多么重要了,那么今天小编就带大家了解一些常见的优化器。优化算法设计原理深度学习中的优化算法采用的原理是梯度下降法,即最小化目标函数 $ J(\theta) $,最优化的求解过程原创 2022-03-09 20:44:00 · 2419 阅读 · 0 评论 -
bp前向传播和反向传播举例
2.4 简单阐述一下BP的过程?阅读原文1.基本概念BP(Back Propogation)算法是一种最有效的学习方法,主要特点是信号前向传递,而误差后向传播,通过不断调节网络权重值,使得网络的最终输出与期望输出尽可能接近,以达到训练的目的。前向过程中通过与正确标签计算损失,反向传递损失,更新参数,优化至最后的参数。而面试的过程中,我们可以拿出一支笔,给面试官直接说,“老师,我来直接写一个吧,您看看呗?”“你看哈,我这一个两层的神经网络。其中xxx是网络的输入,yyy是网络的输出,www是网络学习原创 2022-03-09 19:41:17 · 204 阅读 · 0 评论 -
add_with_concat
特征融合目前有两种常用的方式,一种是addaddadd操作,这种操作广泛运用于ResNetResNetResNet与FPNFPNFPN中。一种是ConcatConcatConcat操作,这种操作最广泛的运用就是UNetUNetUNet,DenseNetDenseNetDenseNet等网络中。如下图所示:也有如HRNetHRNetHRNet这样的,多分辨率之间使用addaddadd形式的特征融合。代码演示>>> import torch>>> img1 =原创 2022-03-09 19:26:41 · 176 阅读 · 0 评论 -
空洞卷积学习
空洞卷积空洞卷积(dilated convolution)是针对图像语义分割问题中下采样会降低图像分辨率、丢失信息而提出的一种卷积思路。利用添加空洞扩大感受野,让原本 3×33\times 33×3的卷积核,在相同参数量的情况下,用于5×5(dilatedrate=2)5 \times 5(dilated rate=2)5×5(dilatedrate=2)或者更大的感受野,无须下采样。扩张卷积(Dilated Convolution)又称空洞卷积(Atrous Convolution),向卷积层引入了一原创 2022-03-08 22:05:50 · 2515 阅读 · 0 评论 -
语义分割loss汇总
语义分割的那些loss(甚至还有ssim)今天我们看下关于语义分割的常规losslossloss设计,其中还有多个losslossloss联合一起用的,其中就如BASNetBASNetBASNet这种显著性检测的工作,我们也分析了它的losslossloss设计。希望各位做分割的,可以在losslossloss层面,有所启发~交叉熵损失 Cross Entropy Loss Function用于图像语义分割任务的最常用损失函数是像素级别的交叉熵损失,这种损失会逐个检查每个像素,将对每个像素类别的预测结原创 2022-03-08 21:27:13 · 4820 阅读 · 0 评论 -
图像插值方法
最近邻元法。最简单的一种插值方法,不需要计算。在待求像素的四邻像素中,将距离待求像素最近的邻像素灰度赋给待求像素。具体计算方法如下图所示。其中设 i+u, j+v(i, j 为正整数, u, v 为大于 0 小于 1 的小数) 为待求像素坐标,则待求像素灰度的值为 f(i+u,j+v)。如果 (i+u,j+v) 落在 A区,即 u<0.5, v<0.5,则将左上角像素的灰度值赋给待求像素,同理可得,落在 B 区则赋予右上角的像素灰度值,落在 C 区则赋予左下角像素的灰度值,落在 D 区则赋予.原创 2022-03-08 21:10:13 · 1438 阅读 · 0 评论 -
目标检测:IoU(交并比)和 NMS(非极大值抑制)、Soft_NMS方法Python实现
交并比(Intersection over Union)和非极大值抑制是(Non-Maximum Suppression)是目标检测任务中非常重要的两个概念。例如在用训练好的模型进行测试时,网络会预测出一系列的候选框。这时候我们会用NMS来移除一些多余的候选框。即移除一些IOU值大于某个阈值的框。然后在剩下的候选框中,分别计算与ground truth的IOU值,通常会规定当候选框和ground truth的IOU值大于0.5时,认为检测正确。下面我们分别用python实现IOU和NMS。交并比IOU如原创 2022-03-05 15:39:03 · 521 阅读 · 0 评论 -
RCNN、Fast RCNN、 Faster RCNN 学习与对比
R-CNN算法RCNN算法可以分为4个步骤一张图像生成1K~2K个候选框(通过Selection Search算法选取候选框)对每个候选区域,使用深度网络提取特征(生成2000x4096的特征矩阵, VGG16)特征送入每一类的SVM分类,判断是否属于该类(生成2000x20的特征矩阵,每一行代表一个候选框对不同类别的预测概率,每一列表示同一类别在不同候选框中的类别预测概率,同时,使用NMS非极大值抑制算法,删除掉一些候选框)使用回归器精细修正候选框(将剩余的候选框与Ground True对比,原创 2022-01-11 15:52:18 · 796 阅读 · 0 评论 -
VOC数据集在YOLO系列训练xml转txt
将Annotations中的xml文件和代码放置同一文件夹下即可# -*- coding: utf-8 -*-import xml.etree.ElementTree as ETimport osfrom os import listdirfrom os.path import joinclasses = ['aeroplane', 'bicycle', 'bird', 'boat', 'bottle', 'bus', 'car', 'cat', 'chair', 'cow', 'dining原创 2021-12-22 10:17:05 · 162 阅读 · 0 评论 -
torch和torchvision对应关系
torch和torchvision之间的对应关系对应关系链接下载链接cpu版本/torch版本/torchvision版本,python版本,linux/window,64位,32位原创 2021-12-13 00:07:46 · 9237 阅读 · 0 评论 -
Yolov5训练FLIR红外线数据集
训练Yolov5的博客很多了,只要放好数据集位置即可本博客使用的yolov5-5.0版本最近确实事情较多,博客写的比较简练,如果有问题,直接评论即可,我会短时间内回复!主要就是下图的文件放置创建flir.yaml文件,这个是yolov5中voc.yaml文件,我直接复制一下修改后:(建议在ubuntu系统中训练)修改train.py参数训练过程中如果出现关于channel错误信息的,直接点进去,修改通道数为1即可。训练结果...原创 2021-12-12 18:58:15 · 6252 阅读 · 60 评论 -
GAN手写mnist数据集Pytorch实现
GAN网络手写数据集Pytorch实现import argparseimport osimport numpy as npimport torchvision.transforms as transformsfrom torchvision.utils import save_imagefrom torch.utils.data import DataLoaderfrom torchvision import datasetsfrom torch.autograd import Vari原创 2021-12-10 22:24:33 · 1473 阅读 · 4 评论 -
AlexNet原文翻译
AlexNet摘要我们训练了一个大型深度卷积神经网络来将ImageNet LSVRC-2010竞赛的120万高分辨率的图像分到1000不同的类别中。在测试数据上,我们得到了top-1 37.5%, top-5 17.0%的错误率,这个结果比目前的最好结果好很多。这个神经网络有6000万参数和650000个神经元,包含5个卷积层(某些卷积层后面带有池化层)和3个全连接层,最后是一个1000维的softmax。为了训练的更快,我们使用了非饱和神经元并对卷积操作进行了非常有效的GPU实现。为了减少全连接层的过原创 2021-11-27 21:22:01 · 1049 阅读 · 0 评论 -
DenseNet论文详解及PyTorch复现
DenseNet1. ResNet 与 DenseNetResNet(深度残差网络,Deep residual network, ResNet):通过建立前面层与后面层之间的“短路连接”,这有助于训练过程中梯度的反向传播,从而能训练出更深的CNN网络。DenseNet:采用密集连接机制,即互相连接所有的层,每个层都会与前面所有层在channel维度上连接(concat)在一起,实现特征重用,作为下一层的输入。图1 Resnet网络的短路连接机制(其中+代表的是元素级相加操作)这样,不但减缓了梯度消原创 2021-11-27 20:45:58 · 3087 阅读 · 0 评论 -
深度学习CV领域必读论文
深度学习CV领域必读论文01深度学习CV领域划时代论文具有里程碑意义作者:深度之眼官方账号 https://www.bilibili.com/read/cv14129932?spm_id_from=333.999.0.0 出处:bilibili期刊日期:NIPS-2012,Alexnet论文名称:《ImageNet Classification with Deep Convolutional Neural Networks》摘要本论文的主要内容是训练了一个深度卷积网络(6千万参数、65万神经原创 2021-11-26 20:00:31 · 4169 阅读 · 0 评论 -
视觉注意力机制——SENet、CBAM、SKNet
注意力机制(Attentional Mechanism)通常将软注意力机制中的模型结构分为三大注意力域来分析:空间域空间域——将图片中的的空间域信息做对应的空间变换,从而能将关键的信息提取出来。对空间进行掩码的生成,进行打分,代表是Spatial Attention Module。通道域通道域——类似于给每个通道上的信号都增加一个权重,来代表该通道与关键信息的相关度的话,这个权重越大,则表示相关度越高。对通道生成掩码mask,进行打分,代表是senet, Channel Attention Mo原创 2021-11-19 21:27:02 · 10595 阅读 · 0 评论