2023.3.28
2023.3.28
U-GAT-IT
Unsupervised Generative Attentional networks
with adaptive layer-instance normalization(AdaLIN) for Image-to-Image Translation
The attention module:模型关注区分source domains and target domain(attention map)
New AdaLIN:自适应 层实例 归一化函数——control the amount of change in shape and texture(依据不同的数据集 改变函数的超参)
G
:attention map--将注意力集中在两个领域(source domain&target domain)之间的特殊区别上。D
:attention map--helps fine-tuning(微调) BY 关注 target domain内fake图像和real图像之间的区别。
==归一化函数(normalization function)的选取影响the quality of the transformed results for various datasets(很多数据集的转换结果质量,这些数据集有着不同数量的在shape和texture上的改变)==
<受BIN批处理实例归一化的启发>,提出AdaLIN(自适应层实例归一化)
无监督生成网络
Goal:训练函数\(G_{s\rightarrow t }\):from source domain \(X_s\) to target domain \(X_t\) (==unpaired sample==)
Frameworks:
- Generators:\(G_{s\rightarrow t}\),\(G_{t\rightarrow s}\)
- Discriminators:\(D_s\),\(D_t\)
Model(\(G_{s\rightarrow t}\))
\(x\in \{X_s,X_t\}\):表示一个来自source & target domain的sample。
\(G_{s\rightarrow t}=E_s+G_t+\eta_s\):encoder、decoder、auxiliary classifier(辅助分类器)。
\(\eta_s(x)\):\(x\)来自\(X_s\)(source domain)的可能性。
\(E_s^k(x)\):encoder的第k个activation map(激活映射)。
\(E_s^{K_{ij}}(x)\):点\((i,j)\)的值--承接上面\(E_s^k(x)\),所以是encoder的第k个激活映射中点\((i,j)\)的值。
\(w_s^k\):第k个feature map(特征映射)的权值。==使用全局平均池化&全局最大池化(BY CAM)== \[ \color{red}i.e.\color{black}\ \eta_s(x)=\sigma(\sum_k w_s^k\sum_{ij}E_s^{k_{ij}}(x)) \] \(a_s(x)\):domain specific attention feature map( \(n\)是encoder feature maps的数量 ) \[ a_s(x)=w_s*E_s(x)=\{w_s^k*E_s^k|1\le k\le n\} \]
==Translation Model:\(G_{s\rightarrow t}=G_t(a_s(x))\)==
AdaLIN
其参数\(\gamma\)和\(\beta\)将在一个来自attention map的全连接层进行动态计算。 \[ AdaLIN(\alpha,\gamma,\beta)=\gamma\ \cdot \ (\rho\ \cdot \hat{a_I}+(1-\rho)\ \cdot\ \hat{a_L})+\beta\\ \hat{a_I}=\frac{a-\mu_I}{\sqrt{\sigma_I^2+\epsilon}}\\ \hat{a_L}=\frac{a-\mu_L}{\sqrt{\sigma_L^2+\epsilon}}\\ \rho\leftarrow clip_{[0,1]}(\rho-\tau \Delta \rho),\rho\in[0,1] \]
- \(\mu_I,\mu_L\):channel-wise mean(通道), layer-wise mean(层)
- \(\sigma_I,\sigma_L\):channel-wise & layer-wise 标准差(standard deviation)
- \(\tau\):learning rate(学习速率)
- \(\Delta \rho\):更新向量的参数(BY 优化器optimizer)
\(\rho\)的值是在imposing bounds (Step:更新param)时被限制在[0,1]
G调整\(\rho\)值,\(\rho\)接近1时instance normalization很重要;\(\rho\)接近0时LN很重要。
\(\rho\)值在解码器的剩余块(redidual blocks)中初始化为1,在解码器的上采样块(up-sampling blocks)中初始化为0。
Discriminator
\(x\in \{X_t,G_{s\rightarrow t}(X_s)\}\):来自目标域和翻译后的源域的示例。
\(D_t=E_{D_t}+C_{D_t}+\eta_{D_t}\):\(\eta_{D_t}(x)\) 和\(D_t(x)\)都被训练to分辨\(x\)来自\(X_t\)(target domain)还是\(G_{s\rightarrow t}(X_s)\)(从source domain生成的由source到target的映射,即fake images)
\(\alpha_{D_t}(x)=w_{D_t}*E_{D_t}(x)\)
==discriminator model:\(D_t(x)=C_{D_t}(\alpha_{D_t}(x))\)==
Loss function
包含以下四个损失函数:
- Adversarial loss(对抗损失):将转换后图像的分布与目标图像的分布进行匹配。
- Cycle loss(返回原样损失):to alleviate the mode collapse problem,因此施加周期约束——使得\(x\)从\(X_s\rightarrow X_t\)然后再\(X_t\rightarrow X_S\)能够恢复原样(original domain)。
- Identify loss(标志一致约束):保证输入图像与输出图像的颜色分布式是相似的。Given an image \(x ∈ X_t\), after the translation of \(x\) using \(G_{s→t}\), the image should not change.
- CAM loss(可提升损失):给定一个来自\(\{X_s,X_t\}\)的sample,\(G_{s→t}\) and \(D_t\) get to know where they need to improve or what makes the most difference between two domains in the current state.
\[ L_{lsgan}^{s\to t}=(E_{x\sim X_t}[(D_t(x))^2]+E_{x\sim X_s}[(1-D_t(G_{s\to t}(x)))^2])\\ L_{cycle}^{s\to t}=E_{x\sim X_s}[|x-G_{t\to s}(G_{s\to t}(x))|_1]\\ L_{identity}^{s\to t}=E_{x\sim X_t}[|x-G_{s\to t}(x)|_1]\\ L_{cam}^{s\to t}=-(E_{x\sim X_s}[log(\eta_s(x))]+E_{x\sim X_t}[log(1-\eta_s(x))])\\ L_{cam}^{D_t}=E_{x\sim X_t}[(\eta_{D_t}(x))^2]+E_{x\sim X_s}[1-\eta_{D_t}(G_{s\to t}(x))^2]\\ \]
然后对它们联合起来一起训练: \[ \min_{G_{s\to t},G_{t\to s},\eta_s,\eta_t}\ \max_{D_s,D_t,\eta D_s,\eta D_t}\lambda_1 L_{lsgan}+\lambda_2 L_{cycle}+\lambda_3 L_{identity}+\lambda_4 L_{cam}\\ L_{lsgan}=L_{lsgan}^{s\to t}+L_{lsgan}^{t\to s}\ \ (same\ as\ L{cycle},L_{identity},L_{cam})\\ \lambda_1=1,\lambda_2=10,\lambda_3=100,\lambda_4=1000\\ \]
luogugu
P4017
给你一个食物网,你要求出这个食物网中最大食物链的数量。
(这里的“最大食物链”,指的是生物学意义上的食物链,即最左端是不会捕食其他生物的生产者,最右端是不会被其他生物捕食的消费者。)
Delia 非常急,所以你只有 \(1\) 秒的时间。
由于这个结果可能过大,你只需要输出总数模上 \(80112002\) 的结果。
P1177-快排
1 |
|
乐,本来由三个点T了。结果开完O2就A了,6.
真実に:いろいろのways。所以换一种板子:
1 |
|
话说Bucket这种排序我是没有接触过么?
那倒不是,只是又忘记了:类似Hash表做vector,然后每个vec[i]都是一个bucket.