【计算机视觉|生成对抗】条件生成对抗网络(CGAN)

本系列博文为深度学习/计算机视觉论文笔记,转载请注明出处

标题:Conditional Generative Adversarial Nets

链接:[1411.1784] Conditional Generative Adversarial Nets (arxiv.org)

摘要

生成对抗网络(Generative Adversarial Nets)[8] 最近被引入为训练生成模型的一种新颖方法。

在这项工作中,我们介绍了生成对抗网络的条件版本,通过简单地将我们希望依赖的数据 y y y同时提供给生成器和判别器,就可以构建它。我们展示了这个模型可以生成依据类标签条件化的MNIST数字。

我们还说明了如何使用这个模型学习一个多模态模型(multi-modal model),并提供了一个初步的图像标记应用示例,在其中我们展示了如何使用这种方法生成并不是训练标签部分的描述性标签。

1 引言

生成对抗网络最近被引入为训练生成模型的一种替代框架,以便绕过许多难以处理的概率计算的困难。

对抗网络具有以下优势:

  • 从不需要马尔可夫链,仅使用反向传播来获取梯度

  • 学习过程中不需要推理,而且

  • 各种因素和相互作用都可以轻松纳入模型中

此外,正如[8]中所展示的,它可以产生最先进的对数似然估计和逼真的样本。

在一个无条件的生成模型中,生成数据的模式没有控制。

然而,通过在模型上附加额外的信息进行条件化,就可以引导数据生成过程。这种条件化可能基于类标签,像[5]那样基于部分数据进行修补,甚至基于不同的模态数据。

在这项工作中,我们展示了如何构建条件生成对抗网络。至于实证结果,我们展示了两组实验。一组是基于类标签的MNIST数字数据集,另一组是用于多模态学习的MIR Flickr 25,000数据集[10]。

2 相关工作

2.1 针对图像标记的多模态学习

尽管监督神经网络(特别是卷积网络)[13, 17]近来取得了许多成功,但将这些模型扩展以容纳极大数量的预测输出类别仍然具有挑战性。第二个问题是迄今为止的大部分工作都集中在学习输入到输出的一对一映射。然而,许多有趣的问题更自然地被认为是概率性的一对多映射。例如,在图像标记的情况下,可能有许多不同的标签可以适当地应用于给定的图像,不同的(人类)注释者可能使用不同的(但通常是同义或相关的)术语来描述同一图像。

  • 解决第一个问题的一种方法

    • 是利用其他模态的附加信息:例如,使用自然语言语料库学习标签的向量表示,其中几何关系在语义上有意义。
    • 在这样的空间中进行预测时,我们从事实中受益,即当预测错误时,我们仍然通常接近真相(例如,预测“桌子”而不是“椅子”),并且也从我们可以自然地对训练期间未见过的标签进行预测概括的事实中受益。
    • 诸如[3]的作品已经表明,即使是从图像特征空间到单词表示空间的简单线性映射也可以提高分类性能。
  • 解决第二个问题的一种方法

    • 是使用条件概率生成模型,输入被视为条件变量,一对多映射被实例化为条件预测分布。
    • [16]对此问题采取了类似的方法,并在MIR Flickr 25,000数据集上训练了一种多模态深度玻尔兹曼机,就像我们在这项工作中所做的那样。

此外,在[12]中,作者展示了如何训练一种受监督的多模态神经语言模型,并且他们能够为图像生成描述性句子。

3 条件生成对抗网络

3.1 生成对抗网络

生成对抗网络最近被引入作为训练生成模型的一种新颖方法。

它们由两个“对抗”的模型组成:一个生成模型G,用于捕获数据分布;和一个判别模型D,用于估计样本来自训练数据还是G的概率。G和D都可以是非线性映射函数,例如多层感知器。

为了学习生成器分布 p g p_g pg在数据 x x x上的分布,生成器从先验噪声分布 p z ( z ) p_z(z) pz(z)构建到数据空间的映射函数 G ( z ; θ g ) G(z; \theta_g) G(z;θg)。而判别器 D ( x ; θ d ) D(x; \theta_d) D(x;θd)输出一个标量,表示 x x x来自训练数据而不是 p g p_g pg的概率。

G和D都同时进行训练:我们调整G的参数以使 log ⁡ ( 1 − D ( G ( z ) ) \log(1 - D(G(z)) log(1D(G(z))最小化,并调整D的参数以使 log ⁡ D ( X ) \log D(X) logD(X)最小化,就好像它们在遵循具有值函数 V ( G , D ) V(G, D) V(G,D)的两玩家极小极大博弈:
min ⁡ G max ⁡ D V ( D , G ) = E x ∼ p data ( x ) [ log ⁡ D ( x ) ] + E z ∼ p z ( z ) [ log ⁡ ( 1 − D ( G ( z ) ) ) ] 。 (1) \min_G \max_D V(D, G) = \mathbb{E}_{x \sim p_{\text{data}}(x)} [\log D(x)] + \mathbb{E}_{z \sim p_z(z)} [\log(1 - D(G(z)))]。 \tag{1} GminDmaxV(D,G)=Expdata(x)[logD(x)]+Ezpz(z)[log(1D(G(z)))](1)

3.2 条件生成对抗网络

生成对抗网络可以扩展到条件模型,如果生成器和判别器都基于一些额外的信息 y y y进行条件化。 y y y可以是任何类型的辅助信息,例如类标签或来自其他模态的数据。我们可以通过将 y y y作为附加的输入层输入到判别器和生成器中来执行条件化。

在生成器中,先验输入噪声 p z ( z ) p_z(z) pz(z) y y y结合在联合隐藏表示中,而对抗训练框架允许在组成这个隐藏表示方面具有相当大的灵活性。1

在判别器中, x x x y y y被呈现为输入,并输入到判别函数(在这种情况下再次由MLP体现)。
两个玩家极小极大博弈的目标函数将与等式2相同
min ⁡ G max ⁡ D V ( D , G ) = E x ∼ p data ( x ) [ log ⁡ D ( x ∣ y ) ] + E z ∼ p z ( z ) [ log ⁡ ( 1 − D ( G ( z ∣ y ) ) ) ] 。 (2) \min_G \max_D V(D, G) = \mathbb{E}_{x \sim p_{\text{data}}(x)} [\log D(x|y)] + \mathbb{E}_{z \sim p_z(z)} [\log(1 - D(G(z|y)))]。 \tag{2} GminDmaxV(D,G)=Expdata(x)[logD(xy)]+Ezpz(z)[log(1D(G(zy)))](2)
图1说明了一个简单条件对抗网络的结构。

图1:条件生成对抗网络

4 实验结果

4.1 单模态

我们在MNIST图像上训练了一个条件生成对抗网络,并基于它们的类标签进行条件化,以one-hot向量进行编码。
在生成器网络中,从单位超立方体中均匀分布抽取了一个具有100个维度的噪声先验 z z z z z z y y y都被映射到具有整流线性单元(ReLu)激活[4, 11]的隐藏层,层大小分别为200和1000,然后再被映射到维度为1200的第二个组合隐藏ReLu层。然后我们有一个最终的Sigmoid单元层作为生成784维MNIST样本的输出。

判别器将 x x x映射到具有240个单元和5个部分的maxout [6]层,并将 y y y映射到具有50个单元和5个部分的maxout层。在被送入Sigmoid层之前,两个隐藏层都映射到一个具有240个单元和4个部分的联合maxout层。(判别器的确切架构并不关键,只要它具有足够的能力;我们发现maxout单元通常适合这项任务。)

该模型使用具有大小为100的小批量和初始学习率0.1的随机梯度下降进行训练,该学习率以1.00004的衰减因子呈指数递减至0.000001。初始动量为0.5,增加到0.7。Dropout [9]概率为0.5应用于生成器和判别器。并以验证集上的对数似然的最佳估计作为停止点。

表1显示了用于MNIST数据集测试数据的高斯Parzen窗口对数似然估计。从每个10个类别中抽取1000个样本,并对这些样本拟合高斯Parzen窗口。然后我们使用Parzen窗口分布估计测试集的对数似然。(有关如何构建此估计的更多详细信息,请参见[8]。)

表1:基于Parzen窗口的MNIST对数似然估计。我们遵循了与[8]相同的程序来计算这些值。

我们展示的条件生成对抗网络结果与其他一些基于网络的结果相当,但被其他几种方法所超过,包括非条件生成对抗网络。我们更多地将这些结果作为概念验证而非有效性展示,并相信通过进一步探索超参数空间和架构,条件模型应当匹配或超过非条件结果。

图2显示了一些生成的样本。每一行都以一个标签为条件,每一列都是一个不同的生成样本。

图2:生成的MNIST数字,每一行都是基于一个标签

4.2 多模态

像Flickr这样的照片网站是图像及其关联的用户生成元数据(UGM)形式的丰富标签数据源,特别是用户标签。用户生成的元数据与更“规范”的图像标签方案不同,因为它们通常更具描述性,并且在语义上更接近人们如何用自然语言描述图像,而不仅仅是识别图像中存在的对象。UGM的另一个方面是同义词普遍存在,不同的用户可能会使用不同的词汇来描述相同的概念,因此,有效地标准化这些标签变得重要。概念词嵌入[14]在这里可能非常有用,因为相关概念最终会被表示为相似的向量。

在本节中,我们演示了使用条件对抗网络生成图像的自动标签(可能是多模态的)标签向量分布的多标签预测。

对于图像特征,我们使用与[13]类似的卷积模型预训练了具有21,000个标签[15]的完整ImageNet数据集。我们使用最后一个完全连接的层的输出,该层具有4096个单元作为图像表示。

对于世界表示,我们首先从YFCC100M2数据集元数据的用户标签、标题和描述的串联中收集文本。在文本的预处理和清理之后,我们用单词向量大小为200训练了一个跳过的gram模型[14]。我们省略了在词汇表中出现少于200次的任何单词,从而最终得到大小为247465的字典。

在对抗网络的训练期间,我们保持卷积模型和语言模型固定。并将通过这些模型的反向传播留作未来工作。

对于我们的实验,我们使用MIR Flickr 25,000数据集[10],并使用我们上述描述的卷积模型和语言模型提取图像和标签特征。未加任何标签的图像被省略,注释被视为额外标签。前150,000个示例用作训练集。具有多个标签的图像在训练集内重复,每个关联标签重复一次。

对于评估,我们为每个图像生成100个样本,并使用词汇表中单词的向量表示与每个样本的余弦相似度找到最接近的前20个单词。然后我们选择所有100个样本中最常见的前10个单词。表4.2显示了用户分配的标签和注释以及生成的标签的一些样本。

最佳工作模型的生成器接收大小为100的高斯噪声作为噪声先验,并将其映射到500维ReLu层。并将4096维图像特征向量映射到2000维ReLu隐藏层。这两层都映射到200维线性层,该层将输出生成的单词向量。

鉴别器由单词向量和图像特征分别为500和1200维的ReLu隐藏层组成,并且具有1000个单位和3个部分的最大层作为连接层,最终输入到一个单一的S形单元。

该模型使用随机梯度下降进行训练,批量大小为100,并且初始学习速率为0.1,这个速率呈指数下降至.000001,衰减因子为1.00004。还使用了初始值为.5的动量,该动量增加到0.7。在生成器和鉴别器上均应用了概率为0.5的丢弃。

通过交叉验证和随机网格搜索与手动选择的混合(尽管在有限的搜索空间内)获得了超参数和架构选择。

5 未来工作

本文所示的结果非常初步,但它们展示了条件对抗网络的潜力,并对有趣和有用的应用展示了希望。

在现在和工作坊之间的未来探索中,我们期望呈现更复杂的模型,以及对它们的性能和特性进行更详细和彻底的分析。

表格2:生成标签样本

此外,在当前的实验中,我们只单独使用每个标签。但是,通过同时使用多个标签(有效地将生成问题提出为“集合生成”问题),我们希望能够取得更好的结果。

未来工作的另一个明显方向是构建联合训练方案以学习语言模型。例如[12]的工作表明,我们可以为特定任务学习适合的语言模型。

致谢

本项目是在Pylearn2 [7] 框架中开发的,我们想要感谢Pylearn2的开发者们。我们还要感谢Ian Goodfellow在蒙特利尔大学任职期间的有益讨论。作者衷心感谢Flickr的视觉与机器学习团队以及生产工程团队的支持(按字母顺序:Andrew Stadlen, Arel Cordero, Clayton Mellina, Cyprien Noel, Frank Liu, Gerry Pesavento, Huy Nguyen, Jack Culpepper, John Ko, Pierre Garrigues, Rob Hess, Stacey Svetlichnaya, Tobi Baumgartner, 和 Ye Lu)。

参考文献

  1. Bengio, Y., Mesnil, G., Dauphin, Y.和Rifai, S.(2013)。通过深度表示实现更好的混合。在ICML’2013上。
  2. Bengio, Y., Thibodeau-Laufer, E., Alain, G.和Yosinski, J.(2014)。可以通过反向传播进行训练的深度生成随机网络。在第30届国际机器学习大会(ICML’14)论文集中。
  3. Frome, A., Corrado, G. S., Shlens, J., Bengio, S., Dean, J., Mikolov, T.等(2013)。Devise:一种深度视觉语义嵌入模型。在神经信息处理系统的进展中,页码:2121–2129。
  4. Glorot, X., Bordes, A.和Bengio, Y.(2011)。深度稀疏整流器神经网络。在人工智能与统计学国际会议上,页码:315–323。
  5. Goodfellow, I.,Mirza, M.,Courville, A.和Bengio, Y.(2013a)。多预测深度Boltzmann机。在神经信息处理系统的进展中,页码:548–556。
  6. Goodfellow, I. J.,Warde-Farley, D.,Mirza, M.,Courville, A.和Bengio, Y.(2013b)。最大输出网络。在ICML’2013上。
  7. Goodfellow, I. J., Warde-Farley, D., Lamblin, P., Dumoulin, V., Mirza, M., Pascanu, R., Bergstra, J., Bastien, F.和Bengio, Y.(2013c)。Pylearn2:一个机器学习研究库。arXiv预印本arXiv:1308.4214。
  8. Goodfellow, I. J., Pouget-Abadie, J., Mirza, M., Xu, B., Warde-Farley, D., Ozair, S., Courville, A.和Bengio, Y.(2014)。生成对抗网络。在NIPS’2014上。
  9. Hinton, G. E.,Srivastava, N.,Krizhevsky, A.,Sutskever, I.和Salakhutdinov, R.(2012)。通过防止特征检测器的共适应来改善神经网络。技术报告,编号:arXiv:1207.0580。
  10. Huiskes, M. J.和Lew, M. S.(2008)。mir flickr检索评估。在MIR’08:2008年ACM国际多媒体信息检索大会上,纽约,美国。ACM。
  11. Jarrett, K.,Kavukcuoglu, K.,Ranzato, M.和LeCun, Y.(2009)。用于对象识别的最佳多级架构是什么?在ICCV’09上。
  12. Kiros, R.,Zemel, R.和Salakhutdinov, R.(2013)。多模态神经语言模型。在NIPS深度学习研讨会的论文集中。
  13. Krizhevsky, A.,Sutskever, I.和Hinton, G.(2012)。使用深度卷积神经网络的ImageNet分类。在神经信息处理系统25的进展(NIPS’2012)中。
  14. Mikolov, T.,Chen, K.,Corrado, G.和Dean, J.(2013)。在向量空间中有效估计单词表示。在学习表示国际会议:研讨会跟踪上。
  15. Russakovsky, O.和Fei-Fei, L.(2010)。大规模数据集中的属性学习。在欧洲计算机视觉大会(ECCV),希腊克里特岛的部分和属性国际研讨会上。
  16. Srivastava, N.和Salakhutdinov, R.(2012)。用深度Boltzmann机进行多模态学习。在NIPS’2012上。
  17. Szegedy, C.,Liu, W.,Jia, Y.,Sermanet, P.,Reed, S.,Anguelov, D.,Erhan, D.,Vanhoucke, V.和Rabiovich, A.(2014)。用卷积深入探究。arXiv预印本arXiv:1409.4842。

References

  1. Bengio, Y., Mesnil, G., Dauphin, Y., and Rifai, S. (2013). Better mixing via deep representations. In ICML’2013.
  2. Bengio, Y., Thibodeau-Laufer, E., Alain, G., and Yosinski, J. (2014). Deep generative stochastic networks trainable by backprop. In Proceedings of the 30th International Conference on Machine Learning (ICML’14).
  3. Frome, A., Corrado, G. S., Shlens, J., Bengio, S., Dean, J., Mikolov, T., et al. (2013). Devise: A deep visual-semantic embedding model. In Advances in Neural Information Processing Systems, pages 2121–2129.
  4. Glorot, X., Bordes, A., and Bengio, Y. (2011). Deep sparse rectifier neural networks. In International Conference on Artificial Intelligence and Statistics, pages 315–323.
  5. Goodfellow, I., Mirza, M., Courville, A., and Bengio, Y. (2013a). Multi-prediction deep Boltzmann machines. In Advances in Neural Information Processing Systems, pages 548–556.
  6. Goodfellow, I. J., Warde-Farley, D., Mirza, M., Courville, A., and Bengio, Y. (2013b). Maxout networks. In ICML’2013.
  7. Goodfellow, I. J., Warde-Farley, D., Lamblin, P., Dumoulin, V., Mirza, M., Pascanu, R., Bergstra, J., Bastien, F., and Bengio, Y. (2013c). Pylearn2: a machine learning research library. arXiv preprint arXiv:1308.4214.
  8. Goodfellow, I. J., Pouget-Abadie, J., Mirza, M., Xu, B., Warde-Farley, D., Ozair, S., Courville, A., and Bengio, Y. (2014). Generative adversarial nets. In NIPS’2014.
  9. Hinton, G. E., Srivastava, N., Krizhevsky, A., Sutskever, I., and Salakhutdinov, R. (2012). Improving neural networks by preventing co-adaptation of feature detectors. Technical report, arXiv:1207.0580.
  10. Huiskes, M. J. and Lew, M. S. (2008). The mir flickr retrieval evaluation. In MIR ’08: Proceedings of the 2008 ACM International Conference on Multimedia Information Retrieval, New York, NY, USA. ACM.
  11. Jarrett, K., Kavukcuoglu, K., Ranzato, M., and LeCun, Y. (2009). What is the best multi-stage architecture for object recognition? In ICCV’09.
  12. Kiros, R., Zemel, R., and Salakhutdinov, R. (2013). Multimodal neural language models. In Proc. NIPS Deep Learning Workshop.
  13. Krizhevsky, A., Sutskever, I., and Hinton, G. (2012). ImageNet classification with deep convolutional neural networks. In Advances in Neural Information Processing Systems 25 (NIPS’2012).
  14. Mikolov, T., Chen, K., Corrado, G., and Dean, J. (2013). Efficient estimation of word representations in vector space. In International Conference on Learning Representations: Workshops Track.
  15. Russakovsky, O. and Fei-Fei, L. (2010). Attribute learning in large-scale datasets. In European Conference of Computer Vision (ECCV), International Workshop on Parts and Attributes, Crete, Greece.
  16. Srivastava, N. and Salakhutdinov, R. (2012). Multimodal learning with deep Boltzmann machines. In NIPS’2012.
    Vision (ECCV), International Workshop on Parts and Attributes, Crete, Greece.
  17. Srivastava, N. and Salakhutdinov, R. (2012). Multimodal learning with deep Boltzmann machines. In NIPS’2012.
  18. Szegedy, C., Liu, W., Jia, Y., Sermanet, P., Reed, S., Anguelov, D., Erhan, D., Vanhoucke, V., and Rabiovich, A. (2014). Going deeper with convolutions. arXiv preprint arXiv:1409.4842.

  1. 目前,我们简单地将条件输入和先验噪声作为MLP的单个隐藏层的输入,但人们可以想象使用更高阶的交互作用,允许复杂的生成机制,这在传统的生成框架中将非常难以处理。 ↩︎

  2. Yahoo Flickr Creative Common 100M 数据集:http://webscope.sandbox.yahoo.com/catalog.php?datatype=i&did=67。 ↩︎

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/38055.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Windows 11 家庭中文版找不到组策略文件gpedit.msc

最近因为调整日期问题需要用到组策略文件gpedit.msc,但是发现找不到文件 在按键盘 winR 打开运行界面输入 gpedit.msc 回车 Windows找不到文件’gpedit.msc’。请确定文件名是否正确后,再试-次。 检查电脑Windows系统版本 是 Windows 11 家庭中文版 果断早网上搜…

Jmeter 参数化的几种方法

目录 配置元件-用户自定义变量 前置处理器-用户参数 配置元件-CSV Data Set Config Tools-函数助手 配置元件-用户自定义变量 可在测试计划、线程组、HTTP请求下创建用户定义的变量 全局变量,可以跨线程组调用 jmeter执行的时候,只获取一次&#xff0…

kafka 02——三个重要的kafka客户端

kafka 02——三个重要的kafka客户端 1. 前言1.1 关于 Kafka 的安装1.2 常用客户端简介1.3 依赖 2. AdminClient2.1 Admin Configs2.2 AdminClient API2.2.1 设置 AdminClient 对象2.2.2 创建 topic 获取 topic 列表2.2.3 删除topic2.2.4 查看 topic 的描述信息2.2.5 查看 topi…

【腾讯云 TDSQL-C Serverless 产品体验】基于TDSQL-C 存储爬取的QQ音乐歌单数据

【腾讯云 TDSQL-C Serverless 产品体验】基于TDSQL-C 存储爬取的QQ音乐歌单数据 文章目录 【腾讯云 TDSQL-C Serverless 产品体验】基于TDSQL-C 存储爬取的QQ音乐歌单数据前言出现的背景一、TDSQL-C数据库是什么?二、TDSQL-C 的特点三、TDSQL-C的应用场景四、基于TD…

测试相关Liunx基础知识

Linux的历史和安装 基本常识 Liunx目录结果 常见

CTF之逆向之阿里巴巴

题目地址:http://www.shiyanbar.com/ctf/13 题目预览: 解题过程: 1、下载附件发现是exe文件 2、使用PEid和Detect It Easy查壳 和 开发语言,发现没有加壳,都是用C#开发的 3、C#和Java Python属于解释型语言&#xff…

Win10安装GPU支持的最新版本的tensorflow

我在安装好cuda和cudnn后,使用pip install tensorflow安装的tensorflow都提示不能找到GPU, 为此怀疑默认暗转的tensorflow是不带GPU支持的。 在tensorflow官网提供了多个版本的GPU支持的windows的安装包 https://www.tensorflow.org/install/pip?hlz…

用ChatGPT和六顶帽思考法帮助自己更好地决策和解决问题

当我们在解决复杂问题时,我们常常陷入单一视角的状态。创造性思维领域的先驱爱德华德博诺,提出了六顶帽思考法[1],这意味着我们可以从六个不同的视角来思考一个问题,以实现高水平决策和解决问题。 每一顶“帽子”代表不同的视角。…

SAP ME2L/ME2M/ME3M报表增强添加字段(包含:LMEREPI02、SE18:ES_BADI_ME_REPORTING)

ME2L、ME2M、ME3M这三个报表的字段增强,核心点都在同一个结构里 SE11:MEREP_OUTTAB_PURCHDOC 在这里加字段,如果要加的字段是EKKO、EKPO里的数据,直接加进去,啥都不用做,就完成了 如果要加的字段不在EKKO和EKPO这两个…

LabVIEW控制通用工作台

LabVIEW控制通用工作台 用于教育目的的计算机化实验室显着增长,特别是用于运动控制的实验室。它们代表了各种工业应用中不断扩大的领域,并成为以安全的方式使用通常昂贵或独特的实验室设备进行实时实验的宝贵工具。NI LabVIEW等软件应用程序的开发和不断…

智慧工地源码,互联网+建筑工地,基于微服务+Java+Spring Cloud +Vue+UniApp开发

基于微服务JavaSpring Cloud VueUniApp MySql开发的智慧工地云平台源码 智慧工地概念: 智慧工地就是互联网建筑工地,是将互联网的理念和技术引入建筑工地,然后以物联网、移动互联网技术为基础,充分应用BIM、大数据、人工智能、移…

【jvm】类加载器的分类

目录 一、说明二、示例2.1 代码2.2 截图 三、启动类加载器四、扩展类加载器五、应用程序类加载器 一、说明 1.jvm支持两种类型的类加载器,分别是引导类加载器(bootstrap classloader)和自定义类加载器(user-defined classloader&a…

【springboot启动报错】java: 错误: 无效的源发行版:17

报错截图 解决方案 第一步:编辑配置,改为想用的jdk版本 第二步:文件--->项目结构,改为对应的SDK 第三步:文件--->设置--->构建、执行、部署--->编译器--->Java编译器,修改目标字节码版本 第…

fiddler抓包工具的用法以及抓取手机报文定位bug

前言: fiddler抓包工具是日常测试中常用的一种bug定位工具 一 抓取https报文步骤 使用方法: 1 首先打开fiddler工具将证书导出 点击TOOLS------Options------Https-----Actions---选中第二个选项 2 把证书导出到桌面后 打开谷歌浏览器 设置---高级…

自定义 视频/音频 进度条

复制代码根据自己需求改动就可以了 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><metaname"viewport"conten…

Vue3组件库

Vue组件库 ViteVue3TypescriptTSX 1、项目搭建 1.1、创建项目&#xff08;yarn&#xff09; D:\WebstromProject>yarn create vite yarn create v1.22.19 [1/4] Resolving packages... [2/4] Fetching packages... [3/4] Linking dependencies... [4/4] Building fresh pa…

UNIAPP中开发企业微信小程序

概述 需求为使用uni-app开发企业微信小程序。希望可以借助现成的uni-app框架&#xff0c;快速开发。遇到的问题是uni-app引入jweixin-1.2.0.js提示异常: Reason: TypeError: Cannot read properties of undefined (reading ‘title’)。本文中描述了如何解决该问题&#xff0c…

K8S之存储卷

K8S之存储卷 一、emptyDir emptyDir&#xff1a;可实现Pod中的容器之间共享目录数据&#xff0c;但emptyDir存储卷没有持久化数据的能力&#xff0c;存储卷会随着Pod生命周期结束而一起删除二、hostPath hostPath&#xff1a;将Node节点上的目录/文件挂载到Pod容器的指定目录…

TypeScript 关于对【泛型】的定义使用解读

目录 概念导读泛型函数多个泛型参数泛型约束泛型别名泛型接口泛型类总结&#xff1a; 概念导读 泛型&#xff08;Generics&#xff09;是指在定义函数、接口或类的时候&#xff0c;不预先指定具体的类型&#xff0c;而在使用的时候再指定类型的一种特性。使用泛型 可以复用类型…

Oracle切割字符串的方法,SQL语句完成。

Oracle用正则的方式循环切割字符串 需求&#xff1a;有一个这样子的 Str “‘CNJ-520-180500000001|CNJ-520-181200000001|CNJ-520-190300000001|CNJ-520-190100000001|CNJ-520-181200000002’” &#xff0c;然后我需要拿到每一个单号&#xff0c;每一个单号都要走一遍固定的…