chore(i18n): sync translations with latest source changes (chunk 4/8, 8 changes)

This commit is contained in:
localizeflow[bot] 2026-01-30 01:17:29 +00:00
parent 8009fa286e
commit abf99c481d
8 changed files with 5814 additions and 0 deletions

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,30 @@
# 使用迁移学习对牛津宠物进行分类
来自 [AI 初学者课程](https://github.com/microsoft/ai-for-beginners) 的实验任务。
## 任务
想象一下,你需要为一家宠物托管中心开发一个应用程序,用来记录所有的宠物。这样的应用程序一个很棒的功能就是能够通过照片自动识别宠物的品种。在本次任务中,我们将使用迁移学习对 [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) 宠物数据集中的真实宠物图片进行分类。
## 数据集
我们将使用原始的 [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) 宠物数据集,该数据集包含 35 种不同品种的猫和狗。
要下载数据集,请使用以下代码片段:
```python
!wget https://www.robots.ox.ac.uk/~vgg/data/pets/data/images.tar.gz
!tar xfz images.tar.gz
!rm images.tar.gz
```
## 启动 Notebook
通过打开 [OxfordPets.ipynb](../../../../../../lessons/4-ComputerVision/08-TransferLearning/lab/OxfordPets.ipynb) 开始实验。
## 收获
迁移学习和预训练网络使我们能够相对轻松地解决现实世界中的图像分类问题。然而,预训练网络在处理相似类型的图像时效果较好,如果我们开始分类非常不同的图像(例如医学图像),结果可能会大打折扣。
**免责声明**
本文档使用AI翻译服务 [Co-op Translator](https://github.com/Azure/co-op-translator) 进行翻译。尽管我们努力确保翻译的准确性,但请注意,自动翻译可能包含错误或不准确之处。应以原始语言的文档作为权威来源。对于关键信息,建议使用专业人工翻译。因使用本翻译而引起的任何误解或误读,我们概不负责。

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,100 @@
# 自动编码器
在训练 CNN 时,一个问题是我们需要大量的标注数据。在图像分类的情况下,我们需要将图像分成不同的类别,这通常需要手动完成。
## [课前测验](https://ff-quizzes.netlify.app/en/ai/quiz/17)
然而,我们可能希望使用原始(未标注)数据来训练 CNN 特征提取器,这被称为**自监督学习**。在这种情况下,我们将训练图像同时作为网络的输入和输出。**自动编码器**的核心思想是,我们会有一个**编码器网络**,将输入图像转换为某种**潜在空间**(通常是一个较小尺寸的向量),然后通过**解码器网络**来重建原始图像。
> ✅ [自动编码器](https://wikipedia.org/wiki/Autoencoder) 是“一种用于学习未标注数据高效编码的人工神经网络。”
由于我们训练自动编码器的目标是尽可能捕捉原始图像的信息以实现准确的重建,网络会尝试找到输入图像的最佳**嵌入**以捕捉其意义。
![自动编码器示意图](../../../../../translated_images/zh-CN/autoencoder_schema.5e6fc9ad98a5eb61.webp)
> 图片来源:[Keras 博客](https://blog.keras.io/building-autoencoders-in-keras.html)
## 自动编码器的应用场景
虽然重建原始图像本身似乎没有太大的实际用途,但在以下场景中,自动编码器特别有用:
* **降低图像维度以便可视化**或**训练图像嵌入**。通常,自动编码器比 PCA 效果更好,因为它考虑了图像的空间特性和层次化特征。
* **去噪**,即去除图像中的噪声。由于噪声包含了大量无用信息,自动编码器无法将所有噪声信息压缩到相对较小的潜在空间中,因此它只捕捉图像的重要部分。在训练去噪器时,我们以原始图像为目标,并使用人工添加噪声的图像作为自动编码器的输入。
* **超分辨率**,即提高图像分辨率。我们以高分辨率图像为目标,并使用低分辨率图像作为自动编码器的输入。
* **生成模型**。一旦我们训练了自动编码器,解码器部分可以用来从随机潜在向量生成新对象。
## 变分自动编码器 (VAE)
传统的自动编码器通过某种方式降低输入数据的维度,从而提取输入图像的重要特征。然而,潜在向量通常没有太多意义。换句话说,以 MNIST 数据集为例,确定哪些数字对应于不同的潜在向量并不容易,因为相近的潜在向量不一定对应于相同的数字。
另一方面,要训练**生成模型**,最好对潜在空间有一定的理解。这一想法引导我们进入**变分自动编码器** (VAE)。
VAE 是一种自动编码器,它学习预测潜在参数的**统计分布**,即所谓的**潜在分布**。例如,我们可能希望潜在向量呈正态分布,具有某个均值 z<sub>mean</sub> 和标准差 z<sub>sigma</sub>(均值和标准差都是某个维度 d 的向量。VAE 的编码器学习预测这些参数,然后解码器从该分布中随机抽取一个向量以重建对象。
总结如下:
* 从输入向量预测 `z_mean``z_log_sigma`(我们预测的是标准差的对数而不是标准差本身)
* 从分布 N(z<sub>mean</sub>,exp(z<sub>log\_sigma</sub>)) 中抽取一个向量 `sample`
* 解码器尝试使用 `sample` 作为输入向量解码原始图像
<img src="../../../../../translated_images/zh-CN/vae.464c465a5b6a9e25.webp" width="50%">
> 图片来源:[Isaak Dykeman 的博客文章](https://ijdykeman.github.io/ml/2016/12/21/cvae.html)
变分自动编码器使用一个复杂的损失函数,该损失函数由两部分组成:
* **重建损失**是一个损失函数用于衡量重建图像与目标图像的接近程度可以是均方误差MSE。它与普通自动编码器的损失函数相同。
* **KL 损失**确保潜在变量分布接近正态分布。它基于 [Kullback-Leibler 散度](https://www.countbayesie.com/blog/2017/5/9/kullback-leibler-divergence-explained) 的概念——一种估计两个统计分布相似程度的度量。
VAE 的一个重要优势是它可以相对轻松地生成新图像,因为我们知道从哪个分布中抽取潜在向量。例如,如果我们在 MNIST 数据集上用 2D 潜在向量训练 VAE我们可以通过改变潜在向量的分量来获得不同的数字
<img alt="vaemnist" src="../../../../../translated_images/zh-CN/vaemnist.cab9e602dc08dc50.webp" width="50%"/>
> 图片来源:[Dmitry Soshnikov](http://soshnikov.com)
观察图像如何相互融合,当我们从潜在参数空间的不同部分获取潜在向量时,图像开始逐渐变化。我们还可以将这个空间可视化为二维:
<img alt="vaemnist cluster" src="../../../../../translated_images/zh-CN/vaemnist-diag.694315f775d5d666.webp" width="50%"/>
> 图片来源:[Dmitry Soshnikov](http://soshnikov.com)
## ✍️ 练习:自动编码器
通过以下笔记本了解更多关于自动编码器的内容:
* [TensorFlow 中的自动编码器](AutoencodersTF.ipynb)
* [PyTorch 中的自动编码器](AutoEncodersPyTorch.ipynb)
## 自动编码器的特性
* **数据特定性** - 它们只对训练时使用的图像类型效果良好。例如,如果我们在花卉图像上训练一个超分辨率网络,它在肖像图像上效果可能不佳。这是因为网络通过从训练数据集中学习的特征中提取细节来生成高分辨率图像。
* **有损性** - 重建的图像与原始图像并不完全相同。损失的性质由训练期间使用的**损失函数**定义。
* 适用于**未标注数据**
## [课后测验](https://ff-quizzes.netlify.app/en/ai/quiz/18)
## 总结
在本课中,您学习了 AI 科学家可用的各种类型的自动编码器。您学习了如何构建它们,以及如何使用它们重建图像。您还学习了 VAE 以及如何使用它生成新图像。
## 🚀 挑战
在本课中,您学习了如何将自动编码器用于图像。但它们也可以用于音乐!查看 Magenta 项目的 [MusicVAE](https://magenta.tensorflow.org/music-vae) 项目,该项目使用自动编码器学习重建音乐。使用该库进行一些[实验](https://colab.research.google.com/github/magenta/magenta-demos/blob/master/colab-notebooks/Multitrack_MusicVAE.ipynb),看看您能创造出什么。
## [课后测验](https://ff-quizzes.netlify.app/en/ai/quiz/16)
## 复习与自学
参考以下资源,了解更多关于自动编码器的内容:
* [在 Keras 中构建自动编码器](https://blog.keras.io/building-autoencoders-in-keras.html)
* [NeuroHive 博客文章](https://neurohive.io/ru/osnovy-data-science/variacionnyj-avtojenkoder-vae/)
* [变分自动编码器详解](https://kvfrans.com/variational-autoencoders-explained/)
* [条件变分自动编码器](https://ijdykeman.github.io/ml/2016/12/21/cvae.html)
## 作业
在 [使用 TensorFlow 的自动编码器笔记本](AutoencodersTF.ipynb) 的末尾,您会发现一个“任务”——将其作为您的作业。
---

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,101 @@
# 生成对抗网络
在上一节中,我们学习了**生成模型**可以生成与训练数据集中的图像相似的新图像的模型。VAE是生成模型的一个很好的例子。
## [课前测验](https://ff-quizzes.netlify.app/en/ai/quiz/19)
然而如果我们尝试生成一些真正有意义的内容比如一幅分辨率合理的画作使用VAE时会发现训练效果并不理想。针对这种情况我们需要学习另一种专门用于生成模型的架构——**生成对抗网络**简称GAN。
GAN的核心思想是使用两个神经网络相互对抗进行训练
<img src="../../../../../translated_images/zh-CN/gan_architecture.8f3a5ab62b8d5d69.webp" width="70%"/>
> 图片来源:[Dmitry Soshnikov](http://soshnikov.com)
> ✅ 一些术语:
> * **生成器**是一个网络,它接收一个随机向量,并生成图像作为输出。
> * **判别器**是一个网络,它接收一张图像,并判断该图像是来自训练数据集的真实图像,还是由生成器生成的虚假图像。它本质上是一个图像分类器。
### 判别器
判别器的架构与普通的图像分类网络没有区别。最简单的情况下,它可以是一个全连接分类器,但更常见的是一个[卷积网络](../07-ConvNets/README.md)。
> ✅ 基于卷积网络的GAN被称为[DCGAN](https://arxiv.org/pdf/1511.06434.pdf)
一个CNN判别器由以下层组成几个卷积+池化层(空间尺寸逐渐减小),以及一个或多个全连接层以获得“特征向量”,最后是一个二分类器。
> ✅ “池化”是一种减少图像尺寸的技术。“池化层通过将一个层中神经元簇的输出合并为下一层中的单个神经元来减少数据的维度。” - [来源](https://wikipedia.org/wiki/Convolutional_neural_network#Pooling_layers)
### 生成器
生成器稍微复杂一些。可以将其视为一个反向的判别器。从一个潜在向量(代替特征向量)开始,它通过一个全连接层将其转换为所需的尺寸/形状,然后进行反卷积+上采样。这类似于[自动编码器](../09-Autoencoders/README.md)的*解码器*部分。
> ✅ 由于卷积层是通过线性滤波器遍历图像实现的,反卷积本质上与卷积类似,可以使用相同的层逻辑实现。
<img src="../../../../../translated_images/zh-CN/gan_arch_detail.46b95fd366f8e543.webp" width="70%"/>
> 图片来源:[Dmitry Soshnikov](http://soshnikov.com)
### GAN的训练
GAN被称为**对抗性**网络,因为生成器和判别器之间存在持续的竞争。在这种竞争中,生成器和判别器都会不断改进,从而使网络能够生成越来越好的图像。
训练分为两个阶段:
* **训练判别器**。这个任务相对简单我们通过生成器生成一批图像将其标记为0代表虚假图像然后从输入数据集中取一批图像标记为1真实图像。我们计算出判别器的*损失*,并进行反向传播。
* **训练生成器**。这稍微复杂一些因为我们无法直接知道生成器的期望输出。我们将整个GAN网络由生成器和判别器组成输入一些随机向量并期望输出为1对应真实图像。然后我们冻结判别器的参数此步骤不对判别器进行训练并进行反向传播。
在这个过程中,生成器和判别器的损失不会显著下降。在理想情况下,它们应该呈现振荡状态,表明两个网络都在不断提高性能。
## ✍️ 练习GANs
* [TensorFlow/Keras中的GAN笔记本](GANTF.ipynb)
* [PyTorch中的GAN笔记本](GANPyTorch.ipynb)
### GAN训练中的问题
GAN训练尤其困难以下是一些常见问题
* **模式崩溃**。指生成器学会生成一种成功欺骗判别器的图像,而不是生成多样化的图像。
* **对超参数的敏感性**。经常会发现GAN完全无法收敛但突然降低学习率后可能会收敛。
* **保持生成器和判别器之间的平衡**。在许多情况下,判别器的损失可能会迅速降到零,导致生成器无法继续训练。为了解决这个问题,可以尝试为生成器和判别器设置不同的学习率,或者在判别器损失已经很低时跳过判别器的训练。
* **高分辨率训练**。与自动编码器类似的问题,重建卷积网络的过多层会导致伪影。通常通过所谓的**渐进式增长**来解决这一问题,先用低分辨率图像训练几层,然后逐步“解锁”或添加层。另一种解决方案是增加层之间的额外连接,同时训练多个分辨率——详情请参阅这篇[多尺度梯度GAN论文](https://arxiv.org/abs/1903.06048)。
## 风格迁移
GAN是生成艺术图像的绝佳工具。另一种有趣的技术是所谓的**风格迁移**,它将一个**内容图像**重新绘制为另一种风格,应用来自**风格图像**的滤镜。
其工作原理如下:
* 我们从一个随机噪声图像开始(或者从内容图像开始,但为了便于理解,通常从随机噪声开始)。
* 我们的目标是生成一个图像,使其同时接近内容图像和风格图像。这通过两个损失函数来确定:
- **内容损失**基于CNN在某些层从当前图像和内容图像中提取的特征计算。
- **风格损失**通过一种巧妙的方法使用Gram矩阵在当前图像和风格图像之间计算更多细节请参阅[示例笔记本](StyleTransfer.ipynb))。
* 为了使图像更平滑并去除噪声,我们还引入了**变化损失**,它计算相邻像素之间的平均距离。
* 主要的优化循环通过梯度下降(或其他优化算法)调整当前图像,以最小化总损失,总损失是所有三种损失的加权和。
## ✍️ 示例:[风格迁移](StyleTransfer.ipynb)
## [课后测验](https://ff-quizzes.netlify.app/en/ai/quiz/20)
## 总结
在本课中您学习了GAN及其训练方法。您还了解了这种类型的神经网络可能面临的特殊挑战以及一些解决这些问题的策略。
## 🚀 挑战
运行[风格迁移笔记本](StyleTransfer.ipynb),使用您自己的图像进行实验。
## 复习与自学
参考以下资源了解更多关于GAN的信息
* Marco Pasini[我在训练GAN一年中学到的10个教训](https://towardsdatascience.com/10-lessons-i-learned-training-generative-adversarial-networks-gans-for-a-year-c9071159628)
* [StyleGAN](https://en.wikipedia.org/wiki/StyleGAN)一个值得关注的GAN架构
* [在Azure ML上使用GAN创建生成艺术](https://soshnikov.com/scienceart/creating-generative-art-using-gan-on-azureml/)
## 作业
重新访问本课相关的两个笔记本之一并使用您自己的图像重新训练GAN。您能创造出什么
---