- 博客(135)
- 收藏
- 关注
原创 图像标注的简介
本文从五个需要进行标注的计算机视觉任务(物体检测、线/边缘检测、分割、姿态预测、图像分类)给大家介绍图像标注的种类,应用场景,以及各种标注的优缺点。1. 介绍每个数据科学任务都需要数据。具体地说,是输入系统的干净易懂的数据。说到图像,计算机需要看到人类眼睛看到的东西。例如,人类有识别和分类物体的能力。同样,我们可以使用计算机视觉来解释它接收到的视觉数据。这就是图像标注的作用。图像标注在计算机视觉中起着至关重要的作用。图像标注的目标是为和任务相关的、特定于任务的标签。这可能包括基于文本的标签(类..
2021-03-14 20:36:32
10828
原创 webrtc全平台下载编译步骤详细说明
1. 安装depot toolsWindows:国外下载:https://storage.googleapis.com/chrome-infra/depot_tools.zip下载完把压缩包解压,然后把解压目录加入PATH环境变量Linux(Android)/Mac(IOS):安装git国外:git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git国内:git clone https://source.
2021-03-06 09:41:55
1074
1
原创 PyTorch中的padding操作
1. 介绍我们知道,在对图像执行卷积操作时,如果不对图像边缘进行填充,卷积核将无法到达图像边缘的像素,而且卷积前后图像的尺寸也会发生变化,这会造成许多麻烦。因此现在各大深度学习框架的卷积层实现上基本都配备了padding操作,以保证图像输入输出前后的尺寸大小不变。例如,若卷积核大小为3x3,那么就应该设定padding=1,即填充1层边缘像素;若卷积核大小为7x7,那么就应该设定padding=3,填充3层边缘像素;也就是padding大小一般设定为核大小的一半。在pytorch的卷积层定义中,默认的.
2021-02-25 22:34:56
4534
1
转载 怎样从Buffer加载AI模型
我们在进行CNN模型推理的时候,需要预先从DDR或者ROM中加载AI模型。大家平时一般用的是create from file的形式,为了保护自己的模型IP,一般会在模型上面做一些混淆。下面我们介绍另外一种方式,create from buffer。在编译算法sdk的阶段,可以将AI模型作为机器码编译进so中,算法加载的时候从栈内存进行加载就可以。这样模型的参数和定义就不会暴露在用户层面,目前MNN、NCNN和RKNN等都提供了create from buffer的类似接口,非常方便用户们进行使用。使用的方
2021-02-23 22:31:12
508
原创 onnx和mnn调用pytorch模型
1. 训练代码pytorch自身部署较麻烦,一般使用onnx和mnn较为实用训练模型的代码:import torchimport torch.nn as nnimport torchvisionimport torchvision.transforms as transformsimport torch.optim as optimfrom torch.optim import lr_schedulerimport torch.onnx if __name__ == '__m.
2021-02-16 14:20:25
2094
1
原创 pytorch训练图像分类模型,并部署到MNN
1. Pytorch分类器网络# 定义一个简单的分类网络class SimpleNet(nn.Module): def __init__(self): super(SimpleNet, self).__init__() # 三个卷积层用于提取特征 # 1 input channel image 90x90, 8 output channel image 44x44 self.conv1 = nn.Sequential( .
2021-02-12 11:34:01
950
1
原创 图像处理之直方图统计及C++实现
1. 介绍在分析图像、物体和视频信息的时候,我们经常用直方图来表达我们关注的信息。直方图在计算机视觉中应用广泛。例如,通过判断帧与帧之间边缘和颜色的统计量是否出现巨大变化,来检测视频中场景的变换。直方图只是简单地将数据归入预定义的组,并在每个组内进行计数。也可以选择对数据提取特征、再对特征进行计数,这里的特征可以是梯度的长度、梯度的方向、颜色或者其他任何可以反映数据特点的特征,也就是说,直方图是一种用来揭示数据分布的统计特性的工具。直方图的维度通常比原始数据的维度低。OpenCV中使用数组来表示直方.
2021-01-30 11:37:49
8787
原创 图像处理之高斯滤波
1. 高斯函数与高斯滤波一维高斯函数我们都熟悉,形式如下:G(x)=12πσexp(−x22σ2)G(x) = \frac{1}{\sqrt{2\pi}\sigma} \exp(-\frac{x^2}{2\sigma^2})G(x)=2πσ1exp(−2σ2x2)计算机视觉中,高斯滤波使用的高斯核为x和y两个一维高斯的乘积,两个维度上的标准差σ通常相同,形式如下:G(x,y)=12πσ2exp(−x2+y22σ2)G(x, y) = \frac{1}{2\pi\sigma^2}\exp(.
2021-01-28 23:31:06
2898
1
原创 MIT5K数据集的使用
1. MIT5K数据集介绍MIT-Adobe FiveK是现在很多做图像增强(image enhancement)与图像修饰(image retouching)方面研究的人员经常会使用到的数据库。这个数据库中包含5000张dng格式的原始图片及分别由五个(A,B,C,D,E)专业修图人员手工修饰后的图片。关于该数据库的详细资料可以在:https://data.csail.mit.edu/graphics/fivek/上找到。2. 数据集下载博主目前也在作图像增强方面的算法,在该网站上面,虽然提供了原.
2020-12-26 19:07:21
6277
6
原创 图像降噪之Cycle ISP: Real Image Restoration via Improved Data Synthesis
1. 简介谷歌去年发表了一篇文章:Unprocessing Images for Learned Raw Denoising,是关于如何构造逼近真实的数据来进行降噪的,在去年的文章里,研究者们主要是模拟了 ISP 中从 RAW 图到 sRGB 的过程,然后将 ISP 的过程逆转过来,从 sRGB 到 RAW,然后再在 RAW 域上添加噪声,从而构造出符合真实场景的噪声数据。今年谷歌又发表了一篇类似的文章,还是关于如何构造真实的仿真数据来做图像恢复,看来谷歌在构造数据这块已经做了很多的研究了,今年这篇文章
2020-11-24 22:48:43
1916
原创 人脸关键点检测之PFLD
1. 简介人脸关键点检测也称为人脸对齐,目的是自动定位一组预定义的人脸基准点(比如眼角点、嘴角点)。作为一系列人脸应用的基础,如人脸识别和验证,以及脸部变形和人脸编辑。这个问题一直以来都受到视觉界的高度关注,在过去的几年里,我们的产品取得了很大的进步。然而,开发一种实用的人脸关键点检测器仍然具有挑战性,因为检测精度,处理速度和模型大小都应该考虑。在现实世界条件下,获得完美的面孔几乎是不可能的。换句话说,人脸经常是出现在控制不足甚至没有约束的环境中。在不同的照明条件下,它的外表有各种各样的姿势、表情和形.
2020-11-22 23:07:39
7753
1
原创 人脸检测之Faceboxes
1. 简介FaceBoxes是一个足够轻量的人脸检测器,由中国科学院自动化研究所和中国科学院大学的研究者提出,旨在实现CPU下的实时人脸检测,FaceBoxes论文是《FaceBoxes: A CPU Real-time Face Detector with High Accuracy》。里面有一些思路值得大家学习,比如如何对模型进行加速处理,以及多尺度检测时检测框的密度不一致的问题~~...
2020-11-22 13:19:23
3190
原创 USRNet:Deep Unfolding Network for Image Super-Resolution
1. 摘要相比传统方法,受益于端到端训练,基于学习的图像超分方法取得了越来越好的性能(无论是性能还是计算效率)。然而,不同于基于建模的方法可以在统一的MAP框架下处理不同尺度、模糊核以及噪声水平的图像超分,基于学习的图像超分缺乏上述灵活性。 为解决上述问题,作者提出一种端到端可训练展开的网络,它集成了基于学习与基于建模的方法。通过half-quadratic splitting算法将MAP推理进展展开,通过固定次数的迭代求解数据子问题与先验子问题。上述两个子问题可以通过神经网络模块进行求解,从而得到.
2020-11-10 21:23:53
2211
1
原创 图像处理之中值滤波原理及C++实现
1. 中值滤波原理中值滤波算法以某像素的领域图像区域中的像素值的排序为基础,将像素领域内灰度的中值代替该像素的值[1];如:以3*3的领域为例求中值滤波中像素5的值int pixel[9]中存储像素1,像素2…像素9的值;对数组pixel[9]进行排序操作;像素5的值即为数组pixel[9]的中值pixel[4]。中值滤波对处理椒盐噪声非常有效。2. C++代码实现void medianFilter (unsigned char* corrupted, unsigned char* .
2020-11-06 22:11:13
2104
原创 图像处理之IOU, NMS原理及C++实现
1. IOU交并比(Intersection-over-Union,IoU),目标检测中使用的一个概念,是产生的候选框(candidate bound)与原标记框(ground truth bound)的交叠率,即它们的交集与并集的比值。最理想情况是完全重叠,即比值为1。计算公式:C++代码:struct bbox{ int m_left; int m_top; int m_width; int m_height; bbox() {} bbox(int left, int to
2020-10-29 21:11:42
1654
原创 图像处理之卷积模式及C++实现
1. 卷积的三种模式深度学习框架中通常会实现三种不同的卷积模式,分别是 SAME、VALID、FULL。这三种模式的核心区别在于卷积核进行卷积操作的移动区域不同,进而导致输出的尺寸不同。我们以一个例子来看这三种模式的区别,输入图片的尺寸是5x5 ,卷积核尺寸是 3x3 ,stride 取 1。1.1 FULL 模式FULL 模式下卷积核从与输入有一个点的相交的地方就开始卷积。如下图所示,蓝框的位置就是卷积核第一个卷积的地方,灰色部分是为了卷积能够正常进行的 padding(一般填 0)。因此 FUL.
2020-10-28 18:29:59
1832
1
原创 超分辨率 | 反卷积deconvolution存在的弊端及引起的棋盘效应
1. 棋盘效应当我们要用到深度学习来生成图像的时候,是往往是基于一个低分辨率且具有高层语义的图像。这会使得深度学习来对这种低分辨率图像进行填充细节。一般来说,为了执行从低分辨率图像到高分辨率图像之间的转换,我们往往要进行deconvolution。简单来说,deconvolution layer可以允许模型通过每一个点进行绘制高分辨率图像上的一个方块,这种情况的产生与deconvolution的stride、kernel size有关。然而,在使用deconvlution的时候,如果出现kernel.
2020-10-27 12:59:54
2476
原创 训练技巧之数据集太多,加载太慢怎么办?
1. 背景训练集全是16x16,32x32之类的小图,达到上千万张,训练时发现数据加载很慢很慢很慢!!!看了下CPU 内存 GPU使用情况,发现CPU使用率都跑到90%去了,GPU使用率却较低2. 解决方法2.1 预处理提速尽量减少每次读取数据时的预处理操作,可以考虑把一些固定的操作,例如 resize ,事先处理好保存下来,训练的时候直接拿来用Linux上将预处理搬到GPU上加速:NVIDIA/DALI :https://github.com/NVIDIA/DALI2.2 IO提速2.
2020-10-26 22:46:59
6615
原创 训练技巧之百万级类别的分类模型的拆分训练
1. 背景很多人脸识别算法都是以分类的方式进行训练的,分类的训练方式中存在一个很大的问题,就是模型的最后一个全连接层的参数量太大了,以512为特征为例:类别数参数矩阵尺寸参数矩阵大小(MB)100w类别——1953MB200w类别——3906MB500w类别——9765MB类别再多的话,1080TI这种消费级的GPU就装不下了,更不用说还有forward/backward的中间结果需要占据额外的显存。现在的开源数据越来越多,就算没有自己的数据,靠开源数据也能把类别数量堆到100万了,这种.
2020-10-26 22:34:40
1066
原创 图像处理之直方图均衡化及C++实现
1. 背景直方图均衡化在图像增强方面有着很重要的应用。一些拍摄得到的图片,我们从其直方图可以看出,它的分布是集中于某些灰度区间,这导致人在视觉上感觉这张图的对比度不高。所以,对于这类图像,我们可以通过直方图均衡技术,将图像的灰度分布变得较为均匀,从而使得图像对比度增大,视觉效果更佳。2. 原理直方图均衡化的作用是图像增强。有两个问题比较难懂,一是为什么要选用累积分布函数,二是为什么使用累积分布函数处理后像素值会均匀分布。第一个问题。均衡化过程中,必须要保证两个条件:①像素无论怎么映射,一定要保.
2020-10-26 11:26:39
5287
2
原创 GAN系列之pix2pix、pix2pixHD
1. 摘要图像处理的很多问题都是将一张输入的图片转变为一张对应的输出图片,比如灰度图、梯度图、彩色图之间的转换等。通常每一种问题都使用特定的算法(如:使用CNN来解决图像转换问题时,要根据每个问题设定一个特定的loss function 来让CNN去优化,而一般的方法都是训练CNN去缩小输入跟输出的欧氏距离,但这样通常会得到比较模糊的输出)。这些方法的本质其实都是从像素到像素的映射。于是论文在GAN的基础上提出一个通用的方法:pix2pix 来解决这一类问题。通过pix2pix来完成成对的图像转换(Lab
2020-10-25 11:34:08
4799
2
原创 老照片修复之Bringing Old Photos Back to Life
1. 摘要老照片修复中面临着许多的图像处理问题,比如填孔洞、去划痕、上色、去噪等,也就是说包含了多种图像退化问题。而使用深度学习进行训练时往往需要制造样本对,但是真实的低质量数据包含多种退化问题,想要通过正常图像模拟出完全符合数据分布的低质量图像几乎是不可能的。(同样的问题在Deblur、SR、Denoise等Low level问题中也有遇到)为了回避样本制造的问题,本文将老照片修复模拟成三域转换的问题,三个域分别是真实的老照片的域 R 、合成的低质照片的域 X 、真实的高质照片(GT)的域 Y 。.
2020-10-24 20:05:34
3126
原创 图像修复之DeepFill: Free-Form Image Inpainting with Gated Convolution
1. 摘要作者提出了一种生成式图像修复系统,该系统基于从数百万个图像中学习的门控卷积,无需额外的标记工作。作者所提出的卷积解决了将所有输入像素都视为有效像素的香草卷积问题,通过为所有通道在所有层上的每个空间位置提供可学习的动态特征选择机制来概括部分卷积。此外,由于自由形式的蒙版可能会出现在任何形状的图像中,因此为单个矩形蒙版设计的全局和局部GAN均不适用。因此,我们还通过应用频谱归一化提出了基于补丁的GAN损失,称为SN-PatchGAN鉴别密集图像斑块。SN-PatchGAN的配方简单,训练快速,稳.
2020-10-05 11:23:56
2501
2
原创 图像降噪之Unprocessing Images for Learned Raw Denoising
1. 摘要当用于训练的数据与用于评估的数据相似时,机器学习技术最有效。这对于学习过的单图像去噪算法来说是正确的,这些算法应用于真实的原始相机传感器读数,但由于实际的限制,通常在合成图像数据上进行训练。虽然从合成图像推广到真实图像需要仔细考虑相机传感器的噪声特性,图像处理管道的其他方面(如增益、颜色校正和色调映射)常常被忽略,尽管它们对原始测量数据如何转换成最终图像有重要影响。为了解决这个问题,我们提出了一种通过反转图像处理管道的每个步骤来反处理图像的技术,从而使我们能够从普遍可用的互联网照片合成现实的原.
2020-09-30 19:52:28
3112
1
原创 ffmpeg安装教程(支持10bit编码)
最近因为工作需要,要进行265 10bit编码,所以打算把ffmpeg, x265重新编译下。1. 编译安装支持10bit的x265库要让x265支持10bit编码,只需要修改CMake的一个编译选项即可:git clone https://github.com/videolan/x265.gitcd x265-master/sourcevim CMakeLists.txt把option(HIGH_BIT_DEPTH “Store pixel samples as 16bit values .
2020-09-19 23:45:58
1770
1
原创 JSI-GAN: GAN-Based Joint Super-Resolution and Inverse Tone-Mapping with Pixel-Wise Task-Specific Fil
1. 摘要使用分治策略来处理SR-iTM问题;将其分成三个任务相关的子网络:图像重建子网络(image reconstruction subnet),细节恢复子网络 (detail restoration subnet),局部对比度增强子网络(local contrast enhancement subnet),从而学习到一组像素级的逐像素的1维可分离卷积用于复原细节,像素级的2维局部卷积核来用于对比度增强。此外,作者提出一种可增强细节信息的GAN loss,可同时增强细节恢复和对比度复原。2. 介绍.
2020-09-18 23:38:25
606
1
原创 视频防抖技术的实现
1. 介绍视频防抖是指用于减少摄像机运动对最终视频的影响的一系列方法。摄像机的运动可以是平移(比如沿着x、y、z方向上的运动)或旋转(偏航、俯仰、翻滚)。对视频防抖的需求在许多领域都有。这在消费者和专业摄像中是极其重要的。因此,存在许多不同的机械、光学和算法解决方案。即使在静态图像拍摄中,防抖技术也可以帮助拍摄长时间曝光的手持照片。在内窥镜和结肠镜等医疗诊断应用中,需要对视频进行稳定,以确定问题的确切位置和宽度。同样,在军事应用中,无人机在侦察飞行中捕获的视频也需要进行稳定,以便定位、导航、目标.
2020-09-06 23:58:48
6620
4
原创 KernelGAN: Blind Super Resolution Kernel Estimation using an Internal-GAN
1. 介绍论文的出发点是要发掘patch上的自相关分布,通过生成器G生成LR downsample后的版本和LR自己相应的patch在分布上更相似(通过D网络判别学到),从而学习出LR的降质过程,和ZSSR一样,这个工作也是在单图上进行训练和测试,不同的是,这里像ZSSR一样使用bicubic作为默认降质,而是利用GAN利用自身分布去学习自己降质的过程。其中G网络用来学习降采样,当G网络被训练好之后,可以获得降质的kernel参数,该参数可以被用来引导进行超分辨(类似于ZSSR)。论文提出的方法是ima.
2020-08-02 09:52:12
3935
原创 图像质量评估-BRISQUE
1. 介绍1.1 什么是图像质量评估Image Quality Assessment (IQA)?图像质量评价(IQA)算法以任意图像作为输入,输出质量分数作为输出。有三种类型的IQA:全参考图像质量评价适用情形:您有一个“干净”参考(非扭曲)图像,以衡量您的扭曲图像的质量。此度量可用于评估图像压缩算法的质量,在该算法中,我们可以访问原始图像及其压缩版本。半参考图像质量评价适用情形:如果没有参考图像,而是具有一些选择性信息的图像(例如,水印图像)来比较和测量失真图像的质量。无参考图像质量评.
2020-07-05 22:46:53
4343
2
原创 图像修复之Image Inpainting for Irregular Holes Using Partial Convolutions
1. 摘要现有的基于深度学习的图像修补方法在损坏的图像上使用标准卷积网络,使用卷积滤波器响应以有效像素以及掩蔽孔中的替代值(通常为平均值)为条件。 这通常会导致诸如颜色差异和模糊等伪影。 后处理通常用于减少这些工件,但代价很高,可能会失败。 我们提出使用部分卷积,部分卷积指的是卷积只在图片的有效区域进行(mask部分为0),并且图片的mask会随着网络的层数加深不断迭代和收缩,也就是说带有mask的图片和mask均参与训练,取得了很好的效果。图. 从左到右,从上到下:2(a):带孔的图像。 2(b).
2020-06-25 11:12:09
2796
1
原创 经典网络之NIN(Network in Network)
1. 介绍本篇博文主要讲解2014年ICLR的一篇非常牛逼的paper:《Network In Network》,过去一年已经有了好几百的引用量,这篇paper改进了传统的CNN网络,采用了少量的参数就松松击败了Alexnet网络,Alexnet网络参数大小是230M,采用这篇paper的算法才29M,减小了将近10倍啊。这篇paper提出的网络结构,是对传统CNN网络的一种改进(这种文献少之又少,所以感觉很有必要学习)。传统的卷积神经网络一般来说是由:线性卷积层、池化层、全连接层堆叠起来的网络。卷积.
2020-06-14 15:37:02
1026
原创 MZSR:用于 Zero-Shot 超分辨率的元转换学习
这是今年CPVR2020 一篇关于超分辨率的论文。这篇文章的创新点在于它将零次学习 (Zero-Shot Learning)和元转换学习(Meta Transfer Learning)进行结合,提出了新的超分算法 MZSR 。ZSSR最早被提出,将图像内部学习用于图像超分辨率。它能够很好地学习图像内部的先验信息,从而利用这些内部信息恢复图像高频信息。由于 ZSSR 从一张图像中学习,因此需要几千次的梯度更新迭代,也就是说测试时推理时间很长。而 MZSR则是通过元转换学习解决测试推理时间长的问题,MZS.
2020-06-06 12:09:24
1621
原创 模型压缩之Learning Efficient Convolutional Networks through Network Slimming
1. 摘要在许多现实应用中,深度神经网络的部署由于其高额的计算成本变得很困难。在这篇论文中,我们提出了一种新颖的CNNs学习方案,它同时满足:减小模型大小;减少运行时的内存占用;在不影响精度的同时,降低计算操作数;利用通道稀疏化这样一个简单但却有效的方法,上面的条件很容易获得。不同于许多已经存在的方法,我们的方法可以直接应用到现代CNN网络架构中,在训练过程引入最小的花销,而且不需要其他特殊的软硬件加速器。我们将我们的方法称为“网络瘦身”,输入模型是一个宽大的网络,但是在训练期间不重要的通道.
2020-05-25 20:24:32
2183
原创 人脸检测之Ultra-Light-Fast-Generic-Face-Detector-1MB
1. 简介用户 Linzaer 在 Github 上推出了一款适用于边缘计算设备、移动端设备以及 PC 的超轻量级通用人脸检测模型,该模型文件大小仅 1MB,320x240 输入下计算量仅 90MFlops。项目推出不久即引起了大家的关注,登上了今天的 Github trending。github地址:https://github.com/Linzaer/Ultra-Light-Fast-Generic-Face-Detector-1MB该模型设计是针对边缘计算设备或低算力设备 (如用 ARM 推理.
2020-05-16 17:17:54
4072
原创 VScode配置C/C++环境
1. 安装MinGW1.1. 下载MinGW下载地址:https://sourceforge.net/projects/mingw/下载一个名为mingw-get-setup.exe的安装文件。1.2 安装下载器运行刚刚下载的安装程序,看到如下界面:点击“Install”,进入下面这个界面:选择安装路径默认安装路径为C:\MinGW,我习惯安装在D盘下,点击“Change”修...
2020-03-14 16:38:38
885
原创 导向滤波算法原理与代码
1. 导向滤波算法导向图像(Guidance Image) I,滤波输出图像(Filtering Input Image) p,均值平滑窗口半径 r,正则化参数 e。2. 快速导向滤波算法通过下采样减少像素点,计算mean_a & mean_b后进行上采样恢复到原有的尺寸大小。假设缩放比例为s,那么缩小后像素点的个数为N/s2,那么时间复杂度变为O(N/s2)3. 代码i...
2020-03-12 23:56:03
1420
原创 图的连通性判断(并查集)
判断图的连通性判断方法比较多,最常见的就是并查集、DFS、BFS 这几种,网上的代码也很多,这里主要讲一讲并查集。利用并查集判断连通性思路为:对于图中的每个节点,设定它的根节点为它本身。对图中的每一条边的两个端点进行合并操作,得到的结果就是相互连通的节点的根节点指向同一个节点。所以只要查询一下结果中节点的根节点等于其本身的节点的数目就可以知道这个图被分成连通的几个部分,如果连通,则为 1。并...
2020-02-14 10:25:12
3943
原创 git上传大于100M的文件
1. 错误日志Git lfs - “this exceeds GitHub’s file size limit of 100.00 MB”2. 解决办法看这个网址https://git-lfs.github.com/下载上面的后,然后使用下面的命令使用git lfs install 上面下载而已,并没有安装git lfs track “*.rar” 这个是要指定的大文件git ad...
2020-02-02 17:11:32
576
原创 《Fast End-to-End Trainable Guided Filter》阅读笔记
1. 介绍这篇论文主要是将引导滤波的思想引入到了网络之中,先在小图上进行学习,再通过在引导滤波器上学习针对特定任务的引导图实现对生成小图上采样,最后恢复大图。这种思想在Deep bilateral里面已经使用过,但是这篇论文里生成的大量仿射系数使得速度受到了限制。论文:https://arxiv.org/abs/1803.05619代码:https://github.com/wuhuika...
2020-01-22 19:58:03
2403
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅