Nick Blog

Cease to struggle and you cease to live.

pytorch错误记录

持续更新

1. Unexpected key(s) in state_dict: "module.backbone.bn1.num_batches_tracked" 报错背景: 训练:多卡并行(nn.DataParallel),已完成; 测试:单卡测试,模型加载时报上述错误; 分析原因:在训练时使用多卡并行,保存的是经过nn.DataParallel编译过的模型,这样编译过...

pytorch函数记录

持续更新

1. torch.meshgrid 之前在numpy中有np.meshgrid函数,最近需要在pytorch进行同样的操作,发现pytorch也有meshgrid这个函数,使用如下(与numpy基本一致): xv, yv = torch.meshgrid([torch.arange(0,5), torch.arange(0,10)])

导向滤波

Guided Image Filtering

1. 简介 之前已经介绍过了双边滤波核联合双边滤波,其中双边滤波是一种非线性的保边滤波器,而联合双边滤波相当于将值域高斯核的来源从原始影像替换成另外一副引导图。本文介绍的导向滤波,其与联合双边滤波类似,也需要除原始影像之外另外一副引导图,是一种保边滤波器,当然其也可以用作图像去雾、HDR压缩等。 2. 算法原理 2.1 导向滤波框架 在算法框架中,要对p进行滤波而得到q,还得需要一个...

联合双边滤波

Joint Bilateral Filter

1. 回顾: 双边滤波(BF) 具体参考上篇博客:图像滤波之双边滤波 2. 联合双边滤波(JBF) 联合双边滤波与双边滤波之间的差别就是JBF用了一个引导图作为值域权重的计算依据,但是空间域权重计算仍然基于原图: 3. 联合双边滤波代码 3.1 python opencv实现 import cv2 import matplotlib.pyplot as plt if ...

增维型快速双边滤波

A Fast Approximation of the Bilateral Filter using a Signal Processing Approach

1. 简介 双边滤波非常有用,但速度很慢,因为它是非线性的,传统的加速算法例如在FFT之后执行卷积,是不适用的。本文提出了对双边滤波的新解释,即高维卷积,然后是两个非线性操作。其基本思想就是将非线性的双边滤波改成可分离的线性操作和非线性操作。换句话说,原来的双边滤波在图像不同位置应用不同的权重,也就是位移改变卷积,他们通过增加一个维度,也就是将灰度值作为一个新的维度,将双边滤波表达成3D空...

Non Local Means非局部均值滤波

经典图像滤波算法:A non-local algorithm for image denoising

1. 简介 Non-Local Means顾名思义,这是一种非局部平均算法。何为局部平均滤波算法呢?那是在一个目标像素周围区域平滑取均值的方法,所以非局部均值滤波就意味着它使用图像中的所有像素,这些像素根据某种相似度进行加权平均。滤波后图像清晰度高,而且不丢失细节。 2. 原理 该算法使用自然图像中普遍存在的冗余信息来去噪声。与双线性滤波、中值滤波等利用图像局部信息来滤波不同,它利用了...

python对比度增强之截断线性拉伸

对应ENVI软件中的Linear2%

写在前面: 一点粗浅的理解和实现,如有不妥之处,请联系nickncc2122@gmail.com更改。 1. 原理简介 在ENVI里面有Linear和Linear2%的线性拉伸的方法,用的最多的就是Linear2%. Linear方法较为简单: g(x,y)=(d - c) / (b - a) * (f(x, y) + c, 其中d和c分别是输出图像的...

语义分割训练与优化技巧

持续更新

1. 数据预处理 1.1 数据增强 1.1.1 几何增强 原图: image = cv2.imread('image.png') gt = cv2.imread('label.png', 0) 水平翻转: 水平镜像图像有助于增加方向的不变性(例如,行人可以以不同的方向出现)。在自然场景下,不建议垂直翻转,因为物体的垂直外观在场景中增加了重要的一致性(例如,网络知道天空是...

CNN训练与优化技巧

Bag of Tricks for Image Classification with Convolutional Neural Networks

写在前面 文章地址 github上的相关代码 1. 简介 现有很多网络的进步并非仅仅来自改进的模型架构。训练程序的改进,包括损失函数的变化,数据预处理和优化方法也起了重要作用。在过去几年中已经提出了大量这样的改进,但是受到的关注相对较少。在文献中,大多数只是作为实现细节提及,而其他只能在源代码中找到。 我们通过实验表明,有几个技巧可以显著提高准确性,将它们组合在一起可以进一步提高模...

LEDNET 用于语义分割的轻量级编码器解码器网络

LEDNET A LIGHTWEIGHT ENCODER-DECODER NETWORK FOR REAL-TIME SEMANTIC SEGMENTATION

写在前面 论文地址 github代码 1. 摘要 算力负担限制了移动设备中CNN在密集估计任务中的使用。在本文中,我们提出了一个轻量级网络来解决这个问题,即 LEDNet,它采用非对称(asymmetric)编码器 - 解码器架构来进行实时语义分割。更具体地说,编码器采用 ResNet 作为骨干网络,其中有两个新操作:channel split and shuffle,被应用在每个...