【论文阅读】《CycleGAN》
摘要
GAN的训练需要图片是两两匹配的,这样经过训练后,生成器可以逐步生成一张让判别期无法判断真伪的图片。但实际上会碰到一些非匹配的图片,于是就提出了非匹配的图片转换(Unpaired image-to-image),一种在没有成对例子的情况下学习将图像从源域X转换到目标域Y的方法。使得
x→G(x)→F(G(x))≈xx \rightarrow G(x) \rightarrow F(G(x)) \approx x
x→G(x)→F(G(x))≈x
其中xxx是原图,G(x)G(x)G(x)是经过生成器处理后的转换图片,再经过生成器FFF的还原后,还原图片需要尽可能的和原图相同。
相关工作
GANs
匹配与非匹配的图片转换
一致性损失计算
风格迁移
系统阐述
目标:找到合适的函数F和G,使得原图和转换后的图片尽可能相似。
结构:由两组生成对抗网络组成;第一组生成对抗网络有生成器GGG(实现G:X→YG: X \rightarrow YG:X→Y的映射)和鉴别器DyD_yDy(判别图像是目标图片还是转换图片);第二组生成对抗网络有生成器FFF(实现F:Y→XF: Y \ri ...
【论文阅读】《基于对抗一致性的非匹配图像转换》
前言
在CycleGAN中,它最大的问题在于它要求从目标域转换回来的图像要包含原图的所有信息,而这对于很多任务是不现实的。
比如让我们替一张照片中的人添加一副眼镜,显然眼镜类型是多种多样的,因此最终的添加结果也可能是多种多样的,对于生成器也是如此。再比如性别转换时胡须、头发的变化等等,这类问题都具有不可逆的特性。
因此,当使用CycleGAN为图片中的人摘除眼镜的时候,循环一致性损失(Cycle Consistency Loss)尝试解决此问题时,就必须“作弊”在图片中留下痕迹或减小变化,使得转换回去的图片包含原图的信息,但这也就导致了结果的不真实。
如下图所示,使用CycleGAN处理的图片,眼睛周围的颜色有明显不同或者是眉毛处仍有眼镜的痕迹。
因此,根据这一缺点,作者提出了反向一致性损失(Adversarial Consistency Loss,ACL),目标是使目标域和源域共享的信息最大化,而不是严格保持一致。所以,一致性的丢失可以促使生成的图像从分布的角度包含更多源图像的特征。也就是说,被翻译回来的图像只需要与输入源图像相似,而不需要与特定的源图像相同。
因此,我们的生成器 ...
【图像处理】图像金字塔
前言
图像金字塔是由一幅图像的多个不同分辨率的子图所构成的图像集合。该组图像是由单个图像通过不断地降采样所产生的,最小的图像可能仅仅有一个像素点。
由此看出,图像金字塔就是一系列以金字塔形状排列的、自底向上分辨率逐渐降低的图像集合。
通常情况下,图像金字塔的底部是待处理的高分辨率图像(原始图像),而顶部则为其低分辨率的近似图像。向金字塔的顶部移动时,图像的尺寸和分辨率都不断地降低。
一般每向上移动一级,图像的宽和高都降低为原来的二分之一。
高斯金字塔是通过对一幅图像不断的向下采样所产生的,如果对金字塔中的小图像进行向上采样以获取完整的大尺寸高分辨率图像,这时就需要用到拉普拉斯金字塔。
高斯金字塔
上采样:每次的长和高都降低为原来的两倍,但实际的分辨率是会变低的。
下采样:图片由高分辨率到低分辨率,每次的宽和高都降低为原来的二分之一。
下采样
得到某张高分辨率图片的图像金字塔有两种方式:
方法一:直接通过不断地删除图像的偶数行和偶数列得到。例如,有一幅图像,其大小是N x N,删除其偶数行和偶数列后得到一幅(N/2) x (N/2)大小的图像。经过上述处理后,图像大小变为原来 ...
【算法专题】并查集
集合专题
初始化parent集合
123456const int N = 100;int parent[N], rank[N];for(int i = 0; i < N; i++) { parent[i] = i; rank[i] = 0; // 为路径压缩做准备}
寻找祖先结点
12345int find(int parent[], int x) { if(parent[x] != x) x = parent[x]; find(parent, x); return x; // 不管祖先是不是自己 都是返回的x}
合并集合
1234567891011121314void Union(int parent[], int x, int y) { int xp = find(parent, x); int yp = find(parent, y); if(xp != yp) parent[xp] = yp; // x 并入 y // 反之则表明两者在同一个集合之中 不进行其他操作 // 路径压缩如下 /** ...
【算法专题】图论
图的遍历和应用
实现方式:邻接矩阵可以使用vector。邻接矩阵的无穷表示方法: memset( road, 0x3f, sizeof(road) );
应用场景:拓扑图、最小生成树、最短路径、二分图、DFS、BFS。
全排列问题
1234567891011121314151617181920212223242526const int N = 7;int path[N+1]; bool vset[N+1];int n;void dfs(int x) { if(x == n) { for(int i = 0; i < n; i++) cout << path[i]; cout << endl; } else { for(int i = 1; i <= n; i++ ) { if (vset[i] == false) { path[x] = i; ...
【算法专题】排序
堆排序
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263// 建立大根堆void sort(int R[], int low, int high) { int i = low, j = 2 * i; int temp = R[i]; while (j <= high) { if (j<high && R[j] < R[j+1]) { j++; } if (temp < R[j]) { R[i] = R[j]; i = j; i = 2 * i; } else break; // 无需替换 } R[i] = temp;}void hea ...
【算法专题】栈和队列
栈的应用
单调栈
1234567// 常见模型:找出每个数左边离它最近的比它大/小的数int tt = 0;for (int i = 1; i <= n; i ++ ){ while (tt && check(stk[tt], i)) tt -- ; stk[ ++ tt] = i;}
深搜模版
12345678910boolean DFS(Node cur, Node target, Set<Node> visited) { return true if cur is target; for (next : each neighbor of cur) { if (next is not in visited) { add next to visted; return true if DFS(next, target, visited) == true; } } ret ...
【图像处理】HOG特征描述算子
前言
概念介绍
HOG特征:方向梯度直方图(Histogram of Oriented Gradient,HOG)特征是一种进行物体检测时的特征描述子,它是一种用于表征图像局部梯度方向和梯度强度分布特性的描述符。
特征描述子:计算机不能直接识别图像,所以特征描述子实际上就是图像的数字表示,但它抽取了有用的信息,且丢掉了不相关的信息。通常特征描述子会把一个W×H×3W \times H \times 3W×H×3的图像转换成一个一维的、长度为NNN的向量表示。
适用场景
首先单独说HOG特征的用处:计算图像梯度后,把图片变成只有边缘的图像,如下图所示。在一些颜色信息显然不起作用的图像处理任务中,我们就可以借助HOG特征将颜色信息剔除,留下边缘信息做进一步的处理。
HOG特征能够很好地反映人体或汽车的轮廓,而且对整体光照、亮度等不敏感。
现在比较流行HOG和SVM组合使用,在行人检测、车辆检测、跟踪方面有比较广泛的运用。
传统的SVM可以利用训练数据生成非常精确的二分类器,也广泛用于解决一些计算机视觉方面的任务。因此两者结合之后,在检测方面具有良好的性能和鲁棒性。
具体两者是怎么 ...
【图像处理】Haar特征描述算子
Haar特征描述算子
经过前面的学习,个人对几个基础概念仍然有些模糊,比如说图像特征、级联分类器等,所以这篇笔记就结合这些天查阅到的知识点和Datawhale提供的学习内容一起记录一下,会比较注重概念的理解,文字内容多一些~
图像特征
实际上,计算机是不认识图像的,但倘若我们能够将图像数字化地输入计算机,它就能够理解不同的图像,从而有真正意义上的视觉。所以在进行人脸检测或者识别的过程中,需要关注的是如何从图像中提取出有用的数据或信息,得到图像的“非图像”的表示或描述,比如常用的数值、向量等。这个过程就是特征提取。而提取出来的特征我们可以通过训练过程教会计算机如何懂得这些特征,从而使得计算机具备识别图像的能力。
基础概念
特征
严格上说,特征是某一类对象区别于其他类对象的相应特点或特性。对于一幅图像而言,它自身的纹理、亮度等等,都可以成为区别于其他图像的自身特征。当然有些特征需要经过变换处理之后才能得到,需要我们转换成直方图等等。
特征向量
如果现在我们想要表示一个抽象的对象,可以把这个对象的特征们都组合在一起,形成一个特征向量来表示。如果这个物体只有单个特征,那特征向量就是一个一 ...
【图像处理】LBP特征描述算子
LBP特征描述算子
局部二值模型(Location Binary Pattern,LBP)是一种图像纹理的描述算子,所以我们首先要知道什么是图像的纹理特征,进而了解LBP算子的基本原理及其应用拓展。由于在原始的LBP提出后,研究人员还提出了各种改进方法,我们都将一一做介绍。最后使用opencv进行人脸识别。
图像纹理特征
纹理是一种反映图像中同质现象的视觉特征,它体现了物体表面的具有重复性和周期性变化的表面结构组织排列属性。物体的纹理可以在其亮度和颜色上有所体现,而且几乎所有图像都包含了纹理信息,它可以表现这个物体的表面信息。有时候,它还能表达自身与外界环境的关系。
其中,纹理有三大特点,它们分别是:
重复性:图像可以看作是某种局部元素在全局区域的不断重复出现。
周期性:图像中的元素并非随机出现,而是按照一定的周期性重复出现。
同质性:重复出现的元素在结构和尺寸上大致相同。
由上可见,纹理是某种局部序列性不断重复、非随机排列、在结构和尺寸上大致相同的统一体。纹理图像示例如图5-2所示,图中第一行表示人工纹理,第二行是自然纹理。
纹理特征只是对物体表面特性进行描述,并不能反映物 ...