Skip to content

Commit 381e5b7

Browse files
greatzhgitbook-bot
authored andcommitted
GitBook: [#11] No subject
1 parent 14ae8a5 commit 381e5b7

File tree

11 files changed

+336
-3
lines changed

11 files changed

+336
-3
lines changed

SUMMARY.md

+11
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,24 @@
1515
## 2⃣ Image Splicing
1616

1717
* [Multi-task SE-Network](image-splicing/multi-task-se-network.md)
18+
* [CAT-Net](image-splicing/cat-net.md)
19+
* [Self consistency](image-splicing/self-consistency.md)
1820

1921
## 3⃣ Image Harmonization
2022

2123
* [Harmonizer](image-harmonization/harmonizer.md)
24+
* [HT / D-HT](image-harmonization/ht-d-ht.md)
2225

2326
## 4⃣ Backbone
2427

2528
* [Transformer](backbone/transformer.md)
2629
* [EfficientNet](backbone/efficientnet.md)
2730
* [ViT](backbone/vit.md)
31+
32+
## Face Forgery
33+
34+
* [Face Forgery](face-forgery/face-forgery.md)
35+
36+
## Copy Move
37+
38+
* [DOA-GAN](copy-move/doa-gan.md)

backbone/efficientnet.md

+58-1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,59 @@
1-
# Page 3
1+
---
2+
description: 'EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks'
3+
---
24

5+
# EfficientNet
6+
7+
_Mingxing Tan and Quoc V Le. 2019. EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks. Arxiv (2019). DOI:https://doi.org/10.48550/arxiv.1905.11946_
8+
9+
最主要的就是快,模型小,而且还维持了比较好的结果;不像一般的卷积不断去堆深度,广度,或者解析度之类的来消耗大量的计算资源达到更好的结果;而是对深度,广度,分辨率进行全部的协调,合成系数?平衡网络的宽度、深度和分辨率,让推理更快。最后就是提出了一个简单而高效的复合扩展方法 compound scaling method,再根据这个方法提出了一个模型,EfficientNet。
10+
11+
<figure><img src="https://s2.loli.net/2022/08/29/E5XhPnJc9y7QpAD.png" alt=""><figcaption></figcaption></figure>
12+
13+
### **提出的概念**
14+
15+
如上图中(e)所示,就是用一些固定的参数,同时对宽度,深度,解析度进行放大,这个固定的参数通过对原先的模型进行一个小的网格搜索来确定。
16+
17+
### **具体的方法**
18+
19+
首先定义一个卷积神经网络可以是:
20+
21+
$$
22+
\mathcal{N}=\bigodot_{i=1...s}F^{L_i}_i(X_{<H_i,W_i,C_i>})
23+
$$
24+
25+
然后目标是保持模型结构不变,调整网络每一层的长度和宽度以及解析度(向量的长宽),然后就是一个优化问题,通过最大化模型的准确率,找出对所有网络层进行缩放的这些参数。
26+
27+
$$
28+
max_{d,w,r} \quad Accuracy(\mathcal{N}(depth,width,resolution)) \\ s.t. \quad \mathcal{N}(d,w,r)=\bigodot_{i=1...s}\hat{\mathcal{F}}^{d.\hat{L}_i}_i(X_{<r.\hat{H}_i,r.\hat{W}_i,w.\hat{C}_i>})
29+
$$
30+
31+
深度:公认的就是越深提取到的特征就越多,但是容易出现梯度爆炸的问题,也有一些方法像skip connection,batch normalization
32+
33+
宽度:一般就是为了更小的模型。
34+
35+
分辨率:分辨率越高,特征越细节,精细度越高。
36+
37+
作者想要提出者方法是因为观察的问题:
38+
39+
1. 放大网络的$$d,w,r$$这三个参数去提高准确率,有时候会因为更大的模型而导致准确度下降。
40+
2. 单独对这 $$d,w,r$$三个参数去改变,以及同时改变会有不同的结果。
41+
3. 这些问题,发现前人已经有人做了,但是前人的方法是任意的对 $$d,w,r$$ 去改变。
42+
43+
所以提出了一种新的复合的方法,用一个复合系数 $$\phi$$统一对 $$d,w,r$$去进行均匀的缩放。具体的方法就是:
44+
45+
depth: d=$$\alpha^{\phi}$$
46+
47+
width: w=$$\beta^{\phi}$$
48+
49+
resolution: r=$$\gamma^{\phi}$$
50+
51+
$$
52+
s.t. \alpha \cdot \beta^2 \cdot \gamma^2 \approx 2 \qquad $\alpha \ge 1, \beta \ge 1, \gamma \ge 1
53+
$$
54+
55+
### GitHub
56+
57+
keras / TensorFlow + Keras: [https://github.com/qubvel/efficientnet](https://github.com/qubvel/efficientnet)
58+
59+
PyTorch: [https://github.com/lukemelas/EfficientNet-PyTorch](https://github.com/lukemelas/EfficientNet-PyTorch)

backbone/transformer.md

+59
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,61 @@
1+
---
2+
description: Attention Is All You Need
3+
---
4+
15
# Transformer
26

7+
_Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N Gomez, Lukasz Kaiser, and Illia Polosukhin. 2017. Attention Is All You Need. Arxiv (2017)._
8+
9+
<figure><img src="https://s2.loli.net/2022/04/05/Qc3pnMHOglwE6ae.png" alt=""><figcaption></figcaption></figure>
10+
11+
### 概要
12+
13+
Transformer(变形金刚),仅用注意力机制的编码器解码器模型,不依赖循环或者卷积神经网络,达到较高的并行度,在较短时间内实现更好的效果。注意力机制不像卷积一样需要经过多次卷积才能读到两个较远像素的特征,attention每一次能看到所有的像素,同时multi-head attention像卷积一样可以实现多输出通道,可以去识别不同的模式。
14+
15+
### **Batch Norm & Layer Norm**
16+
17+
Batch Norm: 在变长的应用中不常使用,每一列(特征)在一个minibatch里面,把它的方差调整到1,均值为0。通过将向量本身的均值减掉,再除以方差,在每一个小批量算出的均值和方差。
18+
19+
Layer Norm: 对每一行(样本),调整到方差为1,均值为0,即把数据转置放到Batch Norm得到的结果再转置。在时序的数据里面,样本的长度可能会发生变化,用Layer Norm算出的每个样本自己的均值和方差抖动相比Batch Norm更小,更稳定。
20+
21+
#### ## Attention
22+
23+
query和key-value pairs映射成输出,对于每一个value的权重,value对应的key和查询query的相似度(compatibility function)确定其权重。由于query的不一样,权重分配不一样,不同的相似函数导致不一样的注意力版本,导致输出不一样。
24+
25+
$$
26+
Attention(Q,K,V)=softmax(\frac{QK^T}{\sqrt{d_k}})V
27+
$$
28+
29+
两个向量,query和Key(列相同)做内积,如果两个向量Norm一样,两个向量内积的值,余弦值越大,相似度越高。
30+
31+
**additive attention** and **dot-attention**加性注意力和点乘注意力。
32+
33+
**Mask**防止看到以后的数据,对于之后计算的值换成非常大的负数,进入softmax指数运算的时候变成0。
34+
35+
#### **Scaled Dot-Product Attention**
36+
37+
query, key, values,
38+
39+
对于每一个values的权重,是value对应的key,以及query对应key的相似度(compatibility function),不同的相似函数导致不同的注意力机制版本。
40+
41+
(矩阵乘法是很容易并行的机制,顺序计算越少越好,越不用等,并行度越高)
42+
43+
#### **Multi-Head Attention**
44+
45+
$$
46+
MultiHead(Q,K,V)=Concat(head_1,...,head_h)W^O \\where\;head_i=Attention(QW_i^Q,KW_i^K,VW_i^V)
47+
$$
48+
49+
$$Q,V,K$$先进入到线性层,投影到比较低的维度,然后做一个Scaled Dot-Product Attention,做h次,h次学到不同的模式匹配,模拟在卷积里面多个输出通道。
50+
51+
假如长为n的句子输入,我们有n 个长为 d 的向量。three input as the Key, Value, Query, so that called the self attention, 输出就是value的加权和,权重就是来自于query和Key(来自于本身,以及跟其他向量的相似度)。编码器的输出作为value和key进入,解码器的输出作为query进入,根据在解码器输入的不一样,根据当前向量,在编码器里给感兴趣的东西更多的权重,即注意力机制(对输入做加权和,提取出有用的信息,进行aggregation汇聚)。
52+
53+
### **Position-wise Feed-Forward Networks**
54+
55+
就是一个全连接的前馈网络,MLP,对每个词作用一次MLP(FCN+activation function),因为前面的输入已经包含的序列信息,在最后的映射到更理想的语义空间的时候,可以单独进行。
56+
57+
### **Embedding**
58+
59+
#### **Positional Encoding**
60+
61+
Attention 没有时序信息,RNN是通过上一个时刻的输出作为下一个时刻的输入,Attenion是通过在输入里面加入时序信息,

backbone/vit.md

+20-1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,21 @@
1-
# Page 2
1+
---
2+
description: 'An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale'
3+
---
24

5+
# ViT
6+
7+
_Alexey Dosovitskiy, Lucas Beyer, Alexander Kolesnikov, Dirk Weissenborn, Xiaohua Zhai, Thomas Unterthiner, Mostafa Dehghani, Matthias Minderer, Georg Heigold, Sylvain Gelly, Jakob Uszkoreit, and Neil Houlsby. 2020. An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale. Arxiv (2020)._
8+
9+
<figure><img src="https://s2.loli.net/2022/04/05/9u7xBrQpFszTG63.png" alt=""><figcaption></figcaption></figure>
10+
11+
使用标准的transformer来完成cv任务,以固定大小的patch序列的方式来让计算机理解图片,与CNN相比,Transformer缺少了固有的归纳偏差不能在数据量不足的规模下做到很好的泛化。然而在大规模的数据集上预训练之后,Vision Transformer(**ViT**)在多个图像识别的基准上都表现优异,同时在大规模的数据集上训练之后,只需要很少的计算资源很快就可以在你需要分类的数据集上进行fine-tuned,并且达到比较好的效果。局限包括目前只在图像的分类上可能表现不错,但是其他计算机视觉任务,像是分割,检测,还有一些空间。还有自监督的与训练模型和大规模的监督预训练。
12+
13+
**归纳偏置**:类似于一种先验知识,一种提前做好的假设;对于CNN来说,一个是locality,因为CNN是以滑动窗口的形式在图片上进行卷积,所以假设相邻的区域有相邻的特征;另一个是平移等边性,translation equivalence,$$f(g(x))=g(f(x))$$,无论你先做卷积还是先平移,最后结果是不变的。但是对于**ViT**来说没有这种假设,但是大规模的数据训练胜过了inductive bias带来的效果。
14+
15+
### GitHub
16+
17+
[https://github.com/lucidrains/vit-pytorch](https://github.com/lucidrains/vit-pytorch)
18+
19+
[https://github.com/google-research/vision\_transformer](https://github.com/google-research/vision\_transformer)
20+
21+
[https://github.com/dk-liang/Awesome-Visual-Transformer](https://github.com/dk-liang/Awesome-Visual-Transformer)

copy-move/doa-gan.md

+32
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
---
2+
description: >-
3+
DOA-GAN: Dual-Order Attentive Generative Adversarial Network for Image
4+
Copy-Move Forgery Detection and Localization
5+
---
6+
7+
# DOA-GAN
8+
9+
_Ashraful Islam, Chengjiang Long, Arslan Basharat, and Anthony Hoogs. 2020. DOA-GAN: Dual-Order Attentive Generative Adversarial Network for Image Copy-Move Forgery Detection and Localization. 2020 Ieee Cvf Conf Comput Vis Pattern Recognit Cvpr 00, (2020), 4675–4684. DOI:https://doi.org/10.1109/cvpr42600.2020.00473_
10+
11+
Dual-order attentive Generative Adversarial Network, for the generator, using an end-to-end framework based on a deep convolutional neural network. Also, they design a dual-order attention module to produce the attention map, one is to explore the copy-move aware location information, another one is to capture more precise patch inter-dependency. Formulating with the two maps to get the final feature representation. Feed the feature to the detection and localization branch to get the final score and the segmentation mask of pristine(with souece, backgroudm target region), respectively. And the generator to check whether the predicted mask is identical to ground truth or not. The loss function used in this model, adversarial loss, cross-etropy loss, and the detection loss.
12+
13+
<figure><img src="https://s2.loli.net/2022/03/12/4meGyBWIuJNVaMC.gif" alt=""><figcaption></figcaption></figure>
14+
15+
### Detail
16+
17+
* Extract the feature representation by VGG-19 first. 根据VGG得到的特征表示会进入两个不同参数的空间空洞卷积(ASPP)
18+
* Get the affinity matrix to explore the correlation between different parts of image.
19+
* Leveraging the patch-matching strategy, calculate the likelihood that a patch in the i row matches j column in the affinity matrix after a Gaussian kernel to reduce the score.
20+
* According to the likelihood, extract top-k value for each row, reshape to the h\times w\times k, then feed them into an attention module. Attention Module consist of three convolution blocks.
21+
* 将空间空洞卷积得到的特征表示和经过注意力模块得到的注意力图结合,Fuse feature, 得到最终的特征表示。
22+
* 判别器的机构来自于Patch-GAN的判别器。判别器也是全卷积的,包括5个卷积块。
23+
* 最后的实验结果,他们在USC-ISC CMFD,CASIA CMFD, CoMoFoD的数据集上进行的评估,也做了一些ablation研究,最后也将自己的方法应用在了其他的一些图像篡改检测的任务上,包括向image splicing manipulation, video的CMFD,都取得了不错的结果,Loc和det的准确率最高是到了97, 96在USC-ISI的数据集上,在其他一些数据集上的表现可能,在loc上最高只有55%。因为其他的一些数据集没有提供gt mask来区分source和target。
24+
25+
### Conclusion
26+
27+
当我们的图片是从一个统一的背景中选择了一块进行copy,然后move同样的一个统一的背景上,模型的表现要优化;第二个是当copy move的区域很小的时候,那其实有些人也会通过故意降低图片的分辨率来模糊这个已经被篡改了图片,但是其实这种很小的篡改去检测他是不是没有意义。
28+
29+
### GitHub
30+
31+
[https://github.com/asrafulashiq/doagan\_clean](https://github.com/asrafulashiq/doagan\_clean)
32+

face-forgery/face-forgery.md

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# Face Forgery
2+

image-harmonization/harmonizer.md

+67-1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,68 @@
1-
# Page 1
1+
---
2+
description: 'Harmonizer: Learning to Perform White-Box Image and Video Harmonization'
3+
---
24

5+
# Harmonizer
6+
7+
_Zhanghan Ke, Chunyi Sun, Lei Zhu, Ke Xu, and Rynson W H Lau. 2022. Computer Vision – ECCV 2022. Lect Notes Comput Sc (2022), 690–706. DOI:https://doi.org/10.1007/978-3-031-19784-0\_40_
8+
9+
10+
11+
<figure><img src="https://s2.loli.net/2022/08/15/y15YdOT9XAkWL4P.png" alt=""><figcaption></figcaption></figure>
12+
13+
论文的概念好像很简单,就是我们在从合成图片(composite image)到融合图片(harmonized image)上的方法,从之前的通过使用大规模的autoencoder逐个像素进行融合,到现在论文提出的方法是直接像我们人P图一样,预测出一些滤镜的参数,直接对整个图片进行操作,这样带来的好处就是,处理更快,网络更轻,同时效果还不差。
14+
15+
### **the main contributions**
16+
17+
1. 一个新的框架,Harmonizer,新的网络结构,用来预测对应参数的神经网络以及白盒的滤镜filter,基于神经网络预测得到的参数直接对图片进行操作。
18+
2. 一个层级的回归器,cascade regressor,主要是为了解决学习过滤器的参数不是一个可以同时优化的过程,亮度,高光,很多不同的参数,同时通过使用多头的回归器对每个过滤器单独进行预测,效果不是很好,所以提出了层级的回归器,基于一个级联回归器cascade regressor来解决这个问题,根据前面的过滤器参数的特征来预测每个过滤器参数
19+
3. 一个动态的损失策略,dynamic loss strategy,因为每个filter的损失会累积所有filter的errors,导致回归器对一些filter会有偏差,所有引入这个动态损失策略,就平衡了各个filter的损失,让它更好的学习。
20+
21+
### **网络设计的想法**
22+
23+
两个阶段,因为是白盒,所以就一直以我们人要怎么处理这张合成图片,让它看起来更具有自然性;所以第一个阶段就是,对一些过滤器去调整合适的参数,让前景和背景融合。第二个阶段是根据第一阶段里面使用的过滤器,进一步确定影响最大的过滤器(高光 亮度 对比度...)和他们的参数。
24+
25+
### **Architecture**
26+
27+
主体就是encoder和regressor的结构,输入一张图片$$I^{'}_0$$以及它的前景掩码图M, 然后用Encoder $$\varepsilon$$ 和Regessor $$R$$ 来不断回归,得到k个图像的filter 参数,然后再依次把这些操作放到图片上,得到相应的输出 $$I^{'}$$。这里的encoder主要就是用来提取特征的,结构是来自于 **EfficientNet-B0**
28+
29+
整个回归的过程,就是首先我们得到了输入图片$$I^{'}_0$$和前景掩码 M 的特征, $$Z=\varepsilon(I^{'}_0,M)$$, 从一开始输入的下采样到 $$256 \times 256$$然后得到特征 Z 是 160个channels。接着,通过对特征Z 全局的池化,以及用 R 进行回归,得到最后白盒处理的滤镜参数$$\theta = {\theta_1,...,\theta_k}=R(Z)$$, where $$\theta_i \in [-1, 1], i=i,...,k$$. 有了参数 $$\theta$$, 就可以得到对应的输出, $$I^{'}_i=F_i(I^{'}_{i-1}, \theta_i), i = 1,..., k$$. 最后我们从合成的图片到输出的融合的图片就是, $$I^{'}=MI^{'}_k + (1-M)I^{'}_0$$,然后最后的输出也可以看出来,再次把输入 $$I^{'}_0$$ 放进去,确保背景的像素不会被改变,改变的只是前景部分,这也是_image harmonization 里面比较在意,或者说很重要的一点吗?_
30+
31+
### **Cascade Regressor**
32+
33+
这里要回归预测得到k 个filter的参数,视作一个**multi-task problem**,因为如果只是对每个filter去回归参数,最后的结果不理想,所以需要使用层级的回归器,具体的做法是当我们在对一个参数进行回归的时候,使用前面的filter的参数的特征向量作为条件。从$$\theta_i=R_i(Z), i = 1,...,k.$$
34+
35+
$$
36+
\theta_1 = R_1(Z) \theta_i = R_i(Z|\theta_{i-1})=R_i(Z|\theta_{i-1},...,\theta_1), i = 2,...,k
37+
$$
38+
39+
然后就把这6(文章根据自己的实验和经验以及确保程序表现而得出的6个)个filter和之前的,通过encoder得到的特征向量 Z 进行相加,进一步去回归。
40+
41+
**动态损失策略:损失函数** $$L_i=M||I^{'}_i-I_i||_{2}=M||F_i(I^{'}_{i-1},\theta_i)-I_i||_2, i=1,...,k$$,进一步动态调整为:
42+
43+
$$
44+
\tilde{L}_i=max(\frac{L_i-L_{i-1}}{L_k},0)\qquad i=1,...,k
45+
$$
46+
47+
$$
48+
L=\mu\sum^k_{i=1}\tilde{L}_i
49+
$$
50+
51+
### 其他
52+
53+
* 实验上就是[iHarmon4](https://arxiv.org/abs/1911.13239)的数据集, 然后因为在iHarmony4里面的合成图是通过GAN生成的,所以做了一些数据增强,用之前提到的逆向操作。
54+
* 指标就是常见的MSE Mean Square Error, fMSE foregroud Mean Square Error, PSNR Peak Signal-to-Noise Ration, 那fMSE只考虑前景的原因就是图像融合不会对背景有改变啦。
55+
* 训练上,用Adam优化器梯度下降,60个epoch,每个batch16张图片,学习率的设置就直接每25个epoch乘以0.1。
56+
* 最后的评估,一方面就是256_256的,但是要看高分辨率的,就很多方法都是在512_512上面训练的,所以直接输入2000之类的分辨率不太好,就最后在输出结果的时候上采样(用了一个叫**PCM**的方法,Polynomial Color Mapping)。
57+
* 最后的结果就是在一块RTX3090的GPU上训练,SOTA,模型小,速度快,占用内存低。
58+
59+
**存在的问题:**
60+
61+
1. (表现上的问题)就是文章里面提到的,对于前景和背景之间有很强的色调差异,以及照明灯光情况差异较大的时候,效果会不好,那文章提到了再加一个filter,之前
62+
2. 没发现有其他问题?感觉问题都是为了结果的更优化。
63+
3. 应用到其他问题上?效果可能不错,用来去生成splicing的数据集。
64+
4. 可以优化的地方?Encoder的结构,是不是有更好的选择,可以提取出合成图和前景mask更好的特征。
65+
66+
### GitHub
67+
68+
[https://github.com/ZHKKKe/Harmonizer](https://github.com/ZHKKKe/Harmonizer)

0 commit comments

Comments
 (0)